媒体数据的网络流式传输的初始化集合的制作方法

文档序号:24986371发布日期:2021-05-07 23:04阅读:126来源:国知局
媒体数据的网络流式传输的初始化集合的制作方法

交叉引用

本申请要求于2019年10月2日提交的美国申请第16/591,097号和2018年10月3日提交的美国临时申请第62/740,795号的利益,其全部内容通过引用合并于此。

本公开涉及编码的媒体数据的存储和发送。



背景技术:

可以将数字视频功能集成到各种设备中,包括数字电视、数字直接广播系统、无线广播系统、个人数字助理(pda)、膝上型或台式计算机、数码相机、数字记录设备、数字媒体播放器、视频游戏设备、视频游戏机、蜂窝或卫星无线电电话、视频电话会议设备等。数字视频设备实现视频压缩技术,诸如由mpeg-2、mpeg-4、itu-th.263或itu-th.264/mpeg-4第10部分、高级视频编码(avc)、itu-th.265(也称为高效视频编码(hevc))定义的标准中描述的那些以及这种标准的扩展,以更有效地发送和接收数字视频信息。

视频压缩技术执行空间预测和/或时间预测,以减少或移除视频序列中固有的冗余。对于基于块的视频编码,可将视频帧或条带划分成宏块。每个宏块可以被进一步划分。使用关于相邻宏块的空间预测来对帧内编码的(i)帧或条带中的宏块进行编码。帧间编码的(p或b)帧或条带中的宏块可使用关于同一帧或条带中的相邻宏块的空间预测,或使用关于其它参考帧的时间预测。

在视频数据已经被编码之后,视频数据可以被封包以用于发送或存储。视频数据可以被组合成符合各种标准中的任何一种的视频文件,例如国际标准化组织(iso)基本媒体文件格式及其扩展,例如avc。



技术实现要素:

通常,本公开描述了用于信令通知媒体呈现的参数的技术。参数可以被包括在初始化集合中,该初始化集合可以识别初始化分段。初始化集合可以定义在媒体呈现的整个持续时间内不会超出的参数。以这种方式,客户端设备可以检索初始化集合的数据一次,并且使用初始化集合的数据来初始化各种过程或环境(例如解密、解码和渲染),而无需在用于媒体呈现的媒体数据的回放期间重复检索初始化集合和/或重新初始化这些过程或环境。以这种方式,这些技术可以改进媒体流式传输的领域,因为这些技术可以减少与初始化相关联的处理时间段,从而减少与呈现媒体呈现的媒体数据相关联的时延。

在一个示例中,一种检索媒体数据的方法包括:检索用于媒体呈现的清单文件,该清单文件包括用于初始化集合的数据,该初始化集合包括用于媒体呈现的整个持续时间的初始化参数;使用初始化集合初始化媒体呈现的媒体数据的回放;检索媒体呈现的媒体数据;根据初始化后的回放呈现媒体数据。

在另一示例中,一种用于检索媒体数据的设备包括:配置为存储媒体呈现的媒体数据的存储器;以及一个或多个在电路中实现的处理器并且该处理器被配置为:检索用于媒体呈现的清单文件,该清单文件包括用于初始化集合的数据,该初始化集合包括用于媒体呈现的整个持续时间的初始化参数;使用初始化集合初始化媒体呈现的媒体数据的回放;检索媒体呈现的媒体数据;并且根据初始化的回放呈现媒体数据。

在另一示例中,计算机可读存储介质在其上存储有指令,该指令在被执行时使处理器执行以下操作:检索用于媒体呈现的清单文件,该清单文件包括用于初始化集合的数据,该初始化集合包括用于媒体呈现的整个持续时间的初始化参数;使用初始化集合初始化媒体呈现的媒体数据的回放;检索媒体呈现的媒体数据;根据初始化后的回放呈现媒体数据。

在另一示例中,一种用于检索媒体数据的设备包括:用于检索用于媒体呈现的清单文件的部件,该清单文件包括用于初始化集合的数据,该初始化集合包括用于媒体呈现的整个持续时间的初始化参数;用于使用初始化集合初始化媒体呈现的媒体数据的回放的部件;用于检索媒体呈现的媒体数据的部件;用于根据初始化后的回放呈现媒体数据的部件。

在另一示例中,一种发送媒体数据的方法包括:将用于媒体呈现的清单文件发送到客户端设备,该清单文件包括用于初始化集合的数据,该初始化集合包括用于媒体呈现的整个持续时间的初始化参数;从客户端设备接收对媒体呈现的媒体数据的请求;并且将请求的媒体数据发送到客户端设备。

在另一示例中,一种用于发送媒体数据的设备包括:用于存储媒体呈现的媒体数据的存储器;以及一个或多个在电路中实现的处理器并且该处理器被配置为:将用于媒体呈现的清单文件发送到客户端设备,该清单文件包括用于初始化集合的数据,该初始化集合包括用于媒体呈现的整个持续时间的初始化参数;从客户端设备接收对媒体呈现的媒体数据的请求;并且将请求的媒体数据发送到客户端设备。

在另一示例中,计算机可读存储介质在其上存储有指令,该指令在被执行时使处理器执行以下操作:将用于媒体呈现的清单文件发送到客户端设备,该清单文件包括用于初始化集合的数据,该初始化集合包括用于媒体呈现的整个持续时间的初始化参数;从客户端设备接收对媒体呈现的媒体数据的请求;并且将请求的媒体数据发送到客户端设备。

在另一示例中,一种用于发送媒体数据的设备包括:用于将用于媒体呈现的清单文件发送到客户端设备的部件,该清单文件包括用于初始化集合的数据,该初始化集合包括用于媒体呈现的整个持续时间的初始化参数;用于从客户端设备接收对媒体呈现的媒体数据的请求的部件;并且用于将请求的媒体数据发送到客户端设备的部件。

一个或多个示例的细节在附图和以下描述中阐述。根据说明书和附图以及根据权利要求书,其它特征、目的和优点将是显而易见的。

附图说明

图1是示出了根据本公开的技术的实现了用于在网络上对媒体数据进行流式传输的技术的示例系统的框图。

图2是示出了检索单元的示例组件集合的框图。

图3是示出了示例多媒体内容的元素的概念图。

图4是示出了示例视频文件的元素的框图,其可对应于呈现的分段。

图5是示出了根据本发明的技术的示例dash(dynamicadaptivestreamingoverhttp,http上的动态自适应流式传输)客户端的概念图。

图6是示出了基于轨道缓冲器的回放的示例的概念图。

图7是示出了根据本发明的技术的用于dash多轨道媒体数据的示例内容模型的概念图。

图8是示出了根据本公开的技术的发送媒体数据的示例方法的流程图。

图9是示出了根据本公开的技术的检索媒体数据的示例方法的流程图。

具体实施方式

通常,本公开描述了用于使用例如初始化集合来发送初始化参数的技术。初始化集合可以为媒体呈现的一种或多种媒体类型指定合适的初始化。因此,媒体呈现的时间段应该包括至少一个适配集合,当使用初始化集合进行初始化时,该媒体呈现的时间段可以被播放。

本公开的技术可以应用于符合根据iso基本媒体文件格式、可缩放视频编码(svc)文件格式、高级视频编码(avc)文件格式、第三代合作伙伴计划(3gpp)文件格式和/或多视图视频编码(mvc)文件格式,或其它类似的视频文件格中的任何一个封装的视频数据的视频文件。

在http流式传输中,常用的操作包括head、get和部分get。head操作检索与给定的统一资源定位符(url)或统一资源名称(urn)相关联的文件的标头,而无需检索与url或urn相关联的有效载荷。get操作检索与给定url或urn相关联的整个文件。部分get操作接收字节范围作为输入参数,并检索文件的连续数量的字节,其中字节的数量数对应于接收到的字节范围。因此,可以针对http流式传输提供电影片段,因为部分get操作可以获取一个或多个单独的电影片段。在电影片段中,可以有几个不同轨道的轨道片段。在http流式传输中,媒体呈现可以是客户端可访问的结构化数据集合。客户端可以请求并下载媒体数据信息以向用户呈现流式传输服务。

