用于下载和串流的内容存储和传输的系统和方法转让专利

申请号 : CN201480002633.4

文献号 : CN104798357B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王新刘永亮

申请人 : 华为技术有限公司

摘要 :

一种由第一用户端设备实现的方法,该方法包括:从流媒体服务器接收媒体内容的媒体表示描述文件(MPD);从一个或多个流媒体服务器接收所述媒体内容的多个片段;将所述MPD和至少一部分所述接收到的片段封装,使得第二用户端设备可以通过所述已封装MPD访问所述已封装片段。

权利要求 :

1.一种由第一用户端设备实现的方法,其特征在于,该方法包括:

从流服务器接收媒体内容的媒体表示描述文件MPD;

从一个或多个流服务器接收所述媒体内容的多个片段;

将所述MPD和至少一部分所述接收到的片段封装,以使第二用户端设备可以通过所述已封装MPD访问所述已封装片段;

所述接收到的MPD和所述至少一部分所述接收到的片段封装为一个文件,其中,所述第二用户端设备可以通过所述已封装MPD的对应的元素访问已封装片段。

2.根据权利要求1所述的方法,其特征在于,还包括:

从所述第二用户端设备接收对媒体内容的请求;

向所述第二用户端设备发送响应所述请求的一个或多个所述已封装片段,其中所述第一用户端设备通过网络连接与所述第二用户端设备耦合。

3.根据权利要求2所述的方法,其特征在于,所述请求是下载请求,所述方法还包括:将所述已封装MPD和所述已封装片段一起作为单个文件发送给所述第二用户端设备。

4.根据权利要求2所述的方法,其特征在于,所述请求是串流请求,所述方法还包括:将所述已封装MPD和所述已封装片段作为单独的且相关联的文件发送给所述第二用户端设备。

5.根据权利要求1所述的方法,其特征在于,还包括:

使用所述接收到的片段第一次播放所述媒体内容;

使用至少一些所述已封装片段重新播放所述媒体内容。

6.根据权利要求5所述的方法,其特征在于,还包括:

在重新播放期间,监测所述第一用户端设备和所述一个或多个流媒体服务器之间的网络状况;

确定所述网络状况允许所述第一用户设备串流与所述已封装片段拥有相同时间线的但质量高于所述已封装片段的片段;

从所述一个或多个流媒体服务器上获得用于所述重新播放的所述较高质量的片段。

7.根据权利要求5所述的方法,其特征在于,还包括:

在重新播放期间,监测所述第一用户端设备和所述一个或多个流媒体服务器之间的网络状况;

确定所述网络状况不允许所述第一用户端设备从所述一个或多个流媒体服务器上串流与所述已封装片段拥有相同时间线但质量高于所述至少一些所述已封装片段的片段;其中在重新播放期间根据所述确定所述网络状况不允许所述第一用户端设备串流所述至少一些所述已封装片段,使用所述至少一些所述已封装片段。

8.根据权利要求1所述的方法,其特征在于,所述文件是以可扩展标记语言(XML)编写的MPD文件,其中所述MPD文件包括作为片段数据SegmentData元素的所述已封装片段,所述“SegmentData”元素存储在所述MPD文件的对应的表述元素中。

9.根据权利要求1所述的方法,其特征在于,所述接收到的片段封装在所述文件的开头或结尾的资源元素中,所述MPD包括参考所述资源元素中的对应的已封装片段的片段数据元素。

10.根据权利要求1所述的方法,其特征在于,所述文件是包括资源元素的MPD文件,所述资源元素包括所述已封装片段以及链接到所述MPD文件的对应的表述元素的表述标识。

11.根据权利要求1所述的方法,其特征在于,所述文件是包括资源元素的MPD文件,所述资源元素包括所述已封装片段以及对应的本地统一资源标识符URI,其中所述本地URI将所述已封装片段链接到所述MPD文件的对应的片段元素。

12.根据权利要求1所述的方法,其特征在于,所述文件是包括资源元素的MPD文件,所述资源元素包括所述已封装片段,所述已封装片段使用Link特征和XPointer特征中的至少一个链接到所述MPD文件的对应的片段元素。

13.根据权利要求1所述的方法,其特征在于,所述文件是包括资源元素的MPD文件,所述资源元素包括所述已封装片段,其中,所述已封装片段使用包含在每一个对应的片段元素中的路径链接到所述MPD文件的对应的片段元素。

14.根据权利要求1所述的方法,其特征在于,所述文件是包括所述接收到的MPD和更新的MPD的MPD扩展,所述更新的MPD包括所述已封装片段。

15.根据权利要求1所述的方法,其特征在于,所述文件是多用途网络邮件扩展(MIME)超文本标记语言(HTML)MHTML文件,所述已封装MPD通过MHTML文件中的统一资源标识符(URIs)与所述已封装片段相关联。

16.根据权利要求1所述的方法,其特征在于,所述文件包括文件头,所述文件头位于所述已封装MPD和所述已封装片段之前,所述文件头规定了所述文件包含所述已封装MPD和所述已封装片段。

17.一种装置,其特征在于,包括:

接收器,用于接收描述媒体内容的媒体表示描述文件MPD和所述媒体内容的多个片段,其中,所述MPD是从流媒体服务器上接收的,所述多个片段是从一个或多个媒体服务器上接收的;

处理器,与所述接收器耦合,用于使用所述接收到的片段播放所述媒体内容;