在使用http流式传输的3gpp数据流式传输的示例中,可以存在多媒体内容的视频和/或音频数据的多个呈现。如下所述,不同的呈现可以对应于不同的编码特性(例如,视频编码标准的不同配置文件或级别)、不同的编码标准或编码标准的扩展(例如,多视图和/或可缩放扩展)或不同的比特率。可以在媒体呈现描述(mediapresentationdescription,mpd)数据结构中定义这种呈现的清单。媒体呈现可以对应于http流式传输客户端设备可访问的结构化数据集合。http流式传输客户端设备可以请求并下载媒体数据信息以向客户端设备的用户呈现流式传输服务。可以在mpd数据结构中描述媒体呈现,该媒体呈现可以包括mpd的更新。

媒体呈现可以包含一个或多个时间段的序列。每个时间段可以延长到下一个时间段的开始,或者对于最后一个时间段,直到媒体呈现的结束为止。每个时间段可以包含相同媒体内容的一个或多个呈现。呈现可以是音频、视频、定时文本或其它这种数据的许多替代编码版本之一。这些呈现可以通过编码类型(例如,针对视频数据的比特率、分辨率和/或编解码器以及针对音频数据的比特率、语言和/或编解码器)而不同。术语呈现可用于指代与多媒体内容的特定时间段相对应并以特定方式编码的编码的音频或视频数据的一部分。

可以将特定时间段的呈现分配给由mpd中的、指示呈现所属的适配集合(adaptationset)的属性所指示的组。通常认为同一适配集合中的呈现是彼此的替代,因为客户端设备可以在这些呈现之间动态且无缝地切换,例如以执行带宽自适应。例如,可以将特定时间段的视频数据的每个呈现分配给同一适配集合,从而可以选择任何呈现进行解码以呈现对应时间段的多媒体内容的媒体数据,例如视频数据或音频数据。在一些示例中,一个时间段内的媒体内容可以通过来自0组的一个呈现(如果存在)或来自每个非零组的至多一个呈现的组合来呈现。时间段的每个呈现的时序数据可以相对于时间段的开始时间表示。

一个呈现可以包括一个或多个分段。每个呈现可以包括初始化分段,或者呈现的每个分段可以是自初始化的。当存在时,初始化分段可以包含用于访问呈现的初始化信息。通常,初始化分段不包含媒体数据。分段可以由标识符唯一引用,例如统一资源定位符(url)、统一资源名称(urn)或统一资源标识符(uri)。mpd可以提供每个分段的标识符。在一些示例中,mpd还可以以范围属性的形式提供字节范围,该字节范围可以对应于url、urn或uri可访问的文件内的分段的数据。

可以选择不同的呈现以用于基本上同时检索不同类型的媒体数据。例如,客户端设备可以选择音频呈现、视频呈现和定时文本呈现,以从中检索分段。在一些示例中,客户端设备可以选择特定的适配集合以执行带宽适配。即,客户端设备可以选择包括视频呈现的适配集合、包括音频呈现的适配集合和/或包括定时文本的适配集合。可替代地,客户端设备可以选择用于某些类型的媒体(例如,视频)的适配集合,并且直接选择用于其它类型的媒体(例如,音频和/或定时文本)的呈现。

图1是示出了根据本公开的技术的实现了用于在网络上对媒体数据进行流式传输的技术的示例系统10的框图。在该示例中,系统10包括内容准备设备20,服务器设备60和客户端设备40。客户端设备40和服务器设备60通过网络74通信耦合,网络74可以包括互联网。在一些示例中,内容准备设备20和服务器设备60也可以通过网络74或另一网络耦合,或者可以直接通信耦合。在一些示例中,内容准备设备20和服务器设备60可以包括相同的设备。

在图1的示例中,内容准备设备20包括音频源22和视频源24。音频源22可以包括例如麦克风,该麦克风产生呈现将由音频编码器26进行编码的捕获的音频数据的电信号。可替代地,音频源22可以包括存储先前记录的音频数据的存储介质、诸如计算机化合成器的音频数据生成器,或任何其它音频数据源。视频源24可以包括产生要由视频编码器28编码的视频数据的摄像机、用先前记录的视频数据编码的存储介质,诸如计算机图形源的视频数据生成单元或任何其它视频数据源。在所有示例中,内容准备设备20不一定通信耦合到服务器设备60,而是可以将多媒体内容存储到由服务器设备60读取的单独介质中。

原始音频和视频数据可以包括模拟或数字数据。模拟数据可以在被音频编码器26和/或视频编码器28编码之前被数字化。音频源22可以在讲话参与者正在讲话的同时从讲话参与者获得音频数据,并且视频源24可以同时获得讲话参与者的视频数据。在其它示例中,音频源22可以包括包含存储的音频数据的计算机可读存储介质,视频源24可以包括包含存储的视频数据的计算机可读存储介质。以这种方式,本公开中描述的技术可以被应用于实时的、流式传输的、实时的音频和视频数据,或者被应用于存档的、预记录的音频和视频数据。

对应于视频帧的音频帧通常是包含由音频源22捕获(或生成)的音频数据的音频帧,同时具有由视频源24捕获(或生成)的包含在视频帧内的视频数据。例如,在讲话参与者通常通过讲话产生音频数据时,音频源22捕获音频数据,视频源24同时(即,在音频源22捕获音频数据时)捕获讲话参与者的视频数据。因此,音频帧可以在时间上对应于一个或多个特定的视频帧。因此,与视频帧相对应的音频帧通常对应于音频数据和视频数据被同时捕获的情况,并且对于该情况,音频帧和视频帧分别包括被同时捕获的音频数据和视频数据。

在一些示例中,音频编码器26可以在每个编码的音频帧中编码时间戳,该时间戳表示记录该编码的音频帧的音频数据的时间,并且类似地,视频编码器28可以在每个编码的视频帧中编码时间戳,该时间戳表示记录编码的视频帧的视频数据的时间。在这种示例中,与视频帧相对应的音频帧可以包括:包括时间戳的音频帧和包括相同时间戳的视频帧。内容准备设备20可以包括内部时钟,音频编码器26和/或视频编码器28可以从内部时钟生成时间戳,或者音频源22和视频源24可以使用内部时钟将音频和视频数据分别与时间戳相关联。

在一些示例中,音频源22可以将与记录音频数据的时间相对应的数据发送到音频编码器26,而视频源24可以将与记录视频数据的时间相对应的数据发送到视频编码器28。在一些示例中,音频编码器26可以在编码的音频数据中编码序列标识符以指示编码的音频数据的相对时间顺序,但是不必指示记录音频数据的绝对时间,并且类似地,视频编码器28也可以使用序列标识符以指示编码的视频数据的相对时间顺序。类似地,在一些示例中,序列标识符可以被映射或以其它方式与时间戳相关联。

音频编码器26通常产生编码的音频数据流,而视频编码器28产生编码的视频数据流。每个单独的数据流(无论是音频还是视频)可以称为基本流。基本流是呈现的单个的、数字编码的(可能是压缩的)分量。例如,呈现的编码视频或音频部分可以是基本流。在被封装在视频文件内之前,可以将基本流转换成封包化的基本流(packetizedelementarystream,pes)。在同一呈现内,流id可用于区分属于一个基本流的pes封包与另一个基本流的pes封包。基本流的基本数据单元是封包化的基本流(pes)封包。因此,编码的视频数据通常对应于基本视频流。类似地,音频数据对应于一个或多个相应的基本流。

许多视频编码标准(例如itu-th.264/avc和即将推出的高效视频编码(hevc)标准)针对无错误的比特流定义了语法、语义和解码过程,其中任何一个都符合特定的配置文件或级别。视频编码标准通常不指定编码器,但是编码器的任务是确保生成的比特流符合解码器的标准。在视频编码标准的上下文中,“配置文件”对应于应用于它们的算法、特征或工具和约束的子集。例如,如由h.264标准所定义,“配置文件”是由h.264标准所指定的整个比特流语法的子集。“级别”对应于解码器资源消耗的限制(例如解码器存储器和计算),这与图片的分辨率、比特率和块处理速率有关。可以用profile_idc(配置文件指示符)值来信令通知配置文件,同时可以用level_idc(级别指示符)值信令通知级别。

例如,h.264标准认识到,在由给定配置文件的语法所施加的范围内,根据比特流中的语法元素(例如解码的图片的指定尺寸)所采用的值,仍然可能要求编码器和解码器的性能进行大的变化。h.264标准进一步认识到,在许多应用中,实现能够处理特定配置文件中语法的所有假设用途的解码器既不切实际,也不经济。因此,h.264标准将“级别”定义为施加在比特流中语法元素的值上的指定约束集合。这些约束可能是对值的简单限制。可替代地,这些约束可以采取对值的算术组合的约束的形式(例如,图片宽度乘以图片高度乘以每秒解码的图片数量)。h.264标准进一步规定,各个实现可以针对每个受支持的配置文件支持不同的级别。

符合配置文件的解码器通常支持配置文件中定义的所有特征。例如,作为编码特征,h.264/avc的基线配置文件中不支持b图片编码,而h.264/avc的其它配置文件中支持b图片编码。符合某个级别的解码器应该能够对任何不需要超出该级别中定义的限制的资源的比特流进行解码。配置文件和级别的定义可能有助于解释。例如,在视频发送期间,可以针对整个发送会话协商并同意一对配置文件和级别定义。更具体地说,在h.264/avc中,级别可以定义对需要处理的宏块的数量、解码图片缓冲区(dpb)大小、编码图片缓冲区(cpb)大小、垂直运动矢量范围、每两个连续mb的运动矢量的最大数量,以及b块是否可以具有小于8x8像素的子宏块分割的限制。以这种方式,解码器可以确定解码器是否能够正确地对比特流进行解码。

在图1的示例中,内容准备设备20的封装单元30从视频编码器28接收包括编码的视频数据的基本流,并且从音频编码器26接收包括编码的音频数据的基本流。在一些示例中,视频编码器28和音频编码器26可各自包括用于从编码的数据形成pes封包的封包器。在其它示例中,视频编码器28和音频编码器26可各自与相应的用于从编码的数据形成pes封包的封包器接口。在其它示例中,封装单元30可以包括用于从编码的音频和视频数据形成pes封包的封包器。

视频编码器28可以以各种方式对多媒体内容的视频数据进行编码,以以各种比特率并且具有各种特性(例如,像素分辨率、帧速率,符合各种编码标准,符合各种配置文件和/或各种编码标准的配置文件的级别,具有一个或多个视图的呈现(例如,用于二维或三维回放)或其它此类特征)来产生多媒体内容的不同呈现。如本公开中所使用的呈现可以包括音频数据、视频数据、文本数据(例如,用于闭路字幕)或其它此类数据中的一种。呈现可以包括基本流,诸如音频基本流或视频基本流。每个pes封包可以包括识别该pes封包所属的基本流的stream_id。封装单元30负责将基本流组装成各种呈现的视频文件(例如,分段)。

封装单元30从音频编码器26和视频编码器28接收用于呈现的基本流的pes封包,并且从pes封包形成对应的网络抽象层(nal)单元。可以将编码的视频分段组织成nal单元,这些nal单元提供“网络友好”的视频呈现,用于处理诸如视频电话、存储、广播或流式传输的应用。nal单元可以分类为视频编码层(videocodinglayer,vcl)nal单元和非vclnal单元。vcl单元可以包含核心压缩引擎,并且可以包括块、宏块和/或条带级数据。其它nal单元可以是非vclnal单元。在一些示例中,通常作为主编码的图片呈现的一个时间实例中的编码的图片可以被包含在接入单元中,该接入单元可以包括一个或多个nal单元。

非vclnal单元可以包括参数集合nal单元和seinal单元等。参数集合可以包含序列级报头信息(在序列参数集合(sps)中)和不经常改变的图片级报头信息(在图片参数集合(pps)中)。使用参数集合(例如pps和sps),不需要对每个序列或图片重复不经常改变的信息。因此,可以提高编码效率。此外,参数集合的使用可以实现重要报头信息的带外发送,从而避免了对用于错误恢复的冗余发送的需要。在带外发送示例中,可以在与其它nal单元(例如seinal单元)不同的信道上发送参数集合nal单元。

补充增强信息(sei)可以包含对来自vclnal单元的编码的图片样本进行解码所不需要的、但是可以辅助与解码、显示、错误恢复和其它目的有关的过程的信息。sei消息可以包含在非vclnal单元中。sei消息是一些标准规范的规范部分,因此对于符合标准的解码器实现并不总是强制性的。sei消息可以是序列级sei消息或图片级sei消息。一些序列级信息可以包含在sei消息中,例如svc示例中的可缩放信息sei消息和mvc中的视图可缩放信息sei消息。这些示例sei消息可以传达关于例如操作点的提取和操作点的特性的信息。另外,封装单元30可以形成清单文件,例如描述呈现的特征的媒体呈现描述符(mpd)。封装单元30可以根据可扩展标记语言(xml)来格式化mpd。

封装单元30可以将用于多媒体内容的一个或多个呈现的数据以及清单文件(例如,mpd)提供给输出接口32。输出接口32可以包括网络接口或用于写入存储介质的接口,例如通用串行总线(usb)接口、cd或dvd写入器或刻录机,到磁性或闪存存储介质的接口或其它用于存储或发送媒体数据的其它接口。封装单元30可以将多媒体内容的呈现中的每一个的数据提供给输出接口32,输出接口32可以经由网络传输或存储介质将数据发送到服务器设备60。在图1的示例中,服务器设备60包括存储各种多媒体内容64的存储介质62,每个多媒体内容64包括各自的清单文件66和一个或多个呈现68a-68n(呈现68)。在一些示例中,输出接口32还可将数据直接发送到网络74。

在一些示例中,呈现68可以被分成适配集合。也就是说,呈现68的各个子集可以包括相应的共同特征集合,例如编解码器、配置文件和级别、分辨率、视图数、分段的文件格式、可以识别语言的文本类型信息或要与呈现一起显示的文本的其他特性和/或要解码和呈现的音频数据(例如,通过扬声器)、可以描述相机角度的相机角度信息或用于适配集合中的呈现的场景的真实世界相机视角、描述对于特定观众的内容适合性的评级信息等。

清单文件66可以包括指示与特定适配集合相对应的呈现68的子集以及适配集合的共同特征的数据。清单文件66还可以包括呈现用于适配集合的各个呈现的各个特征(例如比特率)的数据。以这种方式,适配集合可以提供简化的网络带宽适配。可以使用清单文件66的适配集合元素的子元素来指示适配集合中的呈现。

服务器设备60包括请求处理单元70和网络接口72。在一些示例中,服务器设备60可以包括多个网络接口。此外,服务器设备60的任何或所有特征可以在诸如路由器、网桥、代理设备、交换机或其它设备的内容传递网络的其它设备上实现。在一些示例中,内容传递网络的中间设备可以高速缓存多媒体内容64的数据,并且包括基本上与服务器设备60的那些组件一致的组件。通常,网络接口72被配置为经由网络74发送和接收数据。

请求处理单元70被配置为从诸如客户端设备40的客户端设备接收对存储介质62的数据的网络请求。例如,请求处理单元70可以实现超文本传输协议(http)版本1.1,如在以下文档中描述的:rfc2616,r.fielding等人的“超文本传输协议-http/1.1”,网络工作组,ietf,1999年6月。也就是说,请求处理单元70可以被配置为接收httpget或部分get请求,并且响应于请求而提供多媒体内容64的数据。请求可以例如使用分段的url来指定呈现68中的一个的分段。在一些示例中,请求还可以指定分段的一个或多个字节范围,从而包括部分get请求。请求处理单元70可以进一步被配置为服务httphead请求,以提供呈现68中的一个的分段的报头数据。在任何情况下,请求处理单元70可以被配置为处理请求,以将请求的数据提供给诸如客户端设备40的请求设备。