存储器,与所述处理器耦合,用于存储所述MPD和至少一部分所述接收到的片段,其中,所述存储的片段中的每一个片段可以通过所述存储的MPD取得;其中所述处理器还用于使用至少一些所述存储的片段重新播放所述媒体内容;

将所述MPD和所述至少一部分所述接收到的片段存储为单个文件,所述取得的片段通过下载传输到所述媒体流客户端。

18.根据权利要求17所述的装置,其特征在于,所述多个片段是在播放所述媒体片段的第一流会话期间通过串流接收的,所述存储的片段是所述处理器在重新播放所述媒体内容的第二流会话期间取得的。

19.根据权利要求17所述的装置,其特征在于,所述接收器还用于从媒体流客户端接收对媒体内容的请求,所述处理器还用于根据所述请求取得所述存储的片段中的至少一个片段,所述装置还包括发送器,与所述处理器耦合,用于将取得的片段传输给所述媒体流客户端。

20.根据权利要求19所述的装置,将所述MPD和所述至少一部分所述接收到的片段存储为单独的且相关联的可扩展标记语言(XML)文件,所述取得的片段串流到所述媒体流客户端。

21.一种由第二用户端设备实现的用于获得包括多个片段的媒体内容的方法,其特征在于,该方法包括:从作为源设备的第一用户端设备获得所述片段的第一部分,其中,所述片段的第一部分是通过存储在所述第一用户端设备上的媒体表示描述文件MPD获得的;

所述片段的第一部分是从所述源设备上获得的,其作为同样包含所述MPD的已封装文件的一部分,所述方法还包括:确定所述已封装文件不包含所述片段的第二部分,所述片段的第二部分是从流媒体服务器上通过所述媒体内容的所述MPD的另一种版本获得的;

使用所述片段的第一部分和所述片段的第二部分播放所述媒体内容。

说明书 :

用于下载和串流的内容存储和传输的系统和方法

背景技术

[0001] 媒体内容提供者或分发者可以将媒体内容下发到电视、笔记本电脑以及手机等各种用户端设备。媒体内容提供者可以支持多个媒体编码器和/或解码器(编解码器)、多个媒体播放器、多个视频帧率、多个空间分辨率、多个比特率、多个视频格式或者其组合。可以将媒体内容的源表述或初始表述转换为其他各种表述以适用于不同的用户设备。
[0002] 媒体内容可包括媒体表示描述文件(MPD)和多个片段。所述MPD可以为描述所述媒体内容比如其各种表述、统一资源定位符(URL)以及其他特征等的可扩展标记语言(XML)文件。例如,媒体内容可包括数个媒体分量(例如,音频、视频和文本),其中的每一个媒体分量可以具有MPD规定的不同特征,每一个媒体分量包括多个包含有实际媒体内容各部分的片段,该多个片段可以集中存储在单个文件中,或者分别存储在多个文件中。每一个片段可包含该媒体内容的预定义的字节大小(例如,1000字节)或该媒体内容的播放时间间隔(例如,2或5秒)。
[0003] 媒体内容可根据应用划分成各种层次,例如,媒体内容可包括多个区段,其中区段是相对长于片段的时间间隔。例如,可以将一个电视节目划分为被若干个2分钟长广告区段分隔开的若干个5分钟长的节目区段,进一步地,区段可包括一个或多个适配集(AS)。一个适配集可提供一个或多个媒体分量以及其各种已编码的表述,例如,一个适配集可包含媒体内容的视频分量的不同比特率,而另一个适配集可包含同一媒体内容的音频分量的不同比特率。一个表述可以为媒体分量的一种已编码的形式,其在比特率、分辨率、信道数量、其它特征或者其的组合上不同于其它表述。每一个表述包括多个片段,该多个片段是具有时域序列的媒体内容数据块。另外,有时为了能够在多个部分进行片段下载,可以使用多个子片段,每一个子片段具有具体的时长和/或字节大小。本领域技术人员将会理解该各种层次可以用来下发媒体内容。
[0004] 在自适应流媒体中,当媒体内容下发到客户端或者用户设备时,用户设备可以根据各种因素,如网络状况、设备能力、用户选择等动态选择合适的片段。自适应流媒体可包括各种已实现的或者正在开发的技术或标准,例如,超文本传输协议(HTTP)动态自适应流媒体(DASH)、HTTP实况流媒体(HLS)或者互联网信息服务(IIS)平滑流媒体。例如,用户设备可尽可能选择高质量(例如,高分辨率或高比特率)的能够及时下载播放而不会在播放过程中造成暂停或重新缓冲的事件的片段,因此,用户设备可以无缝地使其媒体内容播放适应不断变化的网络状况。
[0005] 另一种内容下发方式涉及下载,可用于部分满足用户的个体化需求。DASH可使用户拥有更好的体验,例如,当网络连接较快的时候,该用户的设备可以取得高质量的媒体内容;当网络连接变差时,可以切换到低质量的媒体内容继续播放内容。在现有方案中,在由用户端设备取得并解码媒体内容的片段后,该媒体内容的片段会被丢弃。相应地,该片段可能后续不会使用,例如,如果用户端设备决定重新播放媒体内容,可能需要从头开始串流,浪费网络资源。

发明内容