附加地或替代地,请求处理单元70可以被配置为经由诸如embms的广播或多播协议来传送媒体数据。内容准备设备20可以以与所描述的基本相同的方式来创建dash分段和/或子分段,但是服务器设备60可以使用embms或另一广播或多播网络传输协议来传送这些分段或子分段。例如,请求处理单元70可以被配置为从客户端设备40接收多播组加入请求。也就是说,服务器设备60可以向与特定媒体内容(例如,实时事件的广播)相关联的客户端设备(包括客户端设备40)通告与多播组相关联的互联网协议(ip)地址。客户端设备40又可以转而提交加入多播组的请求。该请求可以在整个网络74(例如,构成网络74的路由器)中传播,使得路由器将去往与多播组相关联的ip地址的流量定向到订阅客户端设备(例如客户端设备40)。

如图1的示例中所示,多媒体内容64包括清单文件66,清单文件66可以对应于媒体呈现描述(mpd)。清单文件66可以包含对不同替代呈现68(例如具有不同质量的视频服务)的描述,并且该描述可以包括例如呈现68的编解码器信息、配置文件值、级别值、比特率和其它描述性特征。客户端设备40可以检索媒体呈现的mpd以确定如何接入呈现68的分段。

特别地,检索单元52可以检索客户端设备40的配置数据(未示出)以确定视频解码器48的解码能力和视频输出44的渲染能力。配置数据还可包括由客户端设备40的用户选择的语言偏好、与由客户端设备40的用户设置的深度偏好相对应的一个或多个相机视角和/或由客户端设备40的用户选择的评级偏好中的任何一个或全部。检索单元52可以包括例如配置为提交httpget和部分get请求的网络浏览器或媒体客户端。检索单元52可以对应于由客户端设备40的一个或多个处理器或处理单元(未示出)执行的软件指令。在一些示例中,关于检索单元52描述的功能的全部或部分可以以硬件或硬件、软件和/或固件的组合来实现,其中可以提供必要的硬件来执行用于软件或固件的指令。

检索单元52可以将客户端设备40的解码和渲染能力与由清单文件66的信息指示的呈现68的特征进行比较。检索单元52可以最初检索清单文件66的至少一部分以确定呈现68的特征。例如,检索单元52可以请求描述一个或多个适配集合的特征的清单文件66的一部分。检索单元52可以选择呈现68的子集(例如,适配集合),该子集具有可以由客户端设备40的编码和渲染能力满足的特征。检索单元52然后可以确定适配集合中的呈现的比特率,确定网络带宽的当前可用量,并且从具有可以由网络带宽满足的比特率的呈现中的一个中检索分段。

通常,较高的比特率的呈现可以产生较高质量的视频回放,而较低的比特率的呈现可以在可用网络带宽减小时提供足够质量的视频回放。因此,当可用网络带宽相对较高时,检索单元52可以从相对较高的比特率的呈现中检索数据,而当可用网络带宽较低时,检索单元52可以从相对较低的比特率的呈现中检索数据。以这种方式,客户端设备40可以在网络74上流式传输多媒体数据,同时还适应于网络74的变化的网络带宽可用性。

附加地或替代地,检索单元52可以被配置为根据诸如embms或ip多播的广播或多播网络协议来接收数据。在这种示例中,检索单元52可以提交加入与特定媒体内容相关联的多播网络组的请求。在加入多播组之后,检索单元52可以接收多播组的数据而无需向服务器设备60或内容准备设备20发出进一步的请求。当不再需要多播组的数据时,例如停止回放或将频道改变到不同的多播组,检索单元52可以提交离开多播组的请求。

网络接口54可以接收所选呈现的分段的数据并将其提供给检索单元52,检索单元52又可以转而将该分段提供给解封装单元50。解封装单元50可以将视频文件的元素解封装成组成的pes流(constituentpesstream),对pes流进行解封包以检索编码的数据,并取决于编码的数据是音频流还是视频流的一部分(例如,如流的pes封包报头所示)将编码的数据发送到音频解码器46或视频解码器48。音频解码器46对编码的音频数据进行解码并将解码的音频数据发送到音频输出42,而视频解码器48对编码的视频数据进行解码并将解码的视频数据(可以包括流的多个视图)发送到视频输出44。

视频编码器28、视频解码器48、音频编码器26、音频解码器46、封装单元30、检索单元52和解封装单元50均可以被实现为各种合适的处理电路中的任何一种,如适用的,例如一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、离散逻辑电路、软件、硬件、固件或其任意组合。视频编码器28和视频解码器48中的每一个可以被包括在一个或多个编码器或解码器中,编码器或解码器中的任一个可以被集成为组合的编码器/解码器(codec)的一部分。同样地,音频编码器26和音频解码器46中的每一个可以被包括在一个或多个编码器或解码器中,编码器或解码器中的任一个可以被集成为组合的codec的一部分。包括视频编码器28、视频解码器48,音频编码器26、音频解码器46、封装单元30、检索单元52和/或解封装单元50的装置可以包括集成电路、微处理器和/或无线通信设备(例如蜂窝电话)。

客户端设备40、服务器设备60和/或内容准备设备20可以被配置为根据本公开的技术进行操作。出于示例的目的,本公开关于客户端设备40和服务器设备60描述了这些技术。然而,应当理解,内容准备设备20可以被配置为执行这些技术,而不是(或者除了)服务器设备60。

封装单元30可以形成nal单元,该nal单元包括标识该nal单元所属的程序的报头以及有效载荷,例如音频数据、视频数据或描述该nal单元所对应的发送或程序流的数据。例如,在h.264/avc中,nal单元包括1字节的报头和大小可变的有效载荷。在其有效载荷中包括视频数据的nal单元可以包括各种粒度级别的视频数据。例如,nal单元可以包括视频数据块、多个块、视频数据条带或视频数据的整个图片。封装单元30可以以基本流的pes封包的形式从视频编码器28接收编码的视频数据。封装单元30可以将每个基本流与对应的程序相关联。

封装单元30还可从多个nal单元组装接入单元。通常,接入单元可以包括一个或多个用于呈现视频数据的帧的nal单元,以及与该帧相对应的音频数据(当这种音频数据可用时)。接入单元通常包括用于一个输出时间实例的所有nal单元,例如,用于一个时间实例的所有音频和视频数据。例如,如果每个视图的帧速率均为每秒20帧(fps),则每个时间实例可以对应于0.05秒的时间间隔。在此时间间隔期间,可以同时渲染同一接入单元(同一时间实例)的所有视图的特定帧。在一个示例中,接入单元可以在一个时间实例中包括编码的图片,其可以被呈现为主编码图片。

因此,接入单元可以包括公共时间实例的所有音频和视频帧,例如,对应于时间x的所有视图。本公开还将特定视图的编码的图片称为“视图分量”。即,视图分量可以包括在特定时间用于特定视图的编码的图片(或帧)。因此,接入单元可以被定义为包括公共时间实例的所有视图分量。接入单元的解码顺序不必与输出或显示顺序相同。

媒体呈现可以包括媒体呈现描述(mpd),媒体呈现描述可以包含对不同替代呈现(例如,具有不同质量的视频服务)的描述,并且该描述可以包括例如编解码器信息、配置文件值和级别值。mpd是清单文件(例如清单文件66)的一个示例。客户端设备40可以检索媒体呈现的mpd,以确定如何接入各种呈现的电影片段。电影片段可以位于视频文件的电影片段盒(moofbox)中。

清单文件66(其可以包括例如mpd)可以通告呈现68的分段的可用性。即,mpd可以包括指示呈现68中的一个的第一分段变为可用的挂钟时间的信息,以及指示呈现68内的分段的持续时间的信息。以这种方式,客户端设备40的检索单元52可以基于开始时间以及特定分段之前的分段的持续时间来确定每个分段何时可用。

在封装单元30基于接收到的数据已经将nal单元和/或接入单元组装成视频文件之后,封装单元30将视频文件传递到输出接口32以进行输出。在一些示例中,封装单元30可以将视频文件本地存储或经由输出接口32将视频文件发送到远程服务器,而不是将视频文件直接发送到客户端设备40。输出接口32可以包括例如发送器、收发器、用于将数据写入计算机可读介质的设备(例如光驱、磁介质驱动器(例如软盘驱动器)、通用串行总线(usb)端口、网络接口或其它输出接口)。输出接口32将视频文件输出到计算机可读介质,例如,发送信号、磁性介质、光学介质、存储器,闪存驱动器或其它计算机可读介质。

网络接口54可以经由网络74接收nal单元或接入单元,并经由检索单元52将nal单元或接入单元提供给解封装单元50。解封装单元50可以将视频文件的元素解封装成组成的pes流,对pes流进行解封包以检索编码的数据,并取决于编码的数据是音频流还是视频流的一部分(例如,如流的pes封包报头所示)将编码的数据发送到音频解码器46或视频解码器48。音频解码器46对编码的音频数据进行解码并将解码的音频数据发送到音频输出42,而视频解码器48对编码的视频数据进行解码并将解码的视频数据(可以包括流的多个视图)发送到视频输出44。

内容准备设备20可以在媒体呈现的呈现68和/或适配集合中确定媒体呈现(例如,多媒体内容64)的各种最大或不变参数。例如,内容准备设备20可以确定跨呈现68和/或适配集合的用于媒体呈现的图片的最大宽度和最大高度。作为另一示例,内容准备设备20可以确定跨呈现68和/或适配集合的视频的最大帧速率。内容准备设备20可以构建用于每种类型的媒体数据(例如,视频、音频、定时文本等)的初始化分段,使得初始化分段的数据可以根据确定的最大值(宽度、高度、帧速率等)用于初始化媒体呈现的所有的呈现68。

以这种方式,客户端设备40可以使用初始化分段来一次初始化媒体呈现的回放,然后能够在其后从任何适配集合中执行任何呈现的媒体数据的回放,而不重新初始化。

内容准备设备20还可以在清单文件66中信令通知识别初始化分段的数据。例如,内容准备设备20可以构建清单文件66以包括信令通知各种初始化参数(例如,最大宽度、最大高度、最大帧速率等)的初始化集合以及初始化分段的统一资源定位符(url)。

因此,客户端设备40可以检索清单文件66,确定初始化分段的位置、检索初始化分段、然后初始化媒体呈现(例如,多媒体内容64)的媒体数据的回放。客户端设备40然后可以检索任何呈现68的媒体数据,并且在不重新初始化的情况下执行媒体数据的回放。例如,呈现68a可以具有具有指定的最大宽度和最大高度的图片,和/或可以具有最大帧速率。呈现68n可以具有小于指定的最大宽度和最大高度的图片,和/或可以具有小于最大帧速率的图片。客户端设备40可以检索(并且服务器设备60和/或内容准备设备20可以发送)用于第一回放时间的呈现68a的媒体数据,并且检索用于第二、不同回放时间的呈现68n的媒体数据。然而,客户端设备40可以执行两个媒体数据集合的回放(即,从呈现68a和呈现68n两者),而不执行重新初始化。

以这种方式,客户端设备40表示用于检索媒体数据的设备的示例,该设备包括:配置为存储媒体呈现的媒体数据的存储器;以及一个或多个在电路中实现的处理器并且该处理器被配置为:检索用于媒体呈现的清单文件,该清单文件包括用于初始化集合的数据,该初始化集合包括用于媒体呈现的整个持续时间的初始化参数;使用初始化集合初始化媒体呈现的媒体数据的回放;检索媒体呈现的媒体数据;并且根据初始化的回放呈现媒体数据。

同样地,内容准备设备20和服务器设备60表示用于发送媒体数据的设备的示例,该设备包括:用于存储媒体呈现的媒体数据的存储器;以及一个或多个在电路中实现的处理器并且被配置为:将用于媒体呈现的清单文件发送到客户端设备,该清单文件包括用于初始化集合的数据,该初始化集合包括用于媒体呈现的整个持续时间的初始化参数;从客户端设备接收对媒体呈现的媒体数据的请求;并且将请求的媒体数据发送到客户端设备。

图2是更详细地示出了图1的检索单元52的示例组件集合的框图。在该示例中,检索单元52包括embms中间件单元100、dash客户端110和媒体应用112。

在该示例中,embms中间件单元100还包括embms接收单元106、高速缓存104和代理服务器单元102。在该示例中,embms接收单元106被配置为例如根据以下文档描述的单向传输上的文件传递(filedeliveryoverunidirectionaltransport,flute)经由embms接收数据:t.paila等人的“flute—单向传输上的文件传递”,网络工作组,rfc6726,2012年11月,可在tools.ietf.org/html/rfc6726获得。即,embms接收单元106可以经由广播从例如服务器设备60接收文件,该服务器设备60可以充当广播/多播服务中心(bm-sc)。

当embms中间件单元100接收用于文件的数据时,embms中间件单元可以将接收到的数据存储在高速缓存104中。高速缓存104可以包括计算机可读存储介质,例如闪存、硬盘、ram或任何其它合适的存储介质。

代理服务器单元102可以充当dash客户端110的服务器。例如,代理服务器单元102可以将mpd文件或其它清单文件提供给dash客户端110。代理服务器单元102可以通告mpd文件中的分段的可用性时间,以及可以从中检索分段的超链接。这些超链接可以包括与客户端设备40相对应的本地主机地址前缀(例如,对于ipv4为127.0.0.1)。以这种方式,dash客户端110可以使用httpget或部分get请求从代理服务器单元102请求分段。例如,对于链接http://127.0.0.1/rep1/seg3中可用的分段,dash客户端110可以构造包括对http://127.0.0.1/rep1/seg3的请求的httpget请求,并将该请求提交给代理服务器单元102。代理服务器单元102可以响应于这种请求而从高速缓存104中检索所请求的数据并将该数据提供给dash客户端110。

图3是示出示例多媒体内容120的元素的概念图。多媒体内容120可以对应于多媒体内容64(图1)或存储在存储介质62中的另一多媒体内容。在图3的示例中,多媒体内容120包括媒体呈现描述(mpd)122和多个呈现124a-124n(呈现124)。呈现124a包括可选的报头数据126和分段128a-128n(分段128),而呈现124n包括可选的报头数据130和分段132a-132n(分段132)。为了方便起见,字母n用于指定呈现124中的每一个中的最后一个电影片段。在一些示例中,呈现124之间可以存在不同数量的电影片段。

mpd122可以包括与呈现124分离的数据结构。mpd122可以对应于图1的清单文件66。同样地,呈现124可以对应于图1的呈现68。通常,mpd122可以包括通常描述呈现124的特征(诸如编码和渲染特征、适配集合、mpd122所对应的配置文件、文本类型信息、相机角度信息,评级信息,特技模式信息(例如,指示包括时间子序列的呈现的信息),和/或用于检索远程时间段(例如,用于在回放期间将目标广告插入媒体内容)的信息)的数据。

报头数据126(如果存在)可以描述分段128的特性,例如,随机接入点(rap,也称为流接入点(streamaccesspoint,sap))的时间位置、分段128中的哪个包括随机接入点、到分段128内的随机接入点的字节偏移、分段128的统一资源定位符(url)或分段128的其它方面。报头数据130(如果存在)可以描述分段132的相似特征。附加地或可替代地,这种特征可以被完全包括在mpd122内。

分段128、132包括一个或多个编码的视频样本,每个样本可以包括视频数据的帧或条带。分段128的每个编码的视频样本可以具有相似的特征,例如,高度、宽度和带宽要求。尽管在图3的示例中未示出这种数据,但是可以通过mpd122的数据来描述这种特征。mpd122可以包括如3gpp规范所描述的特征,并添加本公开中所描述的任何或所有信令信息。