[0006] 在一实施例中,本发明包括一种由第一用户端设备实现的方法,该方法包括:从流媒体服务器接收媒体内容的媒体表示描述文件(MPD);从一个或多个流媒体服务器接收所述媒体内容的多个片段;将所述MPD和至少一部分所述接收到的片段封装,使得第二用户端设备可以通过所述已封装MPD访问所述已封装片段。
[0007] 在另一个实施例中,本发明包括一种装置,包括:接收器,用于接收描述媒体内容的MPD和所述媒体内容的多个片段;处理器,与所述接收器耦合,用于使用所述接收到的片段播放所述媒体内容;存储器,与所述处理器耦合,用于存储所述MPD和至少一部分所述接收到的片段,其中,可以通过所述存储的MPD取得所述存储的片段中的每一个片段,所述处理器还用于使用至少一些所述存储的片段重新播放所述媒体内容。
[0008] 在又一个实施例中,本发明包括一种由第二用户端设备实现的用于获得包含多个片段的媒体内容的方法,该方法包括:从作为源设备的第一用户端设备获得所述片段的第一部分;从流媒体服务器获得所述片段的第二部分;使用所述片段的第一部分和所述片段的第二部分播放所述媒体内容。
[0009] 通过以下结合附图和权利要求的详细描述,这些以及其他特征将会被清楚的理解。

附图说明

[0010] 为了更完整地理解本发明,现参考以下简单描述,并结合附图和详细的说明,其中,相同图例编号代表相同部分。
[0011] 图1为内容下发系统的实施例的示意图;
[0012] 图2为用户端设备的实施例的示意图;
[0013] 图3示出了MPD文件直接包含片段数据的示例性实施方式;
[0014] 图4示出了MPD和片段数据属于同一个文件的另一种示例性实施方式;
[0015] 图5示出了将资源元素添加到MPD中作为所述MPD的子元素的又一种示例性实施方式;
[0016] 图6示出了将本地统一资源标识符(URI)元素添加到每一个片段元素的又一种示例性实施方式;
[0017] 图7示出了将存储的片段数据通过XML特征链接到对应的片段元素的又一种示例性实施方式;
[0018] 图8示出了将存储的片段数据通过完整路径链接到对应的片段元素的又一种示例性实施方式;
[0019] 图9示出了生成MPD扩展的又一种示例性实施方式;
[0020] 图10A和图10B示出了将MPD和片段数据封装成文件的相互独立的部分的又一种示例性实施方式;
[0021] 图11示出了将MPD和片段数据封装到文件的又一种示例性实施方式;
[0022] 图12为文件处理方法的实施例的流程图;
[0023] 图13A和图13B示出了将MPD和片段数据封装成两个单独文件的又一种示例性实施方式;
[0024] 图14为另一种处理媒体内容方法的实施例的流程图;
[0025] 图15为又一种获得和播放媒体内容的方法的实施例的流程图;
[0026] 图16为网络设备的实施例的示意图。

具体实施方式