分段128、132中的每一个可以与唯一的统一资源定位符(url)相关联。因此,可以使用诸如dash的流式传输网络协议来独立地检索分段128、132中的每一个。以这种方式,诸如客户端设备40之类的目标设备可以使用httpget请求来检索分段128或132。在一些示例中,客户端设备40可以使用http部分get请求来检索分段128或132的特定字节范围。

根据本公开的技术,如下面更详细地讨论,mpd122可以包括初始化集合。初始化集合可以指定初始化参数,该初始化参数可用于初始化任何呈现124(即,分段128、132中的任何一个的媒体数据)的回放。例如,初始化集合可以指定呈现124(即,分段128、132)的图片的最大宽度和最大高度。作为另一示例,附加地或替代地,初始化集合可以指定呈现124的最大帧速率。因此,呈现124中的每一个可以具有等于或小于最大帧速率的帧速率。同样,呈现124中的每一个可以包括具有小于或等于最大宽度和/或最大高度的图片。

图4是示出了示例视频文件150的元素的框图,其可以对应于呈现的分段,诸如图3的分段128、132种的一个。分段128、132中的每一个可以包括基本上符合图4的示例中所示的数据的布置的数据。可以说视频文件150封装了分段。如上所述,根据iso基础媒体文件格式及其扩展的视频文件将数据存储在称为“盒(box)”的一系列对象中。在图4的示例中,视频文件150包括文件类型(filetype,ftyp)盒152、电影(movie,moov)盒154、分段索引(segmentindex,sidx)盒162、电影片段(moviefragment,moof)盒164和电影片段随机访问(moviefragmentrandomaccess,mfra)盒166。尽管图4呈现视频文件的示例,但是应当理解,根据iso基础媒体文件格式及其扩展,其他媒体文件可以包括构造类似于视频文件150的数据的其它类型的媒体数据(例如,音频数据、定时文本数据等)。

文件类型(ftyp)盒152通常描述视频文件150的文件类型。文件类型盒152可以包括识别描述视频文件150的最佳使用的规范的数据。文件类型盒152可以替代地放置在moov盒154、电影片段盒164和/或mfra盒166之前。

在一些示例中,诸如视频文件150的分段可以在ftyp盒152之前包括mpd更新盒(未示出)。mpd更新盒可以包括指示与包括视频文件150的呈现相对应的mpd将被更新的信息,以及用于更新mpd的信息。例如,mpd更新盒可以提供用于更新mpd的资源的uri或url。作为另一示例,mpd更新盒可以包括用于更新mpd的数据。在一些示例中,mpd更新盒可以紧随视频文件150的分段类型(segmenttype,styp)盒(未示出),其中,styp盒可以定义视频文件150的分段类型。

在图4的示例中,moov盒154包括电影报头(movieheader,mvhd)盒156、轨道(trak)盒158和一个或多个电影扩展(movieextend,mvex)盒160。通常,mvhd盒156可以描述视频文件150的一般特征。例如,mvhd盒156可以包括描述最初创建视频文件150的时间、最后修改视频文件150的时间、视频文件150的时间刻度、视频文件150的回放持续时间的数据,或通常描述视频文件150的其它数据。

trak盒158可以包括视频文件150的轨道数据。trak盒158可以包括描述与trak盒158相对应的轨道的特征的轨道报头(trackheader,tkhd)盒。在一些示例中,trak盒158可以包括编码的视频图片,而在其它示例中,轨道的编码的视频图片可以包括在电影片段164中,电影片段164可以由trak盒158和/或sidx盒162的数据引用。

在一些示例中,视频文件150可以包括一个以上的轨道。因此,moov盒154可以包括与视频文件150中的轨道数量相等的trak盒数量。trak盒158可以描述视频文件150的对应轨道的特征。例如,trak盒158可以描述对应轨道的时间和/或空间信息。当封装单元30(图3)在视频文件(例如视频文件150)中包括参数集合轨道时,类似于moov盒154的trak盒158的trak盒可以描述参数集合轨道的特征。封装单元30可以信令通知在描述参数集合轨道的trak盒内的参数集合轨道中的序列级sei消息的存在。

mvex盒160可以描述对应的电影片段164的特征,例如,除了moov盒154内包括的视频数据(如果有的话)之外,信令通知视频文件150包括电影片段164。在流式传输视频数据的上下文中,编码的视频图片可以被包括在电影片段164中,而不是被包括在moov盒154中。因此,所有编码的视频样本可以被包括在电影片段164中,而不是被包括在moov盒154中。

moov盒154可以包括与视频文件150中的电影片段164的数量相等的mvex盒160的数量。mvex盒160中的每一个可以描述电影片段164中的对应一个的特征。例如,每个mvex盒可以包括描述了电影片段164中的对应一个的时间持续时间的影扩展报头(movieextendsheader,mehd)盒。

如上所述,封装单元30可以将序列数据集合存储在不包括实际编码的视频数据的视频样本中。视频样本通常可以对应于接入单元,该接入单元是在特定时间实例的编码的图片的呈现。在avc的上下文中,编码的图片包括一个或多个vclnal单元,该一个或多个vclnal单元包含用于构造接入单元和其它相关联的非vclnal单元的所有像素的信息,例如sei消息。因此,封装单元30可以在电影片段164中的一个中包括序列数据集合,该序列数据集合可以包括序列级sei消息。封装单元30还可以信令通知序列数据集合和/或序列级sei消息的存在,该序列数据集合和/或序列级sei消息存在于与电影片段164中的一个相对应的mvex盒160中的一个内的电影片段164中的一个中。

sidx盒162是视频文件150的可选元素。也就是说,符合3gpp文件格式或其它此类文件格式的视频文件不一定包括sidx盒162。根据3gpp文件格式的示例,sidx盒可以用于识别分段(例如,视频文件150内包含的分段)的子分段。3gpp文件格式将子分段定义为“具有相应(多个)媒体数据盒的一个或多个连续的电影片段盒的自包含集合,并且包含由电影片段盒引用的数据的媒体数据盒必须在该电影片段盒之后并且在包含有关同一轨道的信息的下一个电影片段盒之前。”3gpp文件格式还指示sidx盒“包含对该盒所记录的(子)分段的子分段的一系列引用。引用的子分段在呈现时间上是连续的。同样,由分段索引盒引用的字节在分段内始终是连续的。引用的尺寸给出引用的材料中字节数的计数。”

sidx盒162通常提供表示视频文件150中包括的分段的一个或多个子分段的信息。例如,这种信息可以包括子分段开始和/或结束的回放时间、子分段的字节偏移、子分段是否包括(例如,从流接入点开始)流接入点(sap),sap的类型(例如,sap是否是瞬时解码器刷新(instantaneousdecoderrefresh,idr)图片、干净的随机接入(cleanrandomaccess,cra)图片、断开的链路接入(brokenlinkaccess,bla)图片等)、sap在子分段中的位置(根据回放时间和/或字节偏移)等。

电影片段164可以包括一个或多个编码的视频图片。在一些示例中,电影片段164可以包括一个或多个图片组(groupsofpicture,gop),每个图片组可以包括多个编码的视频图片,例如,帧或图片。另外,如上所述,在一些示例中,电影片段164可以包括序列数据集合。电影片段164中的每一个可以包括电影片段报头盒(mfhd(moviefragmentheader),未在图4中示出)。mfhd盒可以描述对应的电影片段的特征,例如电影片段的序列号。电影片段164可以按序列号的顺序被包含在视频文件150中。

mfra盒166可以描述视频文件150的电影片段164内的随机接入点。这可以有助于执行特技(trick)模式,例如对由视频文件150封装的分段内的特定时间位置(即,回放时间)执行搜索。在一些示例中,mfra盒166通常是可选的,并且不需要被包括在视频文件中。同样地,客户端设备(例如客户端设备40)不一定需要参考mfra盒166来正确地解码和显示视频文件150的视频数据。mfra盒166可以包括等于视频文件150的轨道数量,或者在一些示例中等于视频文件150的媒体轨道(例如,非提示轨道)的数量的轨道片段随机接入(trackfragmentrandomaccess,tfra)盒(未示出)的数量。

在一些示例中,电影片段164可以包括一个或多个流接入点(sap),例如idr图片。同样地,mfra盒166可以提供sap的视频文件150内的位置的指示。因此,视频文件150的时间子序列可以由视频文件150的sap形成。时间子序列还可以包括其它图片,例如依赖于sap的p帧和/或b帧。可以将时间子序列的帧和/或条带布置在分段内,使得可以适当地对依赖于子序列的其它帧/条带的时间子序列的帧/条带进行解码。例如,在数据的分层布置中,用于其它数据的预测的数据也可以被包括在时间子序列中。

图5是示出了根据本公开的技术的示例dash客户端200的概念图。图5的dash客户端200可以对应于或被包括在图1的检索单元52或图2的dash客户端110内。在该示例中,dash客户端200包括选择逻辑202、dash接入引擎204以及媒体引擎206a、206b。

在其他组织中,dash行业论坛(dashindustryforum,dash-if)和消费者技术协会(consumertechnologyassociation,cta)web应用视频生态系统(ctawebapplicationvideoecosystem,ctawave)已经基于图5所示的模型讨论了媒体一致性回放的主题,对于该模型,dash接入引擎204为每种媒体类型建立媒体轨道缓冲器,并且在该环境中使用分段。例如,媒体类型可以包括音频和视频数据,因此,媒体引擎206a可以处理音频数据,而媒体引擎206b可以处理视频数据。

一个重要的主题是跨节目边界回放呈现和插入广告(ad)而不中断回放体验的能力。已经观察到两个关键问题。如果可以在整个呈现(包括跨节目边界)上回放媒体,则一个问题与能力发现相对应。另一个问题对应于每种媒体类型的轨道缓冲区/媒体管道的初始化和建立,该初始化和建立可用于在整个呈现中连续回放一种类型的媒体。

dash的amd.5和tuc讨论了解决上述与能力发现有关的第一个问题的几种方法。具体地,方法包括使用早期可用时间段和/或使用结合不同特征的专用能力信令通知。

图6是示出了基于轨道缓冲器的回放的示例的概念图。

尽管遵循以上讨论的方法的解决方案可足以解决用于整个呈现的回放的能力发现方面,但仍不清楚dash客户端是否可以以足够好的方式建立媒体的回放。

通常,设备需要针对视频媒体类型建立至少一个轨道缓冲器/媒体管道,针对音频媒体类型建立另一个轨道缓冲器/媒体管道。还可能需要针对其他媒体类型(例如字幕(定时文本))建立轨道缓冲器/媒体管道。设备可以支持针对每种媒体类型建立多个源缓冲器。

建立此类源缓冲器的典型操作如下:

·识别设备支持处理特定媒体类型以及mime子参数的能力。

·如果成功,则使用相关功能适当地初始化源缓冲器

·为每个建立的源缓冲器创建适当的输出环境

o对于视频,预先确定的显示窗口,其匹配长宽比和

■默认情况下,内容的大小(高度和宽度),

■或作为全屏模式(可能使用信箱),

■或hdmi输出。

o对于音频,使用扬声器的输出配置

例如,html-5媒体元素和媒体源扩展允许使用mediasource.addsourcebuffer(类型)方法添加源缓冲器。有关详细信息,请参见:www.w3.org/tr/media-source/#dom-mediasource-addsourcebuffer。对于isobmff字节流格式的情况,通过使用mediasource.appendbuffer(is)将初始化片分段(initializationsegmen,is)附加到源缓冲器来进一步初始化源缓冲器。完成初始化是重要的,以便可以适当地完成呈现的其余部分的回放。注意,可以通过使用mediasource.appendbuffer(ch)将is附加到源缓冲器来更新/重新初始化源缓冲器。

本公开的技术可以用于解决基于针对每种媒体类型的全局主初始化分段来指定媒体管道的初始化的能力。

图7是示出了根据本发明的技术的用于dash多轨道媒体数据的示例内容模型的概念图。在该示例中,内容220包括媒体类型视频内容222、媒体类型音频内容224、媒体类型字幕内容226和媒体类型应用内容228。这些媒体类型可以被布置成各种内容类型,例如媒体类型内容主要230、媒体类型内容替代232a和媒体类型内容替代232b。主要内容和替代内容中的每一个可以包括从一个或多个对应的目标版本适配集合234a-234c(包括相应的编码的呈现(诸如呈现236a-236c))中选择的内容。

为了支持内容作者以一致的方式提供内容,图7提供了根据dash-ifiopv4.2的mpd的一个时间段中的dash内容220的概念性内容模型。在图7的模型的扩展中,对于整个mpd,可以选择初始化集合,该初始化集合在一个时间段以及跨多个时间段内提供多个适配集合(适配集合234)的超集。如果选择了此初始化集合,则能够跨时间段边界连续回放。

源设备(例如,图1的内容准备设备20和/或服务器设备60)和客户端设备(例如,图1的客户端设备40和/或图5的dash客户端200)可以被配置为使用本公开的技术以使用允许跨时间段边界连续回放的初始化集合。具体地,这些技术包括以下内容:

1.清单文件(例如mpd)级别信令,该信令可以选择适当的包括用于整个媒体呈现的初始化分段的初始化集合

2.在选择的初始化集合内提供初始化分段,该初始化分段允许针对特定媒体类型(包括编码器、解密和渲染环境)的媒体管道的初始化。

3.提供mpd信令,该信令允许识别可以基于选择的初始化集合的适配集合和呈现。

4.以向后兼容的方式提供此信令。

可以通过两种示例方式定义初始化集合:

1.作为所有参考适配集合的超集。

2.作为专注于媒体管道的纯初始化构造。

可以更新dash规范的mpd元素的语义以包括initializationset元素,如下表1所示:

表1

mpd(或其他清单文件)的初始化集合元素的语义可以定义如下(其中已识别的部分对应于dash标准的部分):

5.3.x初始化集合

5.3.x.1概述

初始化集合跨媒体呈现提供通用的媒体属性集合。如果在mpd中提供具有某些属性的初始化集合,则每个时间段中至少应有在每个时间段中具有相同的属性的一个适配集合。可以在媒体呈现开始时选择初始化集合,以便建立相关的解密、解码和渲染环境。因此,初始化集合共享适配集合的所有参数,但是仅在媒体呈现中,适配集合可能具有附加信息,例如:

-可以存在具有媒体类型音频和@codecs参数但没有@lang属性的初始化集合。然后可以存在具有相同媒体类型、相同@codecs参数的适配集合,但是适配集合中的每一个定义一种语言。这样确保音频的回放是可能的,但是可能会发生变化。

-可以存在具有媒体类型视频和@maxwidth和@maxheight参数以及@codecs参数的初始化集合。然后可以存在具有相同媒体类型,但是实际的编码器参数、宽度和高度不同,但是可以在初始化集合约束内进行解码和显示的适配集合。

如果mpd具有多个时间段,则针对每种媒体类型至少应有一个初始化集合。

5.3.x.2的表5中提供了initializationset元素内的属性和元素的语义。5.3.x.3中提供了initializationset元素的xml语法。

5.3.x.2语义

表5—适配集合元素的语义

5.3.x.3xml语法

可以将以下属性添加到mpd的适配集合元素:

通过提供初始化集合,dash客户端可以选择与包括dash客户端的设备的能力匹配的初始化,还可以通过使用提供的初始化分段进行初始化来确保连续回放。本公开的技术还可以解决关于早期可用时间段的讨论,并提供新的能力机制,因为相关信息是预先提供的。

图8是示出了根据本公开的技术的发送媒体数据的示例方法的流程图。出于示例的目的,关于图1的内容准备设备20来解释图8的方法。然而,应当理解,诸如图1的服务器设备60的其它设备可以被配置为单独地或与其它设备结合地执行该方法或类似方法。