[0027] 首先应理解,尽管下文提供一项或多项实施例的说明性实施方案,但所公开的系统和/或方法可使用任何数目的技术来实施,无论该技术是当前已知还是现有的。本发明决不应限于下文所说明的说明性实施方案、附图和技术,包括本文所说明并描述的示例性设计和实施方案,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。
[0028] 根据本发明介绍的实施例,一旦从内容提供者或者服务器上获得媒体片段,用户端设备能够进一步利用所述媒体片段。这些片段还可进一步用于在所述用户端设备上重新播放的媒体内容,或用于供所述用户端设备与第二用户端设备共享,或者既可以用于重新播放也可以用于共享。具体地,可以封装或存储所述用户端设备第一次接收到的MPD和片段,使得第二用户端设备可以通过所述已封装MPD访问已封装片段。所述MPD和所述片段可以存储为单个文件或者单独的相关联的文件,单个文件存储可采用各种形式(例如,MPD直接包含片段或者将片段链接到所述MPD的元素),并且允许所述第二设备无需通过远程内容提供者就可下载所述文件;多文件存储可以允许所述第二用户端设备从源设备上串流所述媒体内容中的至少一部分。
[0029] 图1是内容下发系统100的实施例的示意图,该内容下发系统100可包括一个或多个媒体流服务器和流客户端。例如,图1示出了流媒体服务器110、流媒体服务器120、流媒体服务器130、源设备140、宿设备150,其中的每一个都与其它设备相互连接。所述源设备140和所述宿设备150都可以是从所述服务器110至130中的一个或多个中获得(通过下载或串流)媒体内容的流客户端,其中媒体内容可以为例如音频、视频、文本或其组合中的任何可实施的形式的媒体内容。所述媒体内容可包含任何适用的信息类型,例如,电影、音乐和/或电子出版物等。另外,在从所述服务器110至130中获得媒体内容后,所述源设备140可进一步与所述宿设备150共享所述获得的媒体内容。在这个意义上,所述源设备140作为所述宿设备150的流媒体服务器,所述宿设备150可以从所述源设备140上获得所述媒体内容中的至少一部分。
[0030] 所述内容下发系统100可以实现任何合适的内容下发方案或方法,例如,DASH方案。所述流客户端可以为在用户设备如所述源设备140或所述宿设备150的操作系统中实现的程序或应用,或者可以为在网(web)平台接入的web客户端。
[0031] 所述流媒体服务器110(同样适用于其它流媒体服务器)可以作为任何合适类型的服务器,例如,HTTP服务器实施,其中,媒体内容可由流媒体准备单元生成或准备,其中所述流媒体准备单元可以位于HTTP服务器或者其他地方(例如,位于内容提供者)。所述流媒体服务器110可以为内容提供者的一部分,或者可以为内容分发网络(CDN)中的节点,其中,媒体内容可由内容提供者生成然后传输到CDN节点。所述流媒体服务器110中的媒体内容可包括MPD和多个片段。应注意的是,如果需要,所述MPD和所述片段可以存储在不同的服务器上,并从不同的服务器发送到流客户端。例如,MPD可以从流媒体服务器110发送到源设备140,对应的片段可以从流媒体服务器120和/或流媒体服务器130发送到源设备140。
[0032] 所述流媒体服务器110至130,所述源设备140,所述宿设备150之间的网络连接可以为任何合适类型的网络连接,例如,所述源设备140和所述宿设备150可属于相同的归属网络且连接至相同的无线保真(WiFi)路由器。由于WiFi连接可快于远距离的互联网连接(例如,所述流媒体服务器120和所述宿设备150之间的网络连接),所述宿设备150可选择从所述源设备140(其片段早已可用)而不是流媒体服务器120串流一些片段数据。
[0033] 所述内容下发系统100存在各种可能的用例,在此公开的实施例可适用于任何一种可能的用例。本发明描述了一些示例性的用例(用例1至4和表1至35),但应该理解的是,并不限定于这些例子。
[0034] 在用例1中,源设备140可先从流媒体服务器120获得MPD;所述源设备140可读取所述MPD,并根据所述MPD从流媒体服务器110和流媒体服务器130中获得对应的媒体片段;然后,所述源设备140可更新所述MPD,例如,将所述MPD和获得的片段存储或保存为单个文件。如何将MPD和片段保存为单个文件或相关联的文件的细节,将在下文中进行进一步描述。相应地,宿设备150可通过下载包含MPD和片段的单个文件从所述源设备140上下载媒体内容。
[0035] 用例2与用例1类似,因此,为了简明起见,侧重于不同的方面进行了进一步的描述(该原则也适用于其它用例)。由于源设备可能在一些表述中只保存了一部分片段,一些片段(例如,属于其它自适应集AdaptationSet或表述)可能在源设备140中不可用,在这种情况下,宿设备150可从源设备140下载一些需要的片段,并从流媒体服务器110和流媒体服务器130串流其它片段,而不是从本地源设备140下载整个媒体内容。
[0036] 在用例3中,宿设备150可以从源设备140串流(而不是如用例2中下载)一些片段,并从流媒体服务器110和流媒体服务器130串流其它片段。例如,当从源设备140串流片段(不具有最高质量)时,所述宿设备150可监测所述宿设备150和所述拥有高质量片段的流媒体服务器110之间的网络状况(例如,带宽),因此,所述宿设备150可确定网络状况允许所述宿设备150串流与所述源设备140中的已封装片段拥有相同时间线但质量高于所述已封装片段的片段。在这种情况下,所述宿设备150可从流媒体服务器110中获得所述较高质量的片段。否则,如果网络状况较差,所述宿设备150可继续从所述源设备140串流片段。
[0037] 在用例4中,在第一次从流媒体服务器110和流媒体服务器130获得片段之后,源设备140可保存该片段以备以后进行重新播放或回放。假如,第一次获得的一些片段属于高质量的表述,且所述源设备140和所述流媒体服务器110以及流媒体服务器130之间的网络状况变差,所述源设备140可通过之前获得的高质量的片段重新播放媒体内容,从而提高了用户体验,且仍然可以从流媒体服务器110和流媒体服务器130上获得在所述源设备140上不可用的片段(例如,之前未保存的高质量片段)。又例如,当所述源设备140在播放媒体内容的第一流会话期间从流媒体服务器110串流媒体内容时,可以从所述服务器110通过串流接收多个片段。所述源设备140可以存储所述片段(例如通过封装PMD和片段得到),之后,如果所述源设备140想要再次串流相同的媒体内容,所述源设备140可在重新播放所述媒体内容的第二次流会话期间取得所述存储的片段。
[0038] 在一实施例中,所述宿设备150可位于存储有片段的所述源设备140附近,所述宿设备150能够从所述源设备140访问并取得媒体片段。例如,使用源设备140的用户通过宿设备150(例如,台式电脑)取得电影(例如,《碟中谍》)的副本,随后,使用宿设备150(例如,平板电脑)的家庭成员可以从所述台式电脑取得所述内容的部分或全部。有时,一些片段的分辨率不是最佳的,因此,宿设备150可以从所述台式电脑取得一些片段,而从远程内容服务器,例如,媒体服务器110取得其他分辨率最佳的片段。
[0039] 图2为用户端设备200的实施例的示意图。所述用户端设备200可以在系统100中实现,正如在所述源设备140和所述宿设备150中一样。所述用户端设备200可以向流媒体服务器发送对媒体内容的请求,作为响应,所述流媒体服务器可下发MPD到所述用户端设备200,其中,可以通过HTTP、邮件、拇指驱动器、广播或其它任何传输方式下发所述MPD。>通过利用DASH获取引擎210解析所述MPD,所述用户端设备200可以获知关于所述媒体内容的信息,例如,节目的排期、媒体内容的可用性、媒体类型、分辨率、最大和最小带宽、多媒体分量的各种编码后的可替代分量的存在性、可访问性特征、所需的数字版权管理(DRM)、网络中的每一个媒体分量的位置以及所述媒体内容的其它特征。
[0040] 所述用户端设备200可选择合适的表述,并通过利用HTTP GET请求来获取片段以开始所述媒体内容的串流。应注意的是,所述用户端设备200可从多个流媒体服务器下载片段或片段数据以达到,例如,最大化使用网络带宽的目的。所述用户端设备200可以适当地渲染下载的媒体内容,以向所述用户端设备200的用户提供串流业务。有时,所述片段可存储在本地或者附近的缓存中(例如,当客户端是宿设备150时,存储在源设备140中),使得串流更高效。片段可以由媒体引擎220解码并在所述用户端设备200上播放。根据网络状况监控,流客户端可通过下载不同表述的片段(例如,拥有更低或更高比特率)来适应性地将串流调整到可用的带宽以维持足够的缓存。
[0041] 图3示出了以XML编码编写的示例性实施方式300。本领域普通技术人员将会理解XML编码,因此,以下描述将侧重于与所公开的实施例相关的方面。在实施方式300中,MPD文件直接包含片段数据。具体地,将“片段数据(SegmentData)”元素添加到表示(Representation)的每一个元素“片段(Segment)URL”中,例如,对于音频,将“SegmentData”元素310添加到表述id=1中;对于视频,将“SegmentData”元素320添加到表述id=4中。“SegmentData”元素310和“SegmentData”元素320可直接包含对应片段的数据,因此,通过所述MPD文件来分发片段,即,通过在对应的表述元素中的存储。
[0042] 由于表述id=2和表述id=3中的片段可能在客户端不可用,所以,可以远程地从流媒体服务器获得表述id=2和表述id=3,例如,分别通过“基础(Base)URL”元素330和“BaseURL”元素340获得。应注意的是,即使“SegmentData”元素310和“SegmentData”元素320在客户端可用,所述客户端仍然可选择从流媒体服务器获得“SegmentData”元素310和“SegmentData”元素320,例如,分别通过“BaseURL”元素312和“BaseURL”元素322获得。
[0043] 在可选的实施例中,片段数据可以通过链接或引用与MPD关联,而不是直接包含在表述里。图4示出了以XML编码编写的示例性实施方式400。本领域普通技术人员将会理解实施方式300与实施方式400之间的相似之处(此原则适用于其它实施方式),所以,为了简明起见,侧重于它们的不同之处进行了进一步的描述。在实施方式400中,MPD和片段数据属于同一个文件,但是,不同于实施方式300中,将片段数据直接存储在片段数据的表述元素中,在实施方式400中,将片段数据存储或封装在表示为“资源(Resources)”的资源元素402中,“Resources”位于在所述文件的开头或结尾。如图4所示,片段数据410(表示为SegmentData1)以及片段数据420(表示为SegmentData4)存储在文件开头的“Resources”元素中。
[0044] 进一步地,将“SegmentData”元素添加到MPD中的每一个对应的表述中,例如,对于音频,将“SegmentData”元素430添加到表述id=1中;对于视频,将“SegmentData”元素440添加到表述id=4中。元素430和元素440不直接包含片段,而是参考包含在所述“Resources”元素402中的片段数据。例如,元素430通过引述“SegmentData1”来参考片段数据410;元素440通过引述“SegmentData4”来参考片段数据420。
[0045] 图5示出了以XML编码编写的示例性实施方式500,其中,将资源元素502“Resources”添加到MPD中作为所述MPD的子元素(例如,位于所述MPD结尾)。在实施方式500中,可通过如ID和IDREF等功能建立起链接或参考,这些功能普遍使用于XML。“Resources”的“SegmentData”元素中的属性可以参考“Representation”元素中的属性“id”,所述表述元素中的属性“id”用于标识表述。例如,“SegmentData”元素510包含链接或参考表述元素530中的属性“id=1”的属性“id1”,“SegmentData”元素520包含参考表述元素540中的属性“id=4”的属性“id4”。
[0046] 图6示出了示例性实施方式600,其中,将表示为“本地(Local)URI”的本地资源标识符(URI)元素添加到MPD的“Representation”中的每一个片段元素中。在实施方式600中,将资源元素602“Resources”添加到MPD中作为所述MPD的子元素(例如,位于所述MPD结尾)。“Resources”元素602包含“id=sid1”的子元素610“SegmentData”以及“id=sid4”的子元素620“SegmentData”。“LocalURI”元素630通过“SegmentData”子元素610的属性“sid1”与所述“SegmentData”子元素610关联,而“LocalURI”元素640通过“SegmentData”子元素620的属性“sid4”与所述“SegmentData”子元素620关联。
[0047] 图7示出了示例性实施方式700,其中,存储的片段数据可通过XML特征,例如,XLink和/或XPointer,链接到对应的片段元素。在实施方式700中,资源元素702“Resources”是MPD的子元素且包括片段数据710和片段数据720。进一步地,片段数据710通过XLink特征730链接到对应的片段元素,片段数据720通过XLink特征740链接到对应的片段元素。
[0048] 图8示出了可将存储的片段数据通过完整路径链接到对应的片段元素的示例性实施方式800。在实施方式800中,资源元素802“Resources”是MPD的子元素且包括片段数据810和片段数据820。进一步地,片段数据810通过包含在LocalURI元素830的路径“路径(Path)=Resources/sid1”链接到对应的片段元素,片段数据820通过包含在LocalURI元素
840的路径“Path=Resources/sid4”链接到对应的片段元素。
[0049] 图9示出了可生成MPD扩展的示例性实施方式900。源MPD 910和更新的MPD 920可以包含在MPD扩展中,所述源MPD 910可以为从流媒体服务器接收到的MPD,为了清晰描述起见,其内容此处不再赘述,所述更新的MPD 920可以为上述实施方式(例如,更新的MPD 920中所示的实施方式300)中提到的其中一种MPD。用户端设备可解析所述MPD扩展并选择使用所述源MPD 910和所述更新MPD 920中的一个。
[0050] 图10A和图10B示出了示例性实施方式1000,其中,MPD和片段数据可封装成文件的相互独立的部分,该文件例如为多用途网络邮件扩展(MIME)超文本标记语言(HTML)(MHTML)文件。所述文件可以为MIME格式的多部分消息。在一实施例中,MPD通过URL和/或URI与片段数据关联,例如,片段数据1010与MPD1030的片段元素1032关联;片段数据1020与MPD1030的片段元素1034关联。应注意的是,所述片段数据1010和所述片段数据1020独立存储在所述MPD1030的外部。所述MHTML文件中多个部分的顺序是灵活可变的。
[0051] 图11示出了将MPD和片段数据封装到一个文件的示例性实施方式1100。该文件可以不是XML文件和MHTML文件,而可以是其它类型的文件,例如,可执行文件(例如,具有文件扩展类型.exe)、压缩文件(例如,具有文件扩展类型.zip或.rar),该文件可包含文件头1102,其中,文件头1102可包括文件类型1110和片段数据描述1120。所述文件类型1110可包括指示符(IND),该指示符表示这是一个封装有MPD和片段数据的文件;所述文件类型1110可进一步规定个人媒体套件(PMS)编码文件头。所述片段数据描述1120包含片段数据(SD_D)的描述信息,该描述信息包括各种信息,例如,当前片段数据(SD_id)的唯一身份识别、对应的区段、AdaptationSet、所述当前片段数据的Representation(P,A,R)、相对于起始点的所述当前片段数据偏差(SD_ofs)以及所述当前片段数据的长度(SD_l)等。MPD 1130紧挨所述文件头1102,且已封装片段数据1140、1142、1144按照时间顺序或时间线位于所述MPD之后。
[0052] 图12为文件处理方法1200的实施例的流程图,该方法可由用户端设备(例如,宿设备150或用户端设备200)实现。在步骤1202中,所述用户端设备从另一个用户端设备(例如,源设备140)接收实施方式1100中描述的文件。在步骤1204中,所述用户端设备读取该文件的类型,以确定这是一个封装有MPD和片段数据的文件。在步骤1206中,该用户端设备确定所述用户端设备的用户想要得到的媒体内容的适配集和表述。可替换的,此处的用户端设备可以根据文件头信息播放所述文件且不执行以下所有步骤。
[0053] 在步骤1208中,该用户端设备根据查询参数SD_id和(P,A,R)信息判断所述文件是否包含有所述片段数据。如果所述文件中有所述片段数据,在步骤1210中,所述用户端设备通过偏差信息SD_ofs和长度信息SD_l从所述文件中取得所述片段数据。否则,如果所述文件中没有所述片段数据,在步骤1212中,所述用户端设备通过所述MPD从远程内容服务器取得片段数据。最后,在步骤1214中,所述用户端设备解码所述片段数据。
[0054] 图13A和图13B示出了将MPD和片段数据封装或存储为两个单独文件的示例性实施方式1300。由于MPD和片段数据分别进行串流,所以,将其存储为单独文件可以适合串流。所述MPD可以扩展并通过XPointer和XLink指向片段数据中的对应的实体。如图13A所示,假设,存储所述片段数据的XML文件1310的名称为resources.xml.,图13B中的MPD文件1320可以指向图13A中的XML文件1310,例如,通过Xlink特征1322和Xlink特征1324分别链接到片段数据1312和片段数据1314。
[0055] 图14是方法1400的实施例的流程图,该方法可以由第一用户端设备(例如,源设备140、宿设备150或用户端设备200)实现,根据所述方法1400,第一用户端设备能够使用本地可用的媒体片段重新播放媒体内容,或者与第二用户端设备共享本地可用的媒体片段。
[0056] 所述方法1400开始于步骤1410,其中,第一用户端设备从流媒体服务器接收媒体内容的MPD。在步骤1420中,所述第一用户端设备还从一个或多个流媒体服务器接收所述媒体内容的多个片段,应注意的是,可以从相同的服务器或不同的服务器接收所述片段和所述MPD。在步骤1430中,所述用户端设备可封装或者存储所述MPD和至少一部分所述接收到的片段,以使第二用户端设备可以通过所述已封装MPD访问所述已封装片段。如上所述(例如,对于实施方式300至1100以及实施方式1300),可以通过各种方法将所述片段或片段数据和所述MPD一起封装,包括,存储为单个文件或单独且相关联的文件。所述第一用户端设备可通过网络连接与所述第二用户端设备耦合,所述网络连接可以为任何形式的网络连接,例如,有线(例如,以太网)连接或无线(例如,移动或WiFi)连接。
[0057] 在步骤1440,所述第一用户端设备从所述第二用户端设备接收对媒体内容的请求。所述请求可以是下载请求或串流请求,进一步地,所述请求规定了所述第二用户端设备想要取得的一个或多个片段、表述、适配集和/或区段。在步骤1450中,为响应所述请求,所述第一用户端设备向所述第二用户端设备发送一个或多个已封装片段。
[0058] 应该理解的是所述方法1400作为示意性实施例,因此,可以使用可替代的方法来修改所述方法1400,并且,如果需要,可以引入额外的步骤。例如,所述第一用户端设备可只使用接收到的片段第一次播放所述媒体内容,但可通过至少一些所述已封装片段重新播放所述媒体内容。进一步地,所述第一用户端设备可在重新播放期间监控所述第一用户端设备和所述一个或多个流媒体服务器之间的网络状况(例如,带宽);确定所述网络状况允许所述第一用户端设备串流与所述已封装片段拥有相同时间线但质量高于所述已封装片段的片段;从所述一个或多个流媒体服务器上获得用于所述重新播放的所述较高质量的片段。
[0059] 图15是方法1500的实施例的流程图,该方法1500可以由用户端设备(例如,宿设备150或用户端设备200)实现,用于获得包括多个片段的媒体内容。可以从源设备获得所述片段的第一部分作为封装文件的一部分。所述方法1500开始于步骤1510,其中,用户端设备可通过下载或串流从源设备上(例如,源设备140)获得所述片段的第一部分。所述片段的第一部分可通过所述源设备上存储的MPD来获得,所述MPD针对相同媒体内容,并可以通过在此处公开的各种方式将其与所述片段封装。在步骤1520中,所述用户端设备利用所述媒体内容的MPD从流媒体服务器(例如,流媒体服务器110)获得所述片段的第二部分,所述片段的第二部分的质量高于所述片段的第一部分的质量,或者所述片段的第二部分在所述源设备上不可用。在一实施例中,所述用户端设备可确定所述封装文件不包含所述片段的第二部分,然后获得所述片段的第二部分。在步骤1530中,所述用户端设备使用所述片段的第一部分和所述片段的第二部分解码并播放所述媒体内容。
[0060] 应该理解的是所述方法1500作为示例性实施例,因此,如果需要,可以包含额外的步骤。例如,所述片段的第一部分在所述流媒体服务器上也可用,因此,根据所述方法1500,可进一步确定所述用户端设备与所述源设备之间的第一网络连接快于所述用户端设备与所述流媒体服务器之间的第二网络连接。相应地,可根据所述确定从所述源设备上获得所述片段的第一部分。
[0061] 表1至35中总结了数字娱乐内容生态系统(DECE)考虑到的另外的用例。本领域普通技术人员将会识别这些用例的背景并根据表1至35的标题、问题陈述、描述以及前提条件理解如何实现这些用例中所公开的实施例。请注意,表1至35中使用的厂商、用户名、用户设备、内容类型以及其它信息是示例性的,并不仅限于此。
[0062] 表1
[0063]
[0064]
[0065] 表2
[0066]
[0067] 表3
[0068]
[0069]
[0070] 表4
[0071]
[0072] 表5
[0073]
[0074]
[0075] 表6
[0076]
[0077] 表7
[0078]
[0079]
[0080] 表8
[0081]
[0082] 表9
[0083]
[0084]
[0085] 表10
[0086]
[0087] 表11
[0088]
[0089]
[0090] 表12
[0091]
[0092] 表13
[0093]
[0094] 表14
[0095]
[0096] 表15
[0097]
[0098] 表16
[0099]
[0100] 表17
[0101]
[0102] 表18
[0103]
[0104]
[0105] 表19
[0106]
[0107] 表20
[0108]
[0109]
[0110] 表21
[0111]
[0112] 表22
[0113]
[0114] 表23
[0115]
[0116] 表24
[0117]
[0118] 表25
[0119]
[0120] 表26
[0121]
[0122] 表27
[0123]
[0124] 表28
[0125]
[0126] 表29
[0127]
[0128] 表30
[0129]
[0130]
[0131] 表31
[0132]
[0133] 表32
[0134]
[0135]
[0136] 表33
[0137]
[0138] 表34
[0139]
[0140] 表35
[0141]
[0142] 图16是网络设备1600或计算机系统的实施例的示意图。所述网络设备1600可以作为任何合适的设备,例如,此处公开的流媒体服务器(例如,流媒体服务器110、流媒体服务器120或流媒体服务器130)或用户端设备(例如,源设备140,宿设备150,或用户端设备200)实现。所述网络设备1600能够从网络接收消息、处理消息、并将消息传输给网络,该消息例如可以为媒体请求和片段。所述网络设备1600可包括一个或多个与接收器(Rx)1612耦合的入端口1610,可用于从其它网络组件接收MPD和/或片段。所述网络设备1600还可包括一个或多个与发送器(Tx)1632耦合的出端口1630,可用于将MPD和/或片段传输给其它网络组件。所述网络设备1600还可包括与接收器1612耦合的处理器1620或逻辑单元,用于处理所述片段或判断将所述片段发送给哪些网络组件。
[0143] 所述处理器1620可通过硬件或者软硬件结合来实现。所述处理器1620可作为一个或多个中央处理器(CPU)芯片、核芯(例如,多核处理器)、现场可编程门阵列(FPGA)、专用集成电路(ASICs)和/或数字信号处理器(DSP)实现。所述处理器1620可用于实现此处描述的任何功能模块或单元,例如,DASH获取引擎210、媒体引擎220、媒体播放器1621,或者本领域普通技术人员熟知的其它任何功能组件,或者它们其中的任何组合。所述媒体播放器1621为运行在所述处理器1620上的应用程序,用于播放解码的媒体片段。
[0144] 所述网络设备1600还可包括至少一个存储器1622,所述存储器1622可用于存储MPD 1623和片段1624,其中,可采用如上所述的各种形式存储或封装所述MPD 1623和所述片段1624,例如,如图16所示,所述片段1624包含在所述MPD文件1623中。
[0145] 在实践中,可能存在所述网络设备1600处理的双向流量,因此,一些端口既可接收也可传输报文(例如,片段)。从这个意义上说,所述入端口1610和出端口1630可以是共置部署,或者认为是与收发器(Rx/Tx)耦合的相同端口的不同功能体。所述处理器1620、所述存储器1622、所述接收器1612以及所述发送器1632中的一个或多个可用于部分实现或支持上述的任何方法和实施方式,例如,实施方式300至1100、文件处理方法1200、实施方式1300、方法1400以及方法1500。
[0146] 应当理解,通过将可执行指令编程和/或加载到网络设备1600中,可以改变处理器1620和存储器1622中的至少一个,因此,将网络设备1600部分变换为特定的机器或装置(例如,本发明介绍的具有所述功能的网络路由器)。所述可执行指令可存储在所述存储器1622中或加载到所述处理器1620中用于执行。对于电气工程和软件工程技术至关重要的是,能够按照公认的设计规则将功能转换为硬件实现方式,所述功能可通过将可执行软件加载到计算机来实现。在软件还是硬件中实现某一构思通常取决于对于待生产单元设计稳定性和数量的考虑,而并非考虑任何涉及从软件领域至硬件领域的转换问题。通常,经常变化的设计可能更适合在软件中实施,因为重编硬件实施方式的成本要高于重编软件实施方式的成本。通常,稳定性好且大批量生产的设计可能更适合在硬件中实施,例如,在ASIC中,由于大批量生产运行使得软件实施比硬件实施更廉价。通常,一项设计以软件的形式进行开发和测试,之后根据公认的设计规则转变为专用集成电路中等效的硬件实施方式,在专用集成电路中用硬件来控制所述软件的指令。按照相同的方式,新型ASIC控制的机器是一种特定机器或装置,同样地,已编程和/或加载可执行指令的计算机也可视为一种特定的机器或装置。
[0147] 本发明中的任何处理可通过使处理器(例如,通用多核处理器)执行计算机程序来实现。在这种情况下,计算机程序可以提供给使用任意类型的非瞬时计算机可读介质的计算机或网络设备。计算机程序产品可存储在计算机或网络设备的非暂时性计算机可读介质中。非暂时性计算机可读介质包括任何类型的有形存储介质。非瞬时计算机可读介质的示例包括磁存储介质(例如,软盘、磁带、硬盘驱动器等)、光磁存储介质(例如,磁光盘)、只读光盘(CD-ROM)、可录光盘(CD-R)、可写光盘(CD-R/W)、数字多功能光盘(DVD)、蓝光(注册商标)光盘(BD)和半导体存储器备(例如,掩膜ROM、可编程ROM(PROM)、可擦除PROM、闪存ROM和随机存取存储器(RAM))。计算机程序产品还可提供给使用任意类型的瞬时计算机可读介质的计算机或网络设备。非暂时性计算机可读介质的示例包括电信号、光信号和电磁波。非暂时性计算机可读介质可通过有线通信链路(例如,电线和光纤)或无线通信线路为计算机提供程序。
[0148] 本发明公开了至少一项实施例,而且所属领域的一般技术人员对实施例和/或实施例的特征做出的变化、组合和/或修改均在本发明的范围内。通过组合、整合和/或忽略各项实施例的特征而得到的替代性实施例也在本发明的范围内。在明确说明数字范围或限制的情况下,此类表达范围或限制可以被理解成包括在明确说明的范围或限制内具有相同大小的迭代范围或限制(例如,从约为1到约为10包括2、3、4等;大于0.10包括0.11、0.12、0.13等)。例如,只要公开具有下限Rl和上限Ru的数字范围,则明确公开了此范围内的任何数字。具体而言,在所述范围内的以下数字是明确公开的:R=Rl+k*(Ru–Rl),其中k为从1%到
100%范围内以1%递增的变量,即,k为1%、2%、3%、4%、5%……50%、51%、52%……
95%、96%、97%、98%、99%或100%。此外,由上文所定义的两个数字R定义的任何数字范围也是明确公开的。除非另有说明,否则术语“约”是指随后数字的±10%。相对于权利要求的任一元素使用术语“选择性地”意味着所述元素是需要的,或者所述元素是不需要的,两种替代方案均在所述权利要求的范围内。使用如“包括”、“包含”和“具有”等较广术语应被理解为提供对如“由……组成”、“基本上由……组成”以及“大体上由……组成”等较窄术语的支持。因此,保护范围不受上文所陈述的说明限制,而是由所附权利要求书界定,所述范围包含所附权利要求书的标的物的所有等效物。每一和每条权利要求作为进一步揭示内容并入说明书中,且所附权利要求书是本发明的实施例。对所述揭示内容中的参考进行的论述并非承认其为现有技术,尤其是具有在本申请案的在先申请优先权日期之后的公开日期的任何参考。本发明中所引用的所有专利、专利申请案和公开案的揭示内容特此以引用的方式并入本文本中,其提供补充本发明的示例性、程序性或其它细节。
[0149] 虽然本发明多个具体实施例,但应当理解,所公开的系统和方法也可通过其它多种具体形式体现,而不会脱离本发明的精神或范围。本发明的实例应被视为说明性而非限制性的,且本发明并不限于本文本所给出的细节。例如,各种元件或部件可以在另一系统中组合或合并,或者某些特征可以省略或不实施。
[0150] 此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、模块、技术或方法进行组合或合并。展示或论述为彼此耦合或直接耦合或通信的其它项也可以采用电方式、机械方式或其它方式通过某一接口、设备或中间部件间接地耦合或通信。其它变更、替换、更替示例对本领域技术人员而言是显而易见的,均不脱离此处公开的精神和范围。