最初,内容准备设备20确定用于诸如多媒体内容64的媒体呈现的初始化参数(300)。初始化参数可以用于初始化任何适配集合和/或媒体呈现的呈现的媒体数据。例如,初始化参数可以指定对于媒体呈现的图片的最大宽度和最大高度和/或最大帧速率。初始化参数还可以为媒体呈现的图片指定图片长宽比。

内容准备设备20然后可以构建用于媒体呈现的初始化分段(302)。内容准备设备20可以为诸如音频、视频、定时文本(隐藏字幕)等的各种类型的媒体构建初始化分段。内容准备设备20可以根据上面确定的初始化参数来构建初始化分段。

内容准备设备20可以进一步构建包括一个或多个初始化集合的清单文件(诸如dashmpd)(304)。每个初始化集合可以符合以上表1和表5的初始化集合。如上所述,每个初始化集合可以包括指定最大图片宽度的@maxwidth元素、指定最大图片高度的@maxheight元素和指定最大帧速率的@maxframerate元素。内容准备设备20可以进一步在初始化集合(例如,在各自的@initialization元素中)中指定初始化分段的url。内容准备设备20可以为每个适配集合构建一个初始化集合,从而为每个媒体类型(例如,音频、视频、定时文本等)构建一个或多个初始化集合。初始化集合可以包括@contenttype元素,该元素指定初始化集合的媒体类型(例如,音频、视频、定时文本等),如表5所示。

内容准备设备20然后可以将初始化集合发送到客户端设备(306)。具体地,内容准备设备20可以将清单文件发送到客户端设备,该清单文件包括初始化集合。如图1所示,内容准备设备20可以将清单文件发送到服务器设备60,服务器设备60可以响应于来自客户端设备40的对特定媒体呈现的清单文件的请求而将清单文件发送到客户端设备40。

内容准备设备20还可以从客户端设备接收对媒体数据的请求(308)。可替代地,服务器设备60可以接收请求。响应于该请求,内容准备设备20(或服务器设备60)可以将所请求的媒体数据发送到客户端设备(310)。在一些示例中,客户端设备(例如,客户端设备40)可以针对相同类型的媒体内容从各种呈现中请求媒体数据。然而,客户端设备40可以仅请求针对该类型的媒体内容的初始化分段一次,因为初始化分段可以用于初始化该类型的媒体呈现的所有媒体内容的回放。以这种方式,本公开的技术可以用于减少由内容准备设备20和/或服务器设备60发送到客户端设备40的初始化分段的数量。以这种方式,这些设备可以避免处理对初始化分段的请求,并且还减少了在接收对初始化分段的请求并将初始化片段发送到客户端设备40时所利用的网络带宽。

以这种方式,图8的方法表示发送媒体数据的方法的示例,该方法包括:将用于媒体呈现的清单文件发送到客户端设备,该清单文件包括用于初始化集合的数据,该初始化集合包括用于媒体呈现的整个持续时间的初始化参数;从客户端设备接收对媒体呈现的媒体数据的请求;并且将请求的媒体数据发送到客户端设备。

图9是示出了根据本公开的技术的检索媒体数据的示例方法的流程图。为了示例和说明的目的,关于图1的客户端设备40来说明图9的方法。但是,其它设备可以被配置为执行此方法或类似方法。例如,图5的dash客户端200可以被配置为执行该方法。

最初,客户端设备40可以检索包括一个或多个初始化集合的清单文件(330)。清单文件的初始化集合可以指定初始化参数,例如,图片的最大宽度和最大高度、图片的图片长宽比、最大帧速率等。初始化集合还可以指示对应的初始化分段的url。因此,客户端设备40可以针对初始化集合中的每一个(并且同样地针对每种类型的媒体内容,例如,音频、视频、定时文本等)检索初始化分段(332)。

客户端设备40然后可以使用初始化集合和初始化分段来初始化媒体数据的回放(334)。这种初始化可以用于解密、解码和/或渲染。例如,客户端设备40可以根据最大高度、最大宽度和最大帧速率来初始化视频解码器和渲染器。这种初始化可以包括例如在存储器(例如,高速缓存104)的缓冲器中分配缓冲器空间,用于存储所检索到的媒体数据和/或用于存储中间媒体数据(例如部分或完全解码的媒体数据)。

客户端设备40然后可以例如通过发布针对媒体数据的httpget或部分get请求来请求媒体数据(336)。客户端设备40然后可以接收媒体数据(338)并且回放媒体数据(340)。在一些示例中,客户端设备40可以检索具有最大指定参数的媒体数据,例如,最大高度、最大宽度、最大帧速率等。在一些示例中,客户端设备40可以检索具有小于最大指定参数的媒体数据。客户端设备40可以检索用于第一回放时间的具有最大指定参数的媒体数据,并且检索用于第二、不同回放时间的具有小于最大指定参数的媒体数据。然而,客户端设备40不需要重新初始化具有小于最大指定参数的媒体数据的回放,因为原始初始化可以用于回放媒体呈现的任何媒体数据的回放,因为初始化参数指定了最大的参数或不变的参数。

以这种方式,图9的方法表示检索媒体数据的方法的示例,该方法包括:检索用于媒体呈现的清单文件,该清单文件包括用于初始化集合的数据,该初始化集合包括用于媒体呈现的整个持续时间的初始化参数;使用初始化集合初始化媒体呈现的媒体数据的回放;检索媒体呈现的媒体数据;根据初始化后的回放呈现媒体数据。

在一个或多个示例中,可以以硬件、软件、固件或其任何组合来实现所描述的功能。如果以软件实现,则功能可以作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质传输,并由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,其对应于诸如数据存储介质的有形介质,或者通信介质,包括例如根据通信协议来促进将计算机程序从一个地方转移到另一地方的任何介质。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质,或者(2)诸如信号或载波的通信介质。数据存储介质可以是可以由一台或多台计算机或一个或多个处理器访问以检索指令、代码和/或数据结构以实现本公开中描述的技术的任何可用介质。计算机程序产品可以包括计算机可读介质。

作为示例而非限制,这种计算机可读存储介质可以包括ram、rom、eeprom、cd-rom或其他光盘存储、磁盘存储或其他磁性存储设备、闪存或可用于以指令或数据结构形式存储所需程序代码且可由计算机访问的任何其他介质。而且,任何连接都适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(dsl)或无线技术(例如红外,无线电和微波)从网站,服务器或其他远程源发送指令,则介质的定义包括同轴电缆、光纤电缆、双绞线、dsl或无线技术(例如红外,无线电和微波)。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他瞬时介质,而是针对非瞬时的有形存储介质。本文使用的磁盘和光盘包括压缩光盘(cd)、激光光盘、光学光盘、字多功能光盘(dvd)、软盘和蓝光光盘,其中磁盘通常以磁性方式复制数据,而光盘则通过激光光学方式复制数据。上述的组合也应包括在计算机可读介质的范围内。

指令可以由一个或多个处理器执行,例如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)或其他等效的集成或离散逻辑电路。因此,如本文所使用的,术语“处理器”可以指任何前述结构或适合于实现本文描述的技术的任何其他结构。另外,在一些方面,本文描述的功能可以在被配置用于编码和解码的专用硬件和/或软件模块内提供,或结合在组合的编解码器中。同样,该技术可以在一个或多个电路或逻辑元件中完全实现。

本公开的技术可以在包括无线手持机、集成电路(ic)或一组ic(例如,芯片组)的多种设备或装置中实现。在本公开中描述各种组件、模块或单元以强调被配置为执行所公开技术的设备的功能方面,但不一定需要由不同硬件单元来实现。相反,如上所述,各种单元可以组合在编解码器硬件单元中,或者由互操作硬件单元的集合来提供,该硬件单元包括与合适的软件和/或固件结合的如上所述的一个或多个处理器。

已经描述了各种示例。这些和其他示例在所附权利要求的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1