CN102882845B - 实时或准实时流传输 - Google Patents

实时或准实时流传输 Download PDF

Info

Publication number
CN102882845B
CN102882845B CN201210278922.XA CN201210278922A CN102882845B CN 102882845 B CN102882845 B CN 102882845B CN 201210278922 A CN201210278922 A CN 201210278922A CN 102882845 B CN102882845 B CN 102882845B
Authority
CN
China
Prior art keywords
media
file
user
media file
application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201210278922.XA
Other languages
English (en)
Other versions
CN102882845A (zh
Inventor
R·潘特斯
A·楚恩格
小W·梅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Computer Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Computer Inc filed Critical Apple Computer Inc
Publication of CN102882845A publication Critical patent/CN102882845A/zh
Application granted granted Critical
Publication of CN102882845B publication Critical patent/CN102882845B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • G06F16/9566URL specific, e.g. using aliases, detecting broken or misspelled links
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/43Querying
    • G06F16/438Presentation of query results
    • G06F16/4387Presentation of query results by the use of playlists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/613Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for the control of the source by the destination
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/752Media network packet handling adapting media to network capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本发明涉及实时或准实时流传输。方法和设备使用传输协议如HTTP兼容协议提供在一个或多个播放列表中指定的内容的实时或准实时流传输。在一实施例中,一种方法可在客户端设备上执行一用户应用以呈现媒体文件并控制所述媒体文件的呈现。所述方法可进一步在所述客户端设备上运行一媒体服务进程以取回指定所述媒体文件的播放列表以及所述媒体文件可用的媒体源,从所述媒体源取回所述媒体文件,并对取回的所述媒体文件进行解码。为了获获取自定义URL所引用的对象,所述媒体服务进程可调用所述用户应用以处理所述自定义URL。

Description

实时或准实时流传输
本申请是2011年4月7日提交的发明名称为“实时或准实时流传输”的中国专利申请201110141675.4的分案申请。
相关申请
本申请要求享有如下美国临时申请的申请日:于2010年4月7日申请的美国临时申请61/321,767(档案号为No.P7437Z8)以及于2010年6月4日申请的美国临时申请61/351,824的(档案号为No.P7437Z9),并且,本申请据此通过引用将那些临时申请结合于此。本申请还与如下专利申请相关:
(1)于2008年12月31日申请的申请号为No.61/142,110的申请(档案号为No.P7437Z);
(2)于2009年3月16日申请的申请号为No.61/160,693的申请(档案号为No.P7437Z2);
(3)于2009年3月17日申请的申请号为No.61/161,036的申请(档案号为No.P7437Z3);
(4)于2009年4月7日申请的申请号为No.61/167,524的申请(档案号为No.P7437Z4);
(5)于2009年9月8日申请的申请号为No.61/240,648的申请(档案号为No.P7437Z5);
(6)于2009年12月21日申请的申请号为No.61/288,828的申请(档案号为No.P7437Z6);
(7)于2010年4月1日申请的申请号为No.61/320,213的申请(档案号为No.P7437Z7)。所有这些美国临时申请都以参考的方式结合于此,该结合以符合本公开为限。
本美国专利申请涉及如下美国专利申请,其中每一个都通过引用结合与此,该结合以符合本公开为限:
(1)申请号为No.12/479,690(档案号为No.P7437US1),于2009年6月5日申请,名称为“实时或准实时流”的申请;
(2)申请号为No.12/479,698(档案号为No.P7437US2),于2009年6月5日申请,名称为“用于实时或准实时流的可变流”的申请;
(3)申请号为No.12/479,732(档案号为No.P7437US3),于2009年6月5日申请,名称为“可更新的实时或准实时流”的申请;
(4)申请号为No.12/479,735(档案号为No.P7437US4),于2009年6月5日申请,名称为“用于实时或准实时流的播放列表”的申请;
(5)申请号为No.12/878,002(档案号为No.P7437X),于2010年9月8日申请,名称为“用于实时或准实时流以提供故障切换保护的可变流”的申请;
(6)申请号为No.12/968,202(档案号为No.P7437X2),于2010年12月14日申请,名称为“具有压缩播放列表的实时或准实时流”的申请。
技术领域
本发明的实施例涉及数据传输技术。更特别地,本发明的实施例涉及允许数据流使用非流传输协议的技术,例如超文本传输协议(HTTP)。
背景技术
内容流通常涉及持续从服务器设备传送并由客户端设备接收的多媒体内容。该内容通常呈现给端用户,同时该内容由流服务器传送。该名称涉及介质的传送方法而不是该介质本身。
当前的流服务通常需要专门的服务器分配“实况”内容给端用户。在任何大规模部署中,这会导致大的开销,并需要专门的技术来创建和运行。其结果就是可供流传输的内容库比预期的要少。
发明内容
在一个实施例中,一种系统可基于日期和时间搜索内容。例如,在一个实施例中,创建时间戳标签,每一个所述时间戳标签可以与特定媒体文件相联系。在时间戳标签中的时间戳指示相关媒体文件的开始日期和时间。注意所述媒体文件包括其自己的内部时间戳。可以利用一个或多个时间戳标签创建播放列表文件。可以使用所述时间戳标签中的日期和时间分配所述播放列表文件并使其可用于通过日期和时间的搜索。在一个实施例中,所述时间戳标签可使用一种被称为ID3的格式。
在一个实施例中,一种方法可在客户端设备上执行用户应用以呈现媒体文件并控制所述媒体文件的呈现。所述方法进一步在所述客户端设备上运行媒体服务进程以取回指定所述媒体文件的播放列表以及可获得所述媒体文件的媒体源,从所述媒体源取回所述媒体文件,并对取回的所述媒体文件进行解码。所述用户应用可被配置成通过自定义URL或自定义协议或者这两者与一个或多个服务器通信,即使所述媒体服务进程不被配置来处理所述自定义URL或自定义协议。所述自定义URL或自定义协议可指定或提供解密密钥以用于解密所述媒体文件中的加密内容。
在具有与通过所述一个或多个接口与其他被调用的程序代码交互的调用程序代码的环境中,一些实施例包括一个或多个应用编程接口(API)。进一步可能包括不同类型参数的不同函数调用、消息或其他调用类型可以通过所述调用程序和被调用代码之间的API被传输。另外,API能够为所述调用程序代码提供使用在API中定义并在所述调用程序代码中实现的数据类型或类的能力。
至少某些实施例包括一种具有通过API与被调用软件组件交互的调用软件组件(callingsoftwarecomponent)的环境。一种用于在该环境中通过API进行操作的方法包括通过所述API传输一个或多个函数调用、消息、其他调用类型或参数。
本文描述了其他方法,以及用于实现这些方法的系统,本文还描述了存储可执行指令的机器可读的非暂时性存储介质,当这些指令被执行则会促使数据处理系统实现这些方法中的任何一个。
附图说明
本发明通过附图中的示例的方式阐述,而不是以限制的方式,其中相似的参考数字涉及类似组件。
图1是能够发送和接收实时或准实时内容的服务器和客户端的实施例的框图。
图2A是用于一个或多个服务器设备使用非流传输协议支持媒体内容的技术的实施例的流程图。
图2B是用于一个或多个服务器设备为一个或多个客户端设备提供动态更新播放列表的技术的实施例的流程图。
图2C是用于一个或多个服务器设备使用多比特率为客户端设备提供媒体内容的技术的实施例的流程图。
图3A是用于客户端设备使用非流传输协议支持内容的流传输的技术的实施例的流程图。
图3B是用于客户端设备使用多比特率支持内容的流传输的技术的实施例的流程图。
图4是服务器流代理的实施例的框图。
图5是客户端流代理的实施例的框图。
图6是带有多标签的播放列表文件的实施例。
图7是本文描述的用于组合流的重放技术的实施例的流程图。
图8是电子系统的实施例的框图。
图9A是显示客户端设备如何在不同播放列表的供选择的内容之间切换的示例的流程图。
图9B是进一步显示客户端设备如何在两个播放列表的内容之间切换的示例的流程图。
图9C是进一步显示客户端设备如何使用音频模式匹配在内容之间切换的示例的流程图。
图9D以图表法示出如何利用音频模式匹配来实现图9C中的方法。
图10是用于使用可替代流提供用于向客户端设备提供媒体内容的多个冗余位置的技术的实施例的流程图。
图11示出根据一个实施例的客户端1102与一个或多个URL进行双向通信的网络。
图12A是描述根据本发明的实施例的用于控制播放列表的创建和分配的方法的流程图。
图12B示出在一实施例中,播放列表如何能够使用如图12A中的方法被传输或被分配的时间表。
图13是根据本发明的实施例的用于在客户端设备控制重放的方法。
图14A示出描述在一实施例中的用于基于连接速度或连接类型适应性地确定最小重叠量的方法流程图。图14B、14C和14D示出使用重叠以在流之间切换的实施例的其他方面。
图15是描述根据本发明的实施例的另一方法的流程图。
图16A是示出描述实施例的用于使用时间戳标签创建播放列表文件的方法流程图。
图16B示出描述实施例的用于在播放列表中使用时间戳标签搜索媒体文件的方法流程图。
图17A示出用于允许媒体服务后台程序(daemon)与用户应用交互的软件体系结构的示例。图17B示出使用自定义URL技术的软件体系结构的示例,图17C为显示使用自定义URL技术的方法示例流程图。图17D示出提供由使用自定义URL技术的应用实现的方法示例的流程图;图17E示出由播放器服务或操作系统或者两者所实现的方法示例的流程图。
图18示出在本发明的某些实施例中可用的示例性API结构的框图。
图19示出在本发明的某些实施例中可用的软件堆栈的示例性实施例。
图20示出用于允许一个设备控制或启动另一设备上的媒体重放的软件体系结构的示例。
图21示出软件体系结构的示例,其使用图20和图21中显示的两个不同设备上的软件体系结构中的软件的不同组件之间的调用。
图22A和22B示出根据本发明的实施例的可用于允许两个设备,例如图20中显示的那些设备,进行交互并提供在由另一个设备启动的一个设备上的远程重放的方法示例。
具体实施方式
在下面的描述中,阐述了许多特定细节。但是,本发明的实施例可以在没有这些特定细节下被实践。在其他情况下,未详细呈现熟知的电路、结构和技术,以便不模糊对本说明书的理解。
本说明书包括版权保护的材料,例如图形用户界面图像的图示。因此版权所有者,包括本发明的受让人,保留他们在这些材料中的权利,包括版权。版权所有者不反对任何人对于专利文件或专利公开的复制,因为其出现在专利商标局文件或记录中,但除此之外保留所有版权。苹果公司2009年版权所有。
在一实施例中,这里所描述的技术和组件包括使用非流传输协议(例如,HTTP)和其他技术(例如,运动图像专家组(MPEG)流)传递流体验的机制。例如,可以使用HTTP提供准实时流体验以广播“实况”音乐或体育事件、实况新闻、网络摄像机视频源(camerafeed)等。在一实施例中,协议可将输入的媒体数据分割成多个媒体文件并将那些分割的媒体文件存储到服务器中。该协议还可创建包括将客户引导到存储在服务器上的分割的媒体文件的统一资源标识符(URI)的播放列表文件。当分割的媒体文件按照(多个)播放列表文件被重放时,客户端可为用户提供“实况”事件的准实时广播。可以以类似方式提供预录内容。
在一实施例中,服务器可将补充的或替代的媒体内容(例如,广告、涉及体育事件的统计资料、对主呈现的附加媒体内容)动态引入到广播事件中。例如,在媒体事件的客户端重放过程中,服务器可将附加URI添加到播放列表文件中,URI标识客户端下载补充媒体文件的位置。可指示客户端周期地从服务器获取一个或多个更新的播放列表文件,以访问服务器已引入的任何补充或附加(或者两者兼有)的媒体内容。
在一实施例中,服务器可在累积模式或滚动模式中操作。在累积模式中,服务器创建播放列表文件并在播放列表文件末尾追加媒体文件标识符。当单一的播放列表文件被下载以后,客户端具有对来自该播放列表文件的流的所有部分的访问权(例如,用户可以从表演秀的中间开始)。在滚动模式中,服务器通过以滚动方式从播放列表文件开始处移除媒体文件标识符来限制媒体文件的可用性,从而提供客户端设备可访问的媒体内容的滑动窗口。服务器还可以将媒体文件标识符添加到播放列表,并且在滚动模式中,服务器将媒体文件的可用性限制到那些最近添加到播放列表中的文件。然后客户端重复下载播放列表文件的更新副本以继续浏览。当内容在时间上是潜在无界的(例如,来自于持续运作的网络摄像机的内容),对于播放列表下载来说滚动方式是有用的。客户端可在滚动模式中继续重复请求播放列表直到其在播放列表中发现结束标记。
在一实施例中,该机制通过提供同一呈现的不同的流来支持比特率切换。例如,可将要被服务的呈现的若干版本存储在服务器中。每一版本可具有本质上相同的内容但以不同比特率被编码。这能够允许客户端设备在不牺牲重放连续性的情况下,例如依赖可用带宽检测而在比特率之间进行切换。
在一实施例中,提供保护特性以保护内容防止未经授权的使用。例如,可使用非顺序性媒体文件编号来防止预测。可使用媒体文件的加密。可使用部分媒体文件列表。还可提供附加的和/或不同的保护特性。
图1示出能够发送和接收实时或准实时内容的服务器和客户端的实施例的框图。图1的例子提供了一种简单的服务器-客户端连接,其具有两个通过网络耦合到服务器的客户端。使用这里描述的技术和机制可支持任何数量的客户端。此外,根据这里描述的技术和机制,多个服务器可提供内容和/或一起操作以提供内容。例如,一个服务器创建内容,创建播放列表并创建多个媒体(例如,文件),其他服务器存储和传输所创建的内容。
网络110可以是任何类型的网络,不管是有线的、无线的(例如,IEEE802.11、802.16)还是其任何组合。例如,网络100可以是因特网或内联网。作为另一个例子,网络110可以是蜂窝网络(例如,3G、CDMA)。在一实施例中,客户端设备150和180能够通过多个网络类型通信(例如,每一个设备可通过WiFi无线局域网通信并且也能通过无线蜂窝电话网络通信)。例如,客户端设备150和180可以是智能电话或者是能够在蜂窝式射频电话网络和数据网络中通信的具蜂窝功能的个人数字助理。这些设备能够在任何类型的网络中使用这里描述的流机制,或者在必要时甚至能够在网络之间切换。
服务器120能以本领域已知的任何方式作为HTTP服务器工作。也就是说服务器120包括使用HTTP协议提供内容的HTTP服务器代理145。虽然图1的例子以术语HTTP描述,但也能够以类似方式使用其他协议。分割器130和索引器135是驻留在服务器120(或多个服务器)中的代理,用于为媒体文件中的内容提供这里所描述的播放列表文件。这些媒体文件和播放列表文件可以通过使用HTTP协议的HTTP服务器代理145(或通过其他服务器)在网络110上提供。这里所讨论的代理能够以硬件、软件、固件或其组合来实现。
分割器130可用于将媒体数据流分割为可通过HTTP协议传输的多个媒体文件。索引器135可用于创建与所分割的媒体文件相对应的播放列表文件,以便客户端设备能够重新组合媒体文件来为由服务器120提供的内容提供实时或准实时的传输。响应于来自于客户端设备的一个或多个请求,HTTP服务器代理145(或其他服务器)传输一个或多个例如由索引器135生成的播放列表文件以及例如由分割器130生成的内容的媒体文件。服务器120进一步包括可选安全代理140,其提供一个或多个本文所讨论的安全功能(例如,加密)。服务器120还包括在图1中没有显示的附加组件。
客户端设备150和180在网络110中从服务器120接收播放列表文件和媒体文件。客户端设备可以是能接收在网络中传输的数据并利用通过网络接收的数据产生输出的传输任何类型的电子设备,例如,无线移动设备、PDA、娱乐设备、消费电子设备等等。输出可以是媒体类型组合中的任何媒体类型,例如包括音频、视频或其任何组合。
客户端设备150包括组合代理160和输出生成器代理165。类似地,客户端设备180包括组合代理190和输出生成器代理195。组合代理160和180接收来自服务器120的播放列表文件,并使用播放列表文件从服务器120访问和下载媒体文件。输出生成器代理165和195分别使用所下载的媒体文件从客户端设备150和160生成输出。输出可由一个或多个扬声器、一个或多个显示屏、扬声器和显示屏的组合或任何其他输入或输出设备提供。客户端设备还包括存储器(例如,闪存或DRAM等)以在接收媒体文件时作为缓存(或缓冲区,buffer)存储媒体文件(例如,压缩的媒体文件或解压缩的媒体文件);缓存可在当前呈现内容的时间以外提供相当于许多秒的可呈现内容,以便当下载新的内容时稍后显示所缓存的内容。该缓存能够在客户端设备正试图通过间歇性慢速网络连接获取内容时提供可显示内容,因此缓存能够隐藏网络延迟或连接问题。
客户端设备150和180进一步包括可选安全代理170和185,其分别提供一个或多个这里所讨论的安全功能。客户端设备150和180还包括图1中没有显示的附加组件。
在一实施例中,本申请中描述的技术可用于在非流传输协议(例如,HTTP)上传输多媒体数据的无边界流。实施例还包括媒体数据的加密和/或对备选版本数据流的提供(例如,提供备选比特率)。由于媒体数据在创建之后立刻就可被传输,因而可准实时地接收数据。提供用于文件以及用于由多媒体数据流的服务器(发送者)和客户端(接收者)所采取的行动的示例数据格式,但是,其他格式也能得到支持。
可作为模拟实时流(或准实时流)传输的媒体呈现由指示播放列表文件的统一资源指示符(URI)指定。在一实施例中,播放列表文件是附加URI的有序列表。播放列表文件中的每一个URI都引用作为流的一个部分的媒体文件,该流可以是特定节目的单一连续的媒体数据流。
为了播放媒体数据流,客户端设备从服务器获取播放列表文件。客户端还获取和播放由播放列表文件指示的每一个媒体数据文件。在一实施例中,客户端可动态地或重复地重新加载播放列表文件以发现附加的和/或不同的媒体部分。
例如,播放列表文件可以是扩展M3U播放列表文件。在一实施例中,使用可有效扩展M3U格式的附加标签。M3U指的是运动图像专家组音频第3层统一资源定位符(MP3URL)并且是一种用于存储多媒体播放列表的格式。M3U文件是包含媒体播放器要播放的一个或多个媒体文件的位置的文本文件。
在一实施例中,播放列表文件是由多个独立行组成的扩展M3U格式的文本文件。可通过单独的LF字符或CR字符后面紧跟LF字符来结束行。每一行都可以是一个URI、一个空行、或以一注释字符(例如,‘#’)开始。URI标识要被播放的媒体文件。空行可被忽略。
以注释字符开头的行可以是注释也可以是标签。标签可以以#EXT开头,注释行可以以#开头。注释行通常被服务器和客户端忽略。在一实施例中,以UTF-8格式对播放列表文件进行编码。UTF-8(8比特统一码转换格式)是一种可变长度字符编码格式。在替代实施例中,可使用其他字符编码格式。
在如下示例中,使用包括两个标签:EXTM3U和EXTINF的扩展M3U格式。通过包括“#EXTM3U”的首行可以从基本M3U文件中识别出扩展M3U文件来。
EXTINF是一种记录标记,描述由跟在标签之后的URI识别的媒体文件。在一实施例中,每一个媒体文件URI由一个EXTINF标签引导,例如:
#EXTINF:<duration>,<title>
其中,“duration”标识媒体文件的持续时间,“title”为目标媒体文件的标题。
在一实施例中,可使用如下标签来管理媒体文件的传输和重放:
EXT-X-TARGETDURATION
EXT-X-MEDIA-SEQUENCE
EXT-X-KEY
EXT-X-PROGRAM-DATE-TIME
EXT-X-ALLOW-CACHE
EXT-X-STREAM-INF
EXT-X-ENDLIST
EXT-X-DISCONTINUITY
EXT-X-VERSION
下面将对这些标签的每一个进行更为详细地描述。虽然描述了关于每一个新标签的具体格式和属性,但是具有不同属性、名称、格式等的备选实施例也可以得到支持。
在一实施例中,EXT-X-TARGETDURATION标签表示将被添加到呈现中的下一个媒体文件的大概持续时间。其可被包含在重放文件中,且格式可以为:
#EXT-X-TARGETDURATION:<seconds>
其中“seconds”表示媒体文件的持续时间。在一实施例中,实际持续时间可能与标签所表示的目标持续时间稍微有所不同。在一实施例中,每一个表示一个片段的URI都将与片段的大概持续时间相联系;例如,一个片段的URI被加上一个表示该片段的大概持续时间的标签作为前缀。在另一个实施例中,EXT-X-TARGETDURATION标签可以指定最大媒体文件持续时间;播放列表文件中的每一个媒体文件的EXTINF持续时间应当小于或等于目标持续时间,该标签(其指定最大媒体文件持续时间)可以在播放列表文件中仅被指定一次且适用于播放列表文件中的所有媒体文件,它的格式可以为:
#EXT-X-TARGETDURATION:<s>
其中“s”为以秒数表示目标持续时间的整数。
播放列表文件中的每一个媒体文件URI都有一个唯一的序号。在一实施例中,一个URI的序号,如果存在的话,等于其之前的那个URI的序号加1。EXT-X-MEDIA-SEQUENCE标签可以表示出现在播放列表文件中的第一个URI的序号,其格式可以为:
#EXT-X-MEDIA-SEQUENCE:<number>
其中“number”为URI的序号。如果播放列表文件不包含#EXT-X-MEDIA-SEQUENCE标签,那么播放列表的第一个URI的序号可被视为1。在一实施例中,媒体文件的序号并不要求出现在它的URI中,并且在一实施例中,播放列表可仅包含一个EXT-X-MEDIA-SEQUENCE标签。在一实施例中,序号可以是非顺序的;例如,非顺序序号如1、5、7、17等使得难以预测序列中的下一个号码,这有助于保护内容不被剽窃。另一个有助于保护内容的选择是在任何给定时间都只显示部分播放列表。
可对一些媒体文件进行加密。EXT-X-KEY标签提供可用于对其后的媒体文件进行解密的信息,其格式可以为:
#EXT-X-KEY:METHOD=<method>[,URI=”<URI>”][,IV=<IV>]
METHOD参数指定加密方法,URI参数,如果出现的话,指定如何获取密钥,IV(初始化向量),如果出现的话,指定用于加密方法(如利用密钥)中的初始化向量。
加密方法为NONE表示没有加密,在一实施例中,如果指示了NONE,那么URI和IV参数就不应当出现。可以使用多种加密方法,例如AES-128,其表示使用具有128比特密钥和PKCS7填充的高级加密标准加密的加密方法[参见RFC3852]。新的EXT-X-KEY标签取代任何之前的EXT-X-KEY标签。
具有URI参数的EXT-X-KEY标签标识密钥文件。密钥文件可包含要用于对于播放列表文件中列出的随后的媒体文件进行解密的密码密钥。例如,AES-128加密方法使用16字节密钥。密钥文件的格式可以是二进制格式的16字节的合并(packed)数组。
AES-128的使用通常要求在加密和解密时提供相同的16字节初始化向量(IV)。改变IV可用于增加密码的强度。当使用AES-128加密算法时,在加密或解密媒体文件时媒体文件的序号可被用作IV。
EXT-X-PROGRAM-DATE-TIME标签可使得下一个媒体文件的开始与绝对日期和/或时间相关联,并包含或指示时区。在一实施例中,日期/时间表示法为ISO/IEC8601:2004。在该标签中的日期和时间值能够提供媒体时间线到合适的墙钟时间的信息映射,其可用作基于日期和时间而为显示或其他目的的寻找用于重放的内容的基础。在一实施例中,如果服务器提供该映射,就应当在播放列表文件中每一个EXT-X-DISCONTICUITY标签后面放置一EXT-X-PROGRAM-DATE-TIME标签。该标签格式可以为:
EXT-X-PROGRAM-DATE-TIME:<YYYY-MM-DDThh:mm:ssZ>
EXT-X-ALLOW-CACHE标签可用于指示客户端是否可为之后的重放而缓存所下载的媒体文件。在一实施例中该标签可出现在播放列表文件的任何地方,但是,在一实施例中该标签在播放列表文件中只能出现一次。该标签格式可以为:
EXT-X-ALLOW-CACHE:<YES|NO>
EXT-X-ENDLIST标签在一实施例中指示再没有媒体文件将被添加到播放列表文件中。该标签格式可以为:
EXT-X-ENDLIST
在一实施例中,如果一播放列表包含媒体文件的最后部分,那么播放列表将具有EXT-X-ENDLIST标签。在一实施例中,该标签可出现在播放列表文件的任何地方,并且在一实施例中,它在该播放列表文件中只能出现一次。
EXT-X-STREAM-INF标签可用于指示播放列表文件中下一个URI标识另一个播放列表文件。在一实施例中该标签格式可以为:
EXT-X-STREAM-INF:[attribute=value][,attribute=value]*<URI>
其中可使用如下属性。在该标签的一个实施例中,相同类型的属性在相同标签中不应当出现超过一次。属性BANDWIDTH=<n>为以每秒比特数表示的流比特率的近似上限。在一实施例中,属性BANDWIDTH可以是每一个媒体文件的总比特率的上限,其被计算以包括出现或将要出现在播放列表中的容器(container)开销。属性PROGRAM-ID=<i>为在播放列表文件范围内唯一标识一特定呈现的数字。播放列表文件可包含具有相同PROGRAM-ID的多个EXT-X-STREAM-INFURI以描述相同呈现的不同流,并且这些不同的播放列表可包含附加的EXT-X-STREAM-INF标签。在本公开中将进一步描述不同流和不同播放列表(例如,参见图9A-9D)。属性CODECS=”[format][,format]”可用于在播放列表文件中指定出现在媒体文件中的媒体样本类型,其中每一种格式指定一种媒体样本类型;在一实施例中,有效的格式标识符可以是由RFC4281定义的ISO文件格式名称空间中的那些。属性RESOLUTION=<N>×<M>可指定流中的视频分辨率,其中N为流中视频的近似编码水平分辨率,其能以像素数目来表示,M为近似编码垂直分辨率。
EXT-X-DISCONTINUITY标签指示在该标签后面的媒体文件与其之前的媒体文件之间的编码间断性。可改变的特征组为:
·文件格式
·轨道的数目和类型
·编码参数
·编码序列
·时间戳序列
其格式为:
#EXT-X-DISCONTINUITY
EXT-X-VERSION标签指示播放列表文件的兼容版本。在一实施例中,播放列表文件、其相关媒体以及其服务器都应当遵守描述由标签值表示的协议版本的该文档的最近版本的所有条款。
其格式为:
#EXT-X-VERSION:<n>
其中“n”为表示协议版本的整数。
在一实施例中,播放列表文件不能包含超过一个的EXT-X-VERSION标签。在一实施例中,不包含EXT-X-VERSION标签的播放列表文件应当遵守该协议的版本1。在一实施例中,如果播放列表文件具有该标签,那么它的取值应当是服务器、播放列表文件以及相关媒体文件都遵守的最低协议版本。
服务器设备可使用前述标签和属性来组织、传输和处理表示原始媒体内容的媒体文件。客户端设备使用该信息以按如下方式重新组合和呈现媒体文件:为客户端设备的用户提供实时或准实时流体验(例如,实况广播如音乐或体育事件的浏览)。
播放列表文件中每一个媒体文件URI都标识作为原始呈现(即,原始媒体内容)的一片段的媒体文件。在一实施例中,每一个媒体文件都被格式化为MPEG-2传输流、MPEG-2节目流或MPEG-2音频基本流。格式可通过指定CODEC的方式被指定,并且播放列表可通过指定CODEC的方式来指定格式。在一实施例中,在一呈现中的所有媒体文件都具有相同格式;但是,在其他实施例中可支持多种格式。在一实施例中,传输流文件应当包括单独的MPEG-2节目,并且在每个文件的开始应当有节目关联表和节目映射表。包含视频的文件应当具有至少一个密钥帧和足以完整初始化视频解码器的信息。播放列表中的媒体文件必须是具有前一个序列号的媒体文件末尾的编码流的延续,除非它是出现在播放列表文件中的第一个媒体文件,或者如果它是以EXT-X-DISCONTINUITY标签引导的。客户端应当准备通过选择合理子集来处理特定类型(例如,音频或视频)的多个轨道。在一实施例中,客户端应当忽略传输流内部其无法识别的私有流。用于媒体文件内部的流中的样本以及在多个媒体文件中相应流之间的样本的编码参数应当保持一致。但是客户端应当在遇到编码变化时对其进行处理,例如通过缩放视频内容以提供分辨率变化。
图2A是用于一个或多个服务器设备使用非流传输协议支持媒体内容的技术的实施例的流程图。附图2A的示例以HTTP方式提供;但是,能够以类似方式使用其他非流传输协议。图2A的示例以执行某些任务的单独服务器的方式提供。但是,可使用任何数量的服务器。例如,为客户端设备提供媒体文件的服务器可以是与将内容分割成多个媒体文件的服务器不同的设备。
服务器设备接收在操作200中提供的内容。内容可呈现实况音频和/或视频(例如,体育事件、实况新闻、网络摄像机视频源)。内容还可呈现预录内容(例如,已经被记录的音乐会、培训研讨会等)。服务器可根据本领域已知的任何格式和协议接收内容,不论是否是流式的。在一实施例中,服务器以MPEG-2流的形式接收内容;但是,其他格式也能够得到支持。
然后在操作210中服务器临时存储至少部分内容。例如,内容或至少部分内容可被临时存储在存储设备(例如,存储区域网络中的硬盘等)上或存储器中。或者,内容以通过存储介质(例如,光盘、闪存驱动器)的方式接收,可将内容从该存储介质传送到存储设备或存储器。在一实施例中,服务器具有编码器,必要时,该编码器将内容转换为一个或多个流(例如,MPEG-2)。该转换可在不永久存储所接收的内容的情况下发生,并且在一些实施例中,存储操作210可以被省略,或者在其他实施例中其可以为长期存储(例如,档案存储)。
在操作220中要被提供的内容被分割成多个媒体文件。在一实施例中,服务器将数据流转换为可使用标准网络服务器对其进行发布的单独的不同的媒体文件(也即,片段)。在一实施例中,服务器在支持对各个多个媒体文件的有效解码的点(例如,在分组和密钥帧的边界处,如PES分组边界和i帧边界)处对媒体流进行分割。媒体文件可以是具有近似相等持续时间的原始数据流的部分。服务器还为每一个媒体文件创建URI。这些URI允许客户端设备访问媒体文件。
由于利用HTTP服务器为分段提供服务,其内在地传递整个文件,因此服务器应当具有在服务于客户端之前就可用的完整的分割的媒体文件。因此,客户端可落后(在时间上)该广播至少一个媒体文件的长度。在一实施例中,媒体文件大小基于落后时间和具有过多文件之间的平衡。
在一实施例中,支持两种会话类型(实况会话和事件会话)。对于实况会话来说,仅保留流中固定大小的部分。在一实施例中,过期的内容媒体文件从节目播放列表文件中被移除,并且可以从服务器中被移除。第二种会话类型为事件会话,其中客户端可转到广播的任何位置(例如,从开头开始、从中间点开始)。例如,这种会话类型可用于转播。
在操作230中媒体文件被存储到服务器存储器。在操作230存储文件之前,可通过安全特性保护媒体文件,例如加密。媒体文件作为准备传输的文件被存储,使用由服务器设备上的网络服务器应用支持的(或由执行传输的另一设备支持的)网络协议(例如,HTTP或HTTPS)进行传输。
在操作240中生成一个或多个播放列表文件以指示应当重组媒体文件以再现原始内容的顺序。播放列表文件可使用扩展M3U标签和这里所描述的标签来为客户端设备提供信息,从而访问和重组媒体文件以在客户端设备上提供流体验。每个媒体文件的URI都以播放媒体文件的顺序被包括在(多个)播放列表文件中。服务器还可以为(多个)播放列表文件创建一个或多个URI以允许客户端设备访问(多个)播放列表文件。
在操作250中(多个)播放列表文件可被存储在服务器上。虽然媒体文件和(多个)播放列表文件的创建和存储是以图2A中的特定顺序表示的,但也可以使用不同的顺序。例如,(多个)播放列表文件可在媒体文件被创建或存储之前被创建。作为另一个示例,(多个)播放列表文件和媒体文件可在其中一个被存储之前被创建。
如果媒体文件要被加密,(多个)播放列表文件可定义一URI,以允许授权客户端设备获取包含加密密钥的密钥文件以对媒体文件进行解密。可使用安全连接(例如,HTTPS)传输加密密钥。作为另一个示例,可使用HTTPS传输(多个)播放列表文件。作为另外的示例,以不可预期的顺序排列媒体文件,使得客户端在没有(多个)播放列表文件的情况下无法再创建流。
如果加密方法为AES-128,例如AES-128CBC加密可应用于各个媒体文件。在一实施例中,整个文件都被加密。在一实施例中通常不横跨媒体文件而应用密码块链。媒体文件的序号可用作IV,或者IV可以是如前面描述的EXT-X-KEY标签的IV属性的值。在一实施例中,服务器将具有密钥URI的EXT-X-KEY标签添加到播放列表文件的末尾。然后服务使用该密钥对其后的所有媒体文件进行加密,直到加密配置发生改变。
为了切换到新的加密密钥,服务器可通过新的URI来使新密钥可用,新的URI与呈现中所使用的所有之前的密钥URI不同。服务器还将带有新密钥URI的EXT-X-KEY标签添加到播放列表文件的末尾,并使用该新密钥对其后所有媒体文件进行加密。
为了结束加密,服务器可将带有加密方法为NONE的EXT-X-KEY标签添加到播放列表文件的末尾。在一实施例中标签(以“NONE”作为该方法)不包括URI参数。对其后所有媒体文件都不进行加密,直到如前面描述的加密配置发生改变。如果播放列表文件包含用于以该密钥加密的媒体文件的URI,那么服务器不将EXT-X-KEY标签从该播放列表文件中移除。在操作270中,响应于客户端请求,服务器可在网络中传输(多个)播放列表文件和媒体文件,如关于图3A所作的更为详细的描述。
在一实施例中,响应于来自于客户端设备的对播放列表文件请求的接收,服务器将播放列表文件传输到客户端设备。客户端设备可使用已经提供给客户端设备的URI访问/请求播放列表文件。URI表示播放列表文件在服务器上的位置。在响应中,服务器为客户端设备提供播放列表文件。客户端设备可使用播放列表文件中的标签和URI(或其他标识符)来访问多个媒体文件。
在一实施例中,服务器可将媒体文件的可用性限制到那些最近被添加到(多个)播放列表文件中的那些。为此,每个播放列表文件都仅包括一个EXT-X-MEDIA-SEQUENCE标签,并且针对每一个从播放列表文件中移除的媒体文件URI,其值可以增加1。媒体文件URI以它们被添加的顺序从(多个)播放列表文件移除。在一实施例中,当服务器将媒体文件URI从(多个)播放列表文件中移除时,媒体文件对客户端保持可用一段时间,该时间等于媒体文件的持续时间加上媒体文件出现的播放列表文件的最长持续时间。
播放列表文件的持续时间为该播放列表文件内媒体文件的持续时间的总和。也可使用其他持续时间。在一实施例中,服务器可始终保持播放列表中的至少三个主呈现媒体文件,除非出现EXT-X-ENDLIST标签。
图2B是用于一个或多个服务器设备为一个或多个客户端设备提供动态更新播放列表的技术的一实施例的流程图。可利用这里所描述的累积模式或滚动模式的任何一个来更新播放列表。图2B中的示例是以HTTP的方式提供的;但是,也可以以类似方式使用其他非流传输协议(例如,HTTPS等)。图2B中的示例是以执行某些任务的服务器的方式提供的。但是,可使用任何数量的服务器。例如,为客户端设备提供媒体文件的服务器可以是不同于将内容分割为多个媒体文件的服务器的设备。
在操作205,服务器设备接收要被提供的内容。然后在操作215,服务器可临时存储至少部分内容。操作215可与图2A中的操作210相类似。在操作225,要被提供的内容被分割成多个媒体文件。在操作235,媒体文件被存储于服务器存储器中。在操作235,在存储媒体文件之前可通过例如加密的安全特性来保护这些媒体文件。
在操作245,生成一个或多个播放列表文件以指示媒体文件进行重组以再创建原始内容的顺序。在操作255,(多个)播放列表文件被存储于服务器。虽然媒体文件和(多个)播放列表文件的创建和存储以图2B中的特定顺序出现,但也可以使用不同顺序。
在操作275,响应于客户端请求,服务器(或另一个服务器)可在网络中传输(多个)播放列表文件和媒体文件,如关于图3A-3B的更为详细地描述。
服务器可基于各种理由更新(多个)播放列表文件。在操作285,服务器可接收要被提供给客户端设备的附加数据。在操作255中存储(多个)播放列表文件之后,接收附加数据。例如,附加数据可以是实况呈现的附加部分或已有呈现的附加信息。附加数据可包括广告或统计资料(例如,有关体育事件的成绩或数据)。可以在呈现上(通过半透明物)覆盖附加数据,或在侧栏用户界面中呈现附加数据。可以以与原始接收的数据相同的方式对附加数据进行分割。如果附加数据构成广告或其他要被插入到由播放列表表示的节目中去的内容,那么在操作215(至少暂时)存储附加数据,在操作225分割附加数据,并在操作235存储附加数据;在对分割的附加数据进行存储之前,可对附加数据的分段进行加密。然后在操作245,生成包含节目和附加数据的更新播放列表。在操作255,基于附加数据更新播放列表并再次进行存储。应当从客户端设备的角度原子地对播放列表文件进行改变。在一实施例中,以更新的播放列表替换之前的播放列表。如下文将更详细地讨论的,客户端设备可多次请求播放列表。这些请求使得客户端设备能够使用最新的播放列表。在一实施例中,附加数据可以是元数据;在这种情况下,不需要更新播放列表,但是可以更新其分段以包含元数据。例如,元数据可包含与分段中的时间戳相匹配的时间戳,并且元数据可被添加到具有匹配的时间戳的分段中。
更新的播放列表还可导致媒体文件的移除。在一实施例中,服务器应当以其被添加到播放列表的顺序从播放列表中移除媒体文件的URI。在一实施例中,如果服务器移除整个呈现,就会使得(多个)播放列表文件对客户端设备不可用。在一实施例中,服务器在最长(多个)播放列表文件的持续时间内维持媒体文件和播放列表文件,以允许当前客户端设备完成对呈现的访问,该最长(多个)播放列表文件包含要被移除的媒体文件。因此,可对播放列表文件中的每个媒体文件URI添加EXT-X-STREAM-INF标签作为前缀,以表示由播放列表文件指示的媒体文件的近似累积持续时间。在替代实施例中,可立即移除媒体文件和(多个)播放列表文件。
在操作275,来自客户端设备的对播放列表的随后请求使得服务器提供更新的播放列表。在一实施例中,定期更新播放列表,例如,按与目标持续时间有关的时间周期。播放列表文件的周期更新允许服务器为动态变化的呈现提供对服务器的访问。
图2C是用于一个或多个服务器设备使用多比特率为客户端设备提供媒体内容的技术的一实施例的流程图,其为替代流的一种使用形式。图2C中的示例是以HTTP的方式提供的;但是,也可以以类似方式使用其他非流传输协议。图2C中的示例是以执行某些任务的服务器的方式提供的。但是,可使用任何数量的服务器。例如,为客户端设备提供媒体文件的服务器可以是不同于将内容分割为多个媒体文件的服务器的设备。
在一实施例中,服务器可提供多个播放列表文件或具有在单一播放列表文件中列出的多个媒体文件的单一播放列表文件,以提供相同呈现的不同编码。如果提供不同编码,(多个)播放列表文件可包括每一个提供不同比特率的变型流,以允许客户端设备在编码之间动态切换(将结合图9A-9D对其作进一步描述)。具有变型流的播放列表文件包括用于每一个变型流的EXT-X-STREAM-INF标签。相同呈现的每一个EXT-X-STREAM-INF标签都可以具有相同的PROGRAM-ID属性值。每个呈现的PROGRAM-ID值在变型流中是唯一的。
在一实施例中,服务器在产生变型流时会遇到如下限制。每个变型流可以由包含不属于主要呈现的一部分的可选内容的相同内容组成。服务器可在流的最小目标持续时间的准确度内使相同的内容时段对所有变型流都可用。在一实施例中,变型流的媒体文件为具有与所有变型流中的相应内容相匹配的采样时间戳的MPEG-2传输流或MPEG-2节目流中的任何一个。并且,在一实施例中,所有变型流都应当包含相同音频编码。这就允许客户端设备在变型流之间进行切换而不丢失内容。
参考图2C,在操作202,服务器设备接收要被提供的内容。然后,在操作212,服务器至少对内容进行临时存储。在操作222,要被提供的内容被分割为多个媒体文件。在操作232,利用选择的比特率(或其他编码参数的选择值)对每个媒体文件进行编码,并将其存储到服务器。例如,媒体文件可以高带宽、中带宽和低带宽连接为目标。可在存储之前对媒体文件进行加密。可选择以不同连接类型为目标的媒体文件的编码,以在目标带宽级上提供流体验。
在一实施例中,在操作242,生成具有这里所描述的指示不同编码等级的标签的变体播放列表。例如,该标签可包括用于每个编码等级的具有相应媒体播放列表文件的URI的EXT-X-STREAM-INF标签。
该变体播放列表可包括用于不同编码等级的媒体播放列表文件的URI。因此,客户端设备可从指示编码等级的变体播放列表中提供的选项中选择目标比特率,并获取相应播放列表文件。在一实施例中,客户端设备在重放过程中可在比特率之间变化(例如,有关图9A-9D所描述的)。在操作252,将表示不同编码等级的变体播放列表存储到服务器。在操作242,还生成在变体播放列表中涉及的每个播放列表,然后在操作252中对其进行存储。
在操作272,响应于来自客户端设备的请求,服务器传输表示不同编码等级的变体播放列表。在操作282,服务器接收对变体播放列表中指定的与选择的比特率相对应的媒体播放列表中的一个的请求。在操作292,响应于该请求,服务器传输与来自客户端设备的请求对应的媒体播放列表文件。然后客户端设备可以使用媒体播放列表从服务器请求媒体文件。在操作297,服务器响应于请求而为客户端设备提供媒体文件。
图3A是用于客户端设备使用非流传输协议支持内容流的技术的一实施例的流程图。图3A中的示例是以HTTP的方式提供的;但是,也可以以类似方式使用其他非流传输协议。图3A-3B中所示的方法可由一个客户端设备或由多个独立的客户端设备来执行。例如,在这些方法的任何一种的情况下,单独的客户端设备执行所有操作(例如,请求播放列表文件、使用播放列表文件中的URI请求媒体文件、组合媒体文件以生成和提供呈现/输出),或者多个不同的客户端设备执行其中一些但不是全部的操作(例如,第一客户端设备请求播放列表文件和使用播放列表文件中的URI请求媒体文件,并存储那些媒体文件以供第二客户端设备使用,第二客户端设备处理媒体文件以生成和提供呈现/输出)。
在操作300,客户端设备可从服务器请求播放列表文件。在一实施例中,根据符合HTTP的协议作出该请求。该请求利用存储在服务器上的初始的播放列表文件的URI。在替代实施例中,支持其他非流传输协议。响应于该请求,服务器将在网络中将相应播放列表文件传输到客户端。如上文所讨论的,网络可以是有线的或者无线的,并且可以是有线或无线网络的任何组合。另外,网络可以是数据网络(例如,IEEE802.11、IEEE802.16)或蜂窝电话网络(例如,3G)。
在操作310,客户端设备接收播放列表文件。在操作320,将播放列表文件存储在客户端设备的存储器中。例如,存储器可以是硬盘、闪速存储器、随机访问存储器。在一实施例中,每次从播放列表URI中加载或重新加载播放列表文件时,客户端都对其进行检查以确定播放列表文件以#EXTM3U标签开头,如果不出现该标签的话就不再继续。正如上文所讨论的,播放列表文件包括一个或多个标签,以及一个或多个到媒体文件的URI。
在操作330,客户端设备包括组合器代理,其使用播放列表文件以通过请求由播放列表文件中的URI所指示的媒体文件重组原始内容。在一实施例中,组合器代理是作为标准网络浏览器应用的一部分的插件模块。在另一个实施例中,组合器代理可以是与网络浏览器进行交互以接收(多个)播放列表文件并使用(多个)播放列表文件组合媒体文件的独立应用。作为进一步示例,组合器代理可以是嵌入到客户端设备中的专用硬件或固件组件。
组合器使得来自播放列表文件的媒体文件从由URI指示的服务器下载。如果播放列表文件包含EXT-X-ENDLIST标签,任何由播放列表文件指示的媒体文件都可被最先播放。如果EXT-X-ENDLIST标签不出现,除了最后一个和倒数第二个媒体文件以外的任何媒体文件都可以被最先播放。在一实施例中,一旦选择了最先播放的媒体文件,则以其在播放列表文件中出现的顺序下载播放列表文件中后续的媒体文件(除非内容是无序呈现的)。在一实施例中,客户端设备试图在需要媒体文件之前装载媒体文件(并将其存储在缓存中),以提供不间断的重放,并弥补网络延迟和吞吐量的临时变化。
在操作340,可将下载的(多个)媒体文件存储在客户端设备的存储器中。可存储内容的存储器可以是客户端设备上的任何类型的存储器,例如,随机访问存储器、硬盘、或视频缓冲区。存储可以是临时的以允许重放,也可以是永久的。如果播放列表文件包含EXT-X-ALLOW-CACHE标签并且其值为NO,那么在下载的媒体文件播放过之后,客户端不对其进行存储。如果播放列表包含EXT-X-ALLOW-CACHE标签并且其值为YES,那么客户端设备无期限地存储媒体文件以用于以后的重播。客户端设备可使用EXT-X-PROGRAM-DATE-TIME标签的值以向用户显示节目的开始时间。在一实施例中,客户端可缓存多个媒体文件使其不那么容易受网络抖动的影响,以提供更好的用户体验。
在一实施例中,如果解密方法为AES-128,那么在各个媒体文件中应用AES-128CBC解密。对整个文件进行解密。在一实施例中,不跨过媒体文件使用密码块链接。可使用媒体文件的序号作为上文所描述的初始化向量。
在操作350,从客户端设备的存储器中输出内容。例如,输出或呈现可以是通过内置扬声器或耳机输出的音频。输出内容可包括通过屏幕输出的或从客户端设备投射的视频。可使用本领域已知的任何类型的输出。在操作351,客户端设备确定在存储的当前播放列表中是否还有媒体文件没有被播放或呈现。如果存在这样的媒体文件(并且,如果它们还没有被请求),那么处理返回到操作330,在那里请求一个或多个媒体文件并且处理重复。如果没有这样的媒体文件(也即,当前播放列表中的所有媒体文件都已经被播放),那么处理继续进行到操作352,确定播放列表文件是否包含结束标记。
在操作352,如果播放列表包含结束标记(例如,EXT-X-ENDLIST),那么当由播放列表文件指示的媒体文件已经被播放时终止重放。如果播放列表中没有结束标记,那么客户端设备再次从服务器请求播放列表,并恢复到操作300以获得节目的进一步的或更新的播放列表。
正如图2B中更为详细地讨论的,服务器可更新播放列表文件以引入补充内容(例如,与实况广播中的附加媒体内容相对应的附加媒体文件标识符)或附加内容(例如,数据流更下方的内容)。为了访问补充内容或附加内容,客户端从服务器重新加载更新的播放列表。这能提供一种可动态更新播放列表文件的机制,即使在重放与播放列表文件相关的媒体内容的过程中。客户端可基于大量触发器请求播放列表文件的重新加载。缺少结束标记就是一个这样的触发器。
在一实施例中,客户端设备周期性地重新加载(多个)播放列表文件,除非播放列表文件包含EXT-X-ENDLIST标签。当客户端设备第一次加载播放列表文件或重新加载播放列表文件,并发现播放列表文件自最后一次加载以后已经发生变化,客户端可在再次尝试重新加载播放列表文件之前等待一段时间。这段时间被称作最初的最低重新加载延时。从客户端开始装载播放列表文件的时间开始测量这段时间。
在一实施例中,最初的最低重新加载延时为播放列表文件中最后一个媒体文件的持续时间,或目标持续时间的三倍,取较小值。由EXTINF标签指定媒体文件持续时间。如果客户端重新加载播放列表文件并发现它没有发生变化,那么客户端可以在重试之前等待一段时间。在一实施例中,最小延时为目标持续时间的三倍,或者为最初的最低重新加载延时的倍数,取较小值。在一实施例中,该倍数在第一次尝试时为0.5,第二次尝试时为1.5,之后的尝试时为3.0;但也可以使用其他倍数。
每次加载或重新加载播放列表文件,客户端设备都检查播放列表文件以确定下一个要加载的媒体文件。第一个要加载的文件为上文所描述的被选择以最先播放的媒体文件。如果已经加载了要被播放的第一个媒体文件并且播放列表文件不包含EXT-X-MEDIA-SEQUENCE标签,那么客户端可检验当前播放列表文件在其最初被发现的偏移位置处包含最后加载的媒体文件的URI,如果没有发现该文件则暂停重放。下一个要加载的媒体文件可以是播放列表文件中最后加载的URI之后的第一个媒体文件URI。
如果已经加载了要被播放的第一个媒体文件并且播放列表文件包含EXT-X-MEDIA-SEQUENCE标签,那么下一个要加载的媒体文件可以是具有大于最后加载的媒体文件的序号的最小序号的媒体文件。如果播放列表文件包含指定密钥文件URI的EXT-X-KEY标签,客户端设备获取密钥文件并使用密钥文件中的密钥来对EXT-X-KEY标签之后的媒体文件进行解密,直到遇到另一个EXT-X-KEY标签。
在一实施例中,客户端设备使用与之前用过的相同的URI来下载播放列表文件。因此,如果播放列表文件发生了变化,客户端设备可使用更新的播放列表文件来重新获得媒体文件并基于该媒体文件提供输出。
播放列表文件的变化可包括,例如,媒体文件的URI的删除、新的媒体文件的URI的增加、替换媒体文件URI的替换。当播放列表文件发生变化时,可更新一个或多个标签以反映(多个)变化。例如,如果媒体文件的变化导致由播放列表文件指示的媒体文件的重放的持续时间发生变化,可对持续时间标签进行更新。
图3B是用于客户端设备使用作为一种替代流形式来支持多比特率内容流的技术的一实施例的流程图。图3B中的示例是以HTTP的方式提供的;但是,也可以以类似方式使用其他非流传输协议。
在操作370,客户端设备请求播放列表文件。如上文所讨论的,可利用提供给客户端设备的URI重新获取播放列表文件。在一实施例中,播放列表文件包括媒体文件的变型流清单,从而以不同比特率提供相同内容;也就是说,单个播放列表文件包括用于每个变型流的媒体文件的URI。图3B中示出的示例使用该实施例。在另一个实施例中,变型流可由分别提供给客户端的多个不同播放列表文件来表示,其中每一个播放列表文件都以不同比特率提供相同内容,并且变体播放列表可为每一个不同的播放列表文件提供一个URI。这就允许客户端设备基于客户条件选择比特率。
在操作375,客户端设备重新获取(多个)播放列表文件。在操作380,将(多个)播放列表文件存储在客户端设备存储器中。客户端设备可基于当前网络连接速度选择要用于操作385中的比特率。在操作390,使用包含在与选择的比特率相对应的播放列表文件中的URI从服务器请求媒体文件。可将重新获取的媒体文件存储在客户端设备存储器中。在操作394,客户端设备使用媒体文件提供输出,并且客户端设备确定是否改变比特率。
在一实施例中,客户端设备最初选择最低可用比特率。当播放媒体时,客户端设备监视可用带宽(例如,当前网络连接比特率)以确定可用带宽是否可支持重放使用更高比特率。如果是,客户端设备选择更高比特率并访问由更高比特率媒体播放列表文件指示的媒体文件。反过来也可以支持。如果重放消耗过多带宽,客户端设备可选择更低比特率并访问由更低比特率媒体播放列表文件指示的媒体文件。
在操作394,如果客户端设备改变比特率,例如响应于可用带宽的变化或响应于用户输入,那么在操作385,客户端设备可选择不同的比特率。在一实施例中,为了选择不同的比特率,客户端设备可使用与新选择的比特率相对应的播放列表文件中包含的不同URI列表。在一实施例中,客户端设备可在访问播放列表中的媒体文件的过程中改变比特率。
在操作394,如果比特率没有变化,那么客户端设备确定在当前播放列表中是否还有没有播放的媒体文件没有被重新获取并呈现。如果存在这样的媒体文件,那么处理返回到操作390并且使用播放列表中用于那些文件的URI重新获取一个或多个媒体文件。如果没有这样的媒体文件(也即,当前播放列表中所有媒体文件都已经播放),那么处理继续进行到操作396以确定播放列表是否包含结束标记。如果是,节目的重放结束并且处理完成;如果否,那么处理转到操作370,客户端设备请求重新加载节目播放列表,并且以图3B中所示的方法该过程重复进行。
图4是服务器流代理的一实施例的框图。可以理解的是,可以在多个服务器设备中分布服务器流代理400的组件。例如,第一服务器设备包括分割器430、索引器440和安全组件450但不包括文件服务器460,第二服务器设备包括文件服务器460但不包括分割器430、索引器440和安全组件450。在该示例中,第一服务器设备准备播放列表和媒体文件但不将其传输到客户端设备,而一个或多个第二服务器设备接收和可选地存储播放列表和媒体文件并将播放列表和媒体文件传输到客户端设备。服务器流代理400包括实现逻辑功能控制以指导服务器流代理400的操作的控制逻辑410,以及与指导服务器流代理400操作有关的硬件。逻辑可以是硬件逻辑电路或软件例程或固件。在一实施例中,服务器流代理400包括一个或多个应用412,其表示为了控制逻辑410而提供指令的代码序列和/或程序。
服务器流代理400包括存储器414,其表示存储器设备或对用于存储数据或指令的存储器资源的访问通道。存储器414可包括服务器流代理400本地的存储器,以及,或作为选择,包括服务器流代理400驻留的主机系统的存储器。服务器流代理400还包括一个或多个接口416,表示同服务器流代理400的外部实体(电子的或人类的)有关的到服务器流代理400/从服务器流代理400的访问接口(输入/输出接口)。
服务器流代理400还包括服务器流引擎420,表示能够使得服务器流代理400提供这里所描述的实时或准实时流的一个或多个功能。图4的示例提供了服务器流引擎420中可包括的多个组件;但是,也可以包括不同的或附加的组件。可被包含以提供流环境的示例性组件包括分割器430、索引器440、安全组件450和文件服务器460。这些组件中的每一个可进一步包括其他组件以提供其他功能。这里所使用的组件涉及例程、子系统等,不论是以硬件、软件、固件或是其某些组合来实现的。
分割器430把将被提供的内容分割成可作为文件使用网络服务器协议(例如,HTTP)进行传输的媒体文件。例如,分割器430可将内容分割成以预先确定的文件格式表示的预先确定的、固定大小的数据块。
索引器440可提供一个或多个播放列表文件,其提供由分割器430创建的媒体文件的地址或URI。例如,索引器440创建一个或多个文件,该文件具有与分割器430所创建的每个文件相对应的标识符的顺序列表。可通过分割器430或索引器440中的任何一个来创建或指派标识符。索引器440还包括在播放列表文件中的一个或多个标签以支持媒体文件的访问和/或使用。
安全组件450可提供如上文所讨论的那些安全特性(例如,加密)。网络服务器460可提供涉及将存储在主机系统上的文件提供给远程客户端设备的网络服务器功能。例如,网络服务器460可支持符合HTTP的协议。
图5是客户端流代理的一实施例的框图。可以理解的是,可以跨过多个客户端设备而分布客户端流代理的组件。例如,第一客户端设备包括组合器530和安全组件550,并为第二客户端设备提供媒体文件的解密流,第二客户端设备包括输出生成器540(但不包括组合器530和安全组件550)。在另一个示例中,主要客户端设备可重新获取播放列表并将其提供给第二客户端设备,第二客户端设备重新获取播放列表中指定的媒体文件并产生输出以呈现这些媒体文件。客户端流代理500包括执行指导客户端流代理500操作的逻辑功能控制的控制逻辑510,以及与指导客户端流代理500操作有关的硬件。逻辑可以是硬件逻辑电路或软件例程或固件。在一实施例中,客户端流代理500包括一个或多个应用512,其表示为控制逻辑510提供指令的代码序列或程序。
客户端流代理500包括存储器514,其表示存储器设备或到用于存储数据和/或指令的存储器资源的访问通道。存储器514可包括客户端流代理500本地的存储器,以及,或作为选择,包括客户端流代理500所驻留的主机系统的存储器。客户端流代理500还包括一个或多个接口516,表示同客户端流代理500的外部实体(电子的或人类的)相关的到客户端流代理500/从客户端流代理500的访问接口(输入/输出接口)。
客户端流代理500还包括客户端流引擎520,表示能够使得客户端流代理500提供这里所描述的实时或准实时流的一个或多个功能。图5的示例提供了客户端流引擎520中可包括的多个组件;但是,也可以包括不同的或附加的组件。可被包含以提供流环境的示例性组件包括组合器530、输出生成器540和安全组件550。这些组件中的每一个可进一步包括其他组件以提供其他功能。这里所使用的组件涉及例程、子系统等,不论是以硬件、软件、固件或是其某些组合来实现的。
组合器530可使用从服务器接收的播放列表文件通过网络服务器协议(例如,HTTP)从服务器访问媒体文件。在一实施例中,组合器530可导致由播放列表文件中的URI所指示的媒体文件被下载。组合器530可对包含在播放列表文件中的标签作出反应。
输出生成器540可在主机系统上提供作为音频或可视输出(或音频和可视的两者兼有)的所接收的媒体文件。例如,输出生成器540可使得音频被输出到一个或多个扬声器,并使得视频被输出到显示设备。安全组件550可提供如上文所讨论的那些安全特性。
图6示出带有多标签的播放列表文件的一实施例。图6的示例性播放列表包含标签的具体数量和顺序。这仅仅是为了描述的目地提供的。一些播放列表文件可包含更多、更少或不同组合的标签,并且可以以不同于图6中所显示的顺序排列标签。
开始标签610指示播放列表文件的开始。在一实施例中,开始标签610为#EXTM3U标签。持续时间标签620指示重放列表的持续时间。也就是,由重放列表600指示的媒体文件的重放的持续时间。在一实施例中,持续时间标签620为EXT-X-TARGETDURATION标签;但是,也可使用其他标签。
日期/时间标签625提供与由重放列表600指示的媒体文件所提供的内容的日期和时间有关的信息。在一实施例中,日期/时间标签625为EXT-X-PROGRAM-DATE-TIME标签;但是,也可使用其他标签。顺序标签630指示播放列表序列中播放列表文件600的顺序。在一实施例中,顺序标签630为EXT-X-MEDIA-SEQUENCE标签;但是,也可使用其他标签。
安全性标签640提供与应用到由播放列表文件600指示的媒体文件中的安全性和/或加密有关的信息。例如,安全性标签640可为解密由媒体文件指示符指定的文件而指定解密密钥。在一实施例中,安全性标签640为EXT-X-KEY标签;但是,也可使用其他标签。变型列表标签645指示是否由播放列表600提供变型流,以及有关变型流的信息(例如,多少、比特率)。在一实施例中,变型列表标签645为EXT-X-STREAM-INF标签。
媒体文件指示符650提供与要被播放的媒体文件有关的信息。在一实施例中,媒体文件指示符650包含要被播放的多个媒体文件的URI。在一实施例中,播放列表600中的URI的顺序与访问和/或播放媒体文件的顺序相对应。后续播放列表指示符660提供与在重放文件600之后要被使用的一个或多个重放文件相关的信息。在一实施例中,后续播放列表指示符660包含一个或多个播放列表文件的URI,该播放列表文件在播放列表600的媒体文件被播放之后要被使用。
存储器标签670指示客户端设备是否能在媒体文件内容重放之后存储媒体文件,和/或存储媒体文件多长时间。在一实施例中,存储器标签670为EXT-X-ALLOW-CACHE标签。结束标签680指示播放列表文件600是否为供呈现的最后一个播放列表文件。在一实施例中,结束标签680为EXT-X-ENDLIST标签。
下面的部分包含根据一个实施例的多个示例的播放列表文件。
简单播放列表文件
#EXTM3U
#EXT-X-TRAGEDURATION:10
#EXTINF:5220,
http://media.example.com/entire.ts
#EXT-X-ENDLIST
滑动窗口播放列表,使用HTTPS
#EXTM3U
#EXT-X-TRAGEDURATION:8
#EXT-X-MEDIA-SEQUENCE:2680
#EXTINF:8,
https://priv.example.com/fileSequence2680.ts
#EXTINF:8,
https://priv.example.com/fileSequence2681.ts
#EXTINF:8,
https://priv.example.com/fileSequence2682.ts
具有加密媒体文件的播放列表文件
#EXTM3U
#EXT-X-MEDIA-SEQUENCE:7794
#EXT-X-TARGETDURATION:15
#EXT-X-KEY:METHOD=AES-128,URI=”
https://priv.example.com/key.php?r=52”
#EXTINF:15,
http://media.example.com/fileSequence7794.ts
#EXTINF:15,
http://media.example.com/fileSequence7795.ts
#EXTINF:15,
http://media.example.com/fileSequence7796.ts
#EXT-X-KEY:METHOD=AES-128,URI=”
https://priv.example.com/key.php?r=53”
#EXTINF:15,
http://media.example.com/fileSequence7797.ts
变体播放列表文件
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,
BANDWIDTH=1280000
http://example.com/low.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,
BANDWIDTH=2560000
http://example.com/mid.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,
BANDWIDTH=7680000
http://example.com/hi.m3u8
#EXT-X-STREAM-INF:PROGRAM-
ID=1,BANDWIDTH=65000,CODECS=”mp4a.40.5”
http://example.com/audio-only.m3u8
图7是这里描述的用于组合流的重放技术的一实施例的流程图。在一实施例中,所接收的媒体文件的重放可由用户控制以开始、停止、倒回等。在操作700,客户端设备接收播放列表文件。在操作710,重新获取由播放列表文件指示的媒体文件。在操作720,基于所接收的媒体文件产生输出。基于媒体文件接收和产生输出可如上所述实现。
如果在操作730检测到控制输入,在操作740,客户端设备确定该输入是否指示停止。如果输入为停止,则过程结束并且重放停止。在操作750如果输入指示倒回或快进请求,则在操作760客户端设备基于之前播放的仍然存储在存储器中的媒体文件产生输出。如果这些文件已不在缓存中了,那么处理返回到操作710以重新获取媒体文件并重复过程。在一替代实施例中,重放可支持暂停特性,其中止重放但不像停止输入那样结束重放。
将参考图9A-9D进一步描述从一个流到另一个流的转换方法。一个客户端设备可执行这些方法中的每一个,或者,可如这里所描述的跨过多个客户端设备而分布每个方法的操作;例如,在分布式的情况下,一个客户端设备获取变体播放列表和两个媒体播放列表,并将其提供给另一个客户端设备,该另一个客户端设备重新获取由两个媒体播放列表指定的媒体文件并在由重新获取的媒体文件所提供的两个流之间切换。也可以认识到,在替代实施例中,可修改所显示操作的顺序,或者可以有比这些图中所显示的操作更多或更少的操作。这些方法可使用变体播放列表来选择不同的流。在操作901,重新获取和处理变体播放列表以确定可用于节目(例如,体育事件)的流。操作901可由客户端设备完成。在操作903,从变体播放列表中选择第一流,然后客户端设备可重新获取第一流的媒体播放列表。在操作905,客户端设备处理第一流的媒体播放列表,并在操作907测量或确定用于第一流的网络连接的比特率。可以意识到可以以不同于图9A中所显示的顺序来执行操作顺序;例如,可以在操作903执行过程中执行操作907等。在操作911,客户端设备基于来自操作907的测量比特率,从变体播放列表中选择替代的媒体播放列表;该替代的媒体播放列表可以具有比第一流的现行比特率高的第二比特率。这通常意味着替代流将具有比第一流更高的分辨率。如果基于当前条件(例如,在操作907中测量的比特率)替代的媒体播放列表是比第一流的当前播放列表更好的匹配者,则选择该替代的媒体播放列表。在操作913,重新获取并处理替代流的替代媒体播放列表。这通常意味着客户端设备可接收和处理第一流和替代流两者,因而两者对于呈现来说都是可用的;呈现一个并准备好呈现另一个。然后在操作915,客户端设备选择转换点以在流的版本之间切换,停止呈现第一流并开始呈现替代流。与图9B-9D一起共同提供如何完成该切换的示例。在一些实施例中,客户端设备可在作出切换之前停止接收第一流。
图9B示出在操作921和923,客户端设备重新获取、存储和呈现由第一媒体播放列表(例如,第一流)指定的内容,并且在操作925,当呈现由第一播放列表指定的内容时,客户端设备还重新获取和存储由第二媒体播放列表(例如,第二流)指定的内容。当呈现从第一媒体播放列表获得的内容时对由第二媒体播放列表指定的内容的重新获取和存储(例如,于临时缓冲区中)造成节目内容在时间上的重叠955(如图9D中所示),从而允许客户端设备在节目的版本之间切换而不会对节目造成实质中断。这样,可以在多种情况下实现节目版本之间的切换,而不会使用户察觉到切换的发生(虽然在某些情况下,在切换之后用户会注意到更高分辨率图像)或者不会对节目的呈现造成实质中断。在操作927,客户端设备确定转换点,在该转换点从由第一媒体播放列表指定的内容切换到由第二媒体播放列表指定的内容;图9D中显示了转换点的示例(转换点959)。在切换之后,随后在操作931呈现由第二媒体播放列表指定的内容。
图9C和9D中所示的方法表示用于确定转换点的一个实施例;该实施例依赖对来自于两个流951和953的音频采样的模式匹配来确定转换点。可以意识到,替代实施例可使用对视频采样的模式匹配或使用在两个流中的时间戳等来确定转换点。方法包括,在操作941,将由第一媒体播放列表指定的内容(例如,流951)存储于缓冲区中;缓冲区可被用于内容的呈现以及模式匹配操作。流951包括音频采样951A和视频采样951B。视频采样可使用依赖于包括显示单个视频帧所必需的所有内容的i帧或关键帧的压缩技术。流951中的内容可包括指定时间的时间戳(例如,从节目开始时以来流逝的时间),这些时间戳可标记每个采样的开始(例如,每个音频采样951A的开始以及每个视频采样951B的开始)。在某些情况下,两个流之间的时间戳的比较在确定转换点时是没有用的,因为它们不足够精确或者由于两个流中采样边界的不同;但是,时间戳范围的比较可被用于验证在两个流之间存在时间上的重叠955。在操作943,客户设备在缓冲区中存储由第二媒体播放列表指定的内容;该内容与从第一媒体播放列表获得的内容用于相同的节目,并且还可包括时间戳。在一实施例中,如果流中没有出现时间戳,可将时间戳添加到流的播放列表;例如,在一实施例中,可将包括一个或多个时间戳的ID3标签添加到如变体播放列表或媒体播放列表的播放列表的条目中。例如,条目可存在于用于音频流的第一采样的URI中。图9D显示从第二媒体播放列表获得的内容953的示例,其包括音频采样953A和视频采样953B。在操作945,客户端设备可对流951和953中的音频采样执行模式匹配以从重叠部分955中选择转换点959,在一实施例中,该转换点为匹配的音频分段(例如,分段957)之后的下一个独立(自包含的)视频帧(例如,i帧961)。以i帧961(以及其相关音频采样)开始,节目的呈现使用从第二媒体播放列表获得的第二流。在一实施例中上述方法可用于从较慢比特率到较快高比特率的变化以及从较快比特率到较慢比特率的变化,但是,在另一实施例中,该方法仅可用于从较慢低比特率到较快高比特率的变化,而另一方法(例如,不尝试定位转换点,但尝试尽快存储和呈现来自较慢比特率流的内容)可用于从较快高比特率到较慢比特率的变化。
图10是用于提供利用替代流来为客户端设备提供播放列表或媒体内容或其二者的多个冗余位置的技术的一实施例的流程图。如果播放列表包含上文讨论的替代流,则替代流不仅仅作为带宽替代或设备替代来操作,还作为失败回退(fallback)。例如,如果客户端不能重新加载流的播放列表文件(例如,由于404错误或网络连接错误),客户端可尝试切换到替换流。参考图10,如同结合图2C的说明所讨论的,在操作1002,为了实现故障备援(failover)保护,第一服务器设备或第一内容分发服务被配置为创建一个流或多个替代带宽流。在操作1004,第一服务器设备或第一内容分发服务从操作1002中生成的(多个)流中生成(多个)播放列表文件。在操作1006,第二服务器设备或第二内容分发服务创建平行流或流集合,并创建播放列表。这些(多个)平行流可被视作备份流。接着,在操作1008,将备份流列表添加到(多个)播放列表文件,以便每个带宽的(多个)备份流被列在主要流之后。例如,如果主要流来自于服务器ALPHA,备份流在服务器BETA,那么播放列表文件可以如下表示:
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=200000
http://ALPHA.mycompany.com/low/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=200000
http://BETA.mycompany.com/low/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=500000
http://ALPHA.mycompany.com/mid/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=500000
http://BETA.mycompany.com/mid/prog_index.m3u8
注意到,备份流与播放列表中的主要流相混合,其中每个带宽上的备份被列在该带宽的主要流之后。客户端并不局限于单一备份流组合。在上述示例中,例如ALPHA和BETA继之以GAMMA。类似地,提供完整的平行流组合并不是必要的。例如,可在备份服务器上提供单一低带宽流。
在操作1010,客户端尝试使用与第一服务器设备或第一内容分发服务相关的第一流从第一URL下载(多个)播放列表文件。图11示出根据一个实施例的客户端1102与一个或多个URL、服务器设备或内容分发服务进行双向通信的网络。在操作1012,将(多个)播放列表文件从第一URL、服务器设备或内容分发服务传输到客户端1102。如果客户端不能够从第一URL、服务器设备或内容分发服务下载(多个)播放列表文件(例如,由于重新加载流索引文件中出现错误),客户端尝试切换到替代流。在一个流上的故障(例如,索引装载故障)事件中(例如,操作1010),在操作1014,客户端选择网络连接支持的最高带宽替代流。如果存在具有相同带宽的多个替代,客户端以播放列表中所列的顺序在它们之间进行选择。例如,如果客户端1102不能从URL1成功下载,可从URL2或另一个URL下载,在这种情况下,将(多个)播放列表文件从替代URL传输到客户端。这一特性提供冗余流以允许媒体到达客户端,即使在严重的本地故障事件中,如服务器崩溃或内容分发节点停机。
故障备援保护具备提供多个冗余位置的能力,客户端可从这些位置重新获取播放列表和媒体文件。因此,如果客户端不能从第一位置重新获取流,它可以尝试从第二、第三等位置访问流。
在一实施例中,为了指示客户端可重新获取播放列表的附加位置,可提供具有相同带宽、但新的冗余位置的URI的相同变体播放列表标签。客户端最初可尝试访问与所需带宽相关的第一URL。如果不能从第一URL下载播放列表,则其可尝试访问呈现给该带宽的下一个URL等等,直到其穷尽了所有可能性。
下面的示例包括用于2560000带宽的1个冗余位置以及用于7680000带宽的2个冗余位置。
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1280000
http://example.com/low.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2560000
http://example.com/mid.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2560000
http://example1.com/mid-redundant2.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=7680000
http://example.com/hi.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=7680000
http://example2.com/hi-redudant2.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=7680000
http://example3.com/hi-redudant3.m3u8
#EXT-X-STREAM-INF:PROGRAM-
ID=1,BANDWIDTH=65000,CODECS=”mp4a.40.5”
http://example.com/audio-only.m3u8
注意到在该示例中,文件名(例如,mid-redundant2.m3u8)和实际URL(例如,http://example2.com<http://example2.com/>,http://example3.com<http://example3.com/>)二者都发生变化。但是,在一实施例中,冗余位置可以是仅对文件名或仅对网站的变化。
在一实施例中,服务器设备可对播放列表进行压缩并将其以压缩形式发送到客户端设备。压缩的播放列表通常需要比非压缩的播放列表更少比特以呈现播放列表,因此压缩的播放列表,当被发送或接收时,使用如无线蜂窝电话网络的网络的更少的可用带宽。在一实施例中,网络服务器按照内置压缩技术或设施压缩播放列表,由与诸如HTTP1.1标准协议的传输协议一致或兼容的网络服务器使用该压缩技术或设施;这样的压缩技术或设施的一个示例是HTTP1.1的deflate或gzip压缩设施。其他基于标准的压缩设施,作为基于标准的传输协议的一部分,可被用于其他实施例中。在一实施例中,压缩播放列表的使用可以是服务器设备和客户端设备的可选特性。在一实施例中,播放列表可以是文本内容(例如,文本文件)并由基于标准的网络服务器的deflate或gzip进行有效压缩,然后由客户端设备自动解压。可以在www.ietf.org/rfc/rfc1952.txt找到gzip压缩设施的版本描述;可在www.ietf.org/rfc/rfc1951.txt找到deflate压缩设施的版本。许多网络服务器和客户端设备上的许多网络浏览器可自动支持deflate或gzip设施。
在一实施例中,客户端设备周期性地请求更新的播放列表;例如,客户端设备每隔几秒(例如,每隔10、20或30秒或其他时间周期)从服务器请求更新的播放列表。不断增长的播放列表(如用于实况正在进行的篮球赛的播放列表,其允许客户端在实况比赛过程中的任意时间从实况比赛开头开始观看)变得足够大使得压缩的使用可限制网络带宽的消耗,因为不断增长的播放列表通过网络被重复发送。
在一实施例中,当客户端设备请求播放列表(如更新的播放列表)时,其可选择地指定可支持的压缩技术(如deflate或gzip);这些技术的支持意味着客户端设备可解压或译码被压缩或编码的内容。通过压缩技术的可选指定,网络服务器接收客户端设备对播放列表的请求,在一实施例中,并不需要该网络服务器来支持用于播放列表的压缩技术,而是可发送非压缩播放列表。网络服务器通过向客户端设备发送非压缩播放列表或使用在客户端设备对播放列表的请求中指定的压缩技术之一进行压缩的播放列表,来响应客户端设备的请求。客户端设备如这里所描述的接收和使用播放列表;如果播放列表是压缩的,则使用客户端设备中的解码器,如客户端设备上网络浏览器中的解码器,对其进行解码。
图12A和12B显示当附加媒体文件将被添加时(例如,当正被传输的当前播放列表不包含EXT-X-ENDLIST标签时)用于后继播放列表的传输的服务器定时模型的一实施例。如果当前播放列表不包含呈现的最后一个媒体文件,那么数据处理系统或服务器可制作包含至少一个新的媒体文件URI的播放列表新版本。图12A和12B显示服务器定时模型的一实施例,用于确保具有新的媒体文件URI的新播放列表能够以延续播放列表前一个版本的方式传输到客户端设备。例如,当允许在播放列表中指定的媒体文件具有较短的持续时间(例如,仅几秒钟长)时可使用该模型。在一实施例中,通过为每个媒体文件设置最大媒体文件持续时间和通过基于最大媒体文件持续时间设置播放列表持续时间的最小总量,服务器或其它数据处理系统可确保内容连续分发或传输到客户端设备,即使每个媒体文件仅有几秒钟的持续时间。
现在参照图12A,如果在操作1200所确定的下一个播放列表文件中不出现endlist标签,则操作1201可用于建立作为播放列表中每个媒体文件的最大媒体文件持续时间的目标持续时间。可由将数据流细分为多个媒体文件并将其存储为各个文件的数据处理系统执行操作1201。细分数据流的过程使用目标持续时间(例如,当前播放列表文件的目标持续时间)来确保播放列表文件中指定的每个媒体文件都小于目标持续时间(或小于目标持续时间加上或减去一小段时间)。如操作1203所示,产生播放列表的数据处理系统还确保播放列表文件的持续时间至少为目标持续时间的倍数。在一实施例中,该倍数可以是三个用作最小播放列表持续时间的目标持续时间(或目标持续时间的某些其他倍数),其中,通过播放列表中指定的媒体文件的累积持续时间定义播放列表的持续时间。产生播放列表的系统(例如,服务器)通过确保每个播放列表指定至少足够数量的媒体文件以满足最小持续时间来遵守播放列表的最小持续时间;例如,如果最小持续时间是3个目标持续时间,则每个播放列表都应包含至少3个目标持续时间。
操作1205还可用作确保一致的连续的数据流从数据处理系统(如传输媒体文件的服务器)中可用的进一步机制。该进一步机制可减少客户端设备用于确定播放列表是否发生变化的轮询和牵引的总量。在操作1205,可创建服务器以便服务器具有传输下一个播放列表的最早时间和最晚时间。最早时间和最晚时间可被用作基于或相对于前一个播放列表文件(恰好先于新播放列表)变为可用的时间的时间窗口。例如,最早时间可基于紧接的前一个播放列表首次可用于从服务器传输(但不必已经传输)的时间。例如,最晚时间也可基于紧接的前一个播放列表首次可用于从服务器传输(但不必已经传输)的时间。例如,在一实施例中,最早时间可被指定为从之前的播放列表文件首次对传输变为可用开始不早于目标持续时间(例如,在操作1201中设置的目标持续时间)的第一预定百分比(例如,二分之一)的时间,最晚时间可被设置为不晚于从紧接的前一个播放列表文件首次对从服务器的传输变为可用开始不晚于目标持续时间的第二预定百分比(例如,1.5倍)的时间。在一实施例中,播放列表文件首次对传输可用的时间可以是播放列表文件的创建时间(该时间由服务器上的文件系统所记录)。在包括时间线1211的图12B中显示该示例。目标持续时间1213为播放列表持续时间1215的一部分,播放列表持续时间表示在时间1209被一个或多个服务器首次变为可用的紧接的前一个播放列表的持续时间,在时间1209,该前一个播放列表文件首次对传输变为可用。在该播放列表中指定的媒体文件差不多在时间1209开始它们的传输。根据图12B中显示的服务器定时模型,服务器不应当传输下一个播放列表文件,直到达到最早时间1217,其为时间1209之后的目标持续时间的二分之一,并且,服务器不应当在任何晚于时间1219的时间使下一个播放列表文件可用,在图12B所述的示例中,时间1219被指定为时间1209之后的1.5倍目标持续时间。可使用该服务器定时模型以确保播放列表文件对客户端设备可用,来为客户端设备提供足够时间以重新获取在播放列表中指定的媒体文件,并随后在重放过程中一致且连续地、没有拖延地在内容呈现中呈现那些媒体文件。在一实施例中,当内容为实况事件的传输并且来自实况事件的数据流被细分为多个媒体文件时可使用这些服务器定时模型,随后,相对于实况事件准实时地将那些多个媒体文件传输到客户端设备,客户端设备在多个媒体文件从实况事件(如篮球比赛等)的数据流中被分出来之后不久接收该多个媒体文件。
图13示出可被用于防止客户端设备重放中出现拖延的方法的实施例,尤其是当客户端设备正准实时地呈现实况事件时以及当客户端设备正在呈现接近实况事件的当前结尾(在时间上最新)的内容时。例如,如果实况事件为篮球比赛,客户端设备的用户宁愿仅观看比赛中的最新事件而不愿从比赛最开头开始观看比赛。如果用户想要仅观看进行中的比赛的最新事件,则用户可试图对重放进行设置以从距离可用媒体流结尾10或15秒为起始点开始。当用户设置客户端设备使其在该模式下操作时,网络问题或延迟可突然导致数据不可用并可阻止新数据变得可用,因此在很短时间内,客户端设备可用完要呈现的内容。可使用图13的方法通过在客户端设备执行规定以减少上述问题发生的几率,该规定要求在当前播放列表文件结尾之前至少一段时间(例如,30秒)的起始点开始重放。例如,如果播放列表文件内指定有5个媒体文件(每个媒体文件持续10秒),那么该规定的一种实现方式是强制开始点在不晚于播放列表指定的五个媒体文件的序列中的第三个媒体文件。现参照图13,操作1301用于确定endlist标签或标记是否出现在播放列表中。如果出现这样的endlist标签,那么图13的方法可在没有新的内容添加到播放列表时停止,因此在一实施例中不需要执行操作1303中的规定。另一方面,如果在播放列表中不出现endlist标签,那么在客户端设备执行规定要求开始点必须是至少在播放列表文件结束之前一时间段。可根据媒体文件的目标持续时间指定该时间段。例如,在一实施例中,要求客户端设备从距离播放列表文件结尾超过三倍目标持续时间的媒体文件开始。
本发明的另一个方面涉及当在来自两个播放列表的流之间(例如,两个变型流)切换或在两组媒体文件之间切换时使用的方法。结合图9A、9B、9C和9D提供了用于在来自两个不同播放列表的流之间切换的方法示例。在该方法中,两个流之间在时间上的重叠被用于确保一致且连续的重放,以便流之间的切换或转换是无缝的。如图9D所示,重叠955表示来自两个流的媒体内容在客户端设备被存储并能够在客户端设备被重放的时间段,从而允许在两个流之间进行无缝切换。在一实施例中,重叠部分为从不改变的且在客户端设备中设置的最小数字。虽然该实施例运作良好,但在某些时候该重叠部分不必要地太长。也就是说,重叠部分可防止切换或转换的发生,即使设备已准备好进行转换。例如,当从较低分辨率到较高分辨率切换时,不必要的长的重叠会迫使用户在较高分辨率显示内容已经可用和准备好被呈现时观看一段时间的较低分辨率显示内容。例如,高速的连接可提供快速开发重叠部分的能力,该重叠部分短于低速连接或连接类型所需的重叠部分。在根据图14A的实施例中,客户端设备可适应连接速度或连接类型,并基于连接速度或连接类型修改所需的最小重叠。例如,如果连接速度或类型较快,则可相对于较低连接速度或连接类型所需的最小重叠而缩短最小重叠。当条件改变(例如,客户端设备丢失3G连接且必须依赖2G或更慢的连接)时,可改变最小重叠。因此,客户端设备可基于连接速度或类型适配最小重叠。现参照图14A,在操作1401,客户端设备确定连接的速度或类型。重新参考图9D,可以看到来自第二播放列表的第二数据流为当客户端设备还接收来自第一播放列表的流时接收的新的数据源。这时,在操作1403,客户端设备可确定连接速度或连接类型以确定基于当前连接速度或连接类型所需的最小重叠量。当诸如由无线连接到蜂窝电话塔、WiFi基站的条件改变时,可基于改变的条件适配该最小重叠。当客户端设备在无线蜂窝电话网络或其他数据网络中移动时这会特别有利。当确定当前条件的最小重叠存在后,在操作1405,客户端设备可从来自第一播放列表或旧的数据源的流切换或转换到可以是来自第二播放列表的流的新的数据源。已结合图9A-9D的相关描述提供了该转换的示例。
图14B、14C和14D示出两个流之间如何重叠的另一个方面(例如,结合图9A-9D所示和描述的重叠或结合图14A所描述的重叠)。可通过自适应导出的重叠(已连同图14A对其进行描述)实现图14B、14C和14D所示的方法,或者可通过不变的固定重叠使用该方法。图14B-14D中描述的方法以从“旧流”1410(例如,其可以是以第一速度下载的较低分辨率视频,该第一速度在比特率上比用于新的流1414的后续下载的第二速度低)中下载媒体文件开始。如同哈希标记1411所指示的那样旧流1410已经被下载,并且在客户端设备上其正为用户在重放点(例如,重放头位置)1412呈现;在当前重放点1412之外的旧流1410中已经下载的内容为缓存内容,其在连接失败时应当是有效的。然后客户端设备读取新流1414的播放列表并从播放列表文件中确定内容“块”,如块1416和1415,甚至在下载那些块的内容之前;例如,新流的播放列表文件可至少近似地指示内容块1416和1415相对于旧流1410的时间位置。该确定可允许客户端设备谨慎决定通过请求和重新获取块1415的一个或多个媒体文件而下载新流1414的第一个块1415,图14C示出该下载的结果(块1415A具有哈希标记以显示此块已被下载)。重放位置已经在时间上前进到一个新的位置(仍然在旧流1410的最左边块中)。在该实例中,块1415的下载足够快以致于重放位置没有离开旧流1410的最左边块。在下载需要更长时间的情况下,则应谨慎选择块1415,以便重放能够至少在块1415A附近被切换。在图14C所描述的点上,客户端设备检查在块1415A所提供的重叠和重放的当前点(如图14C中的1412所示)之间还剩多少时间。如果考虑到连接速度还有足够时间的话,客户端设备可下载作为当前重叠部分之前的块的块或分段1416,然后客户端设备重复上述检查以确定在刚下载的块1416A(如同哈希标记所指示的,在其被下载之后在图14D中所示的)所提供的重叠和重放的当前点(如图14D中的1412所示)之间还剩多少时间。就像图14D所示的示例的情况一样,如果1416A的下载很快发生,那么客户端设备可在时间上向回移动重叠点,减少在流之间切换所需的时间(并因此允许在块1416A中的切换);另一方面,如果在下载1416A过程中有延时以致于切换不能在块1416A中发生,那么客户端设备可使用块1415A作为可用以使得切换在块1415A中发生的重叠部分。
本发明的另一个方面使用定义图像分类率的属性。该属性可允许客户端设备决定它不应当切换分辨率或者不应当基于该属性切换流。例如,客户端设备确定已经在播放可显示的最高分辨率并且通过数据网络下载设备可用的更高分辨率是没有意义的。
图15示出在一实施例中用于使用这样的属性的方法的示例。在操作1501,客户端设备接收播放列表文件,并且在操作1503,客户端设备根据播放列表文件确定定义客户端设备可用的图像分辨率的属性存在于播放列表文件中。基于该属性,在操作1505,客户端设备确定是否重新获取另一个播放列表文件或是否重新获取与该属性相关的媒体文件。通过提供分辨率属性,客户端设备可智能地决定如何处理播放列表中的数据。另外,客户端设备可作出有关数据重新取得的决定,该决定可防止不必要的下载,因而将网络上数据流量的总量减到最小。
本发明的实施例可允许系统基于日期和时间搜索内容。例如,用户想要看2009年4月9日下午5点的一记全垒打或想要看某个日期大致时间的另一个事件。本发明的实施例可通过时间戳,通过使用与相应媒体文件的开头相关的EXT-X-PROGRAM-DATE-TIME标签,提供该能力;通过在播放列表文件的媒体文件之前出现标签使得该标签与相应媒体文件关联。系统,如服务器,存储可由客户端设备重新获取(例如,下载)的一个或多个播放列表并用于搜索日期和时间以找到想要的媒体文件;或者,客户端设备请求(例如,通过日期和时间搜索请求)服务器搜索一个或多个播放列表以识别一个或多个匹配日期和时间搜索请求的媒体文件,并且服务器通过识别该一个或多个媒体文件作出响应。在一实施例中,标签指示媒体文件基本精确的开头,并且媒体文件中的时间戳可用于以时间上的更精确粒度来找到重放点。例如,标签的时间戳指示媒体文件在2009年4月9日下午5:03开始,并且媒体文件中的时间戳(或时间的其他指示)在下午5:03以后以分钟或秒等为增量指定时间,以允许设备在例如下午5:06或下午5:05:30开始重放(通过重放开始点的选择)。
图16A示出描述根据一实施例的用于使用时间戳标签创建播放列表文件的方法的流程图。由通过包括软件、硬件、固件或上述的任意组合的处理逻辑实现的服务器执行该方法。在一些示例中,由媒体提供商,如MLB,提供该服务器。
在方框1610,处理逻辑创建时间戳标签并将每个时间戳标签与一个媒体文件相关联。时间戳标签中的时间戳指示相关媒体文件的开始日期和时间。上面已经讨论了时间戳标签的一些实施例的细节。
在方框1620,处理逻辑创建具有一个或多个时间戳标签(例如,EXT-X-PROGRAM-DATE-TIME标签)的播放列表文件,其中每一个时间戳标签与一特定媒体文件相关联。注意到,媒体文件本身也具有内部时间戳。在方框1630,处理逻辑分配播放列表以便播放列表文件可用于使用时间戳标签中的日期和时间进行日期和时间的搜索。在一些实施例中,在储存库中存储播放列表,客户端设备可从中下载播放列表。
图16B示出描述根据一实施例的用于使用连同时间戳标签而创建的播放列表文件的方法流程图。由通过包括软件、硬件、固件或上述的任意组合的处理逻辑实现的客户端设备执行该方法。由与播放列表文件相关联的媒体的个别消费者、订阅者或浏览者使用客户端设备访问和播放该媒体。
在方框1650,处理逻辑接收对在特定日期和时间开始的节目分段的用户请求。例如,用户可请求于2010年4月6日下午8:15开始的篮球比赛的第四节,而不是整个篮球比赛。响应于用户请求,在方框1652,处理逻辑从媒体服务器下载一个或多个与节目相关联的播放列表文件。在方框1654,处理逻辑使用在播放列表文件内部的时间戳标签中的日期和时间搜索下载的播放列表文件以寻找与请求分段的日期和时间最接近的日期和时间标志(时间戳)。然后在方框1656,处理逻辑从请求分段的日期和时间中减去其日期和时间。这就产生一持续时间。然后在方框1657,处理逻辑向前经过播放列表中的后续媒体文件持续时间,直到在被标记日期的媒体文件之后的大约该持续时间时,处理逻辑定位到目标媒体文件。然后在方框1658,处理逻辑下载该目标媒体文件,因为其是哪个文件包含请求分段的最好猜测。
在一些实施例中,在被标记日期的媒体文件和目标媒体文件之间的所有媒体文件为单一编码的一部分,即,在它们之间没有中断标签。如果它们是,处理逻辑从目标文件中的那些媒体文件时间戳中减去被标记日期的文件中的媒体文件时间戳以得到精确持续时间,从而允许精确定位所请求的日期和时间。
使用播放列表文件中时间戳标签中的日期和时间,处理逻辑不必下载整个节目的所有媒体文件以在媒体文件中进行搜索以发现所请求的分段。由于在用户没有请求整个节目时客户端设备不必下载整个节目的所有媒体文件,可实现带宽的显著节省。此外,许多典型的媒体文件仅包含任意时间戳,通常以零开始。因此,上述时间戳标签的日期和时间将媒体文件中的任意时间戳与实际日期和/或时间相关联。与扫描每个媒体文件相比,使用时间戳标签,客户端设备可更有效地定位包含特定日期和/或时间的播放列表元素。
本发明的实施例允许将时间元数据以ID3格式插入到媒体流中。媒体流包含以预定格式编码的视频和/或音频数据。例如,媒体流可包含以MPEG-2格式编码的视频和音频数据,MPEG-2是由运动图像专家组(MPEG)开发的国际标准ISO/IEC13818。广义上说,元数据包含媒体流中数据相关的信息,以及涉及有关特定时间(例如,进球得分的时间)的元数据的定时元数据。注意到,定时元数据可随时间改变。可将定时元数据以预定的用于存储元数据的格式,如ID3格式,插入到媒体流中。在一些实施例中,可将视频数据分成一系列帧。还可将视频数据的定时元数据分入与该系列帧有关的容器。每一个容器可存储相应帧的定时元数据以及与相应帧有关的时间二者。可选地,每一个容器可存储相应帧的定时元数据以及相应帧的帧数目二者。在一些实施例中,帧的定时元数据包含该帧的一组预定信息。例如,定时元数据包含记录视频数据的相应帧的位置的位置信息(例如,全球定位系统(GPS)数据)。
在一实施例中,下面内容描述了如何在这里所描述的HTTP现场流传输协议所使用的MPEG-2传输流中携带ID3元数据作为定时元数据(参见ISO/IEC13818-1:2007信息技术-运动图像的通用编码和相关音频信息:下文作为“MPEG-2标准”提及的系统)。根据MPEG-2标准的第2.12节,可在传输流中携带元数据。例如,可在基本流(PES)中携带元数据,而不是在传送带中。ID3元数据是自描述的,不需要配置信息,因此不需要使用元数据解码器配置数据的规定。元数据流可与主要节目素材(也即,音频/视频内容)在相同节目中。
表S1、S2、S3和S4提供了可被使用的语法的实施例。在下面的语法表中,仅以有效轮廓和字段名显示该语法结构(左栏)。这就意味着,为了清楚起见,省略条件为假时的’if’方框。针对完整语法、字段大小和可接受值可查阅MPEG-2标准。在具有每个字段名的行中,右栏指示在该上下文中所需的值,或者包含该行的解释。
使用的代码点概述
ID3定义格式和语义,因此,相同的注册的format_identifier可用于metadata_format_identifier和metadata_application_format_identifier二者。在注册机构SMPTE注册中心(参见http://www.smpte-ra.org),为这些所注册的值为“ID3”(ID3空格,或0x490x440x330x20)(待分配)。为了指示使用的注册值,字段metadata_format和metadata_application_format可分别取值为oxff和oxffff。在一实施例中,可在私用数据流中载有该元数据,而不是以MPEG-2标准的第12.4节中定义的元数据访问单元(MAU)的形式格式化的流。因此,如同MPEG-2标准第2.12.3节中所规定的,用于流的stream_id的值为private_stream_id_1、0xbd。如同MPEG-2标准第2.12.9.1节中所规定的,stream_type被设置为0x15,指示在PES流中携带元数据。由于通常仅携带一个元数据流,因此metadata_service_id通常被设为0;但是,如果需要的话,可使用任何合适的值以区别该元数据流与其他流。
使用的描述符
元数据描述符的格式和内容记载在MPEG-2标准第2.6.58-2.6.61节中。
用于节目的PMT的描述符循环
在节目的program_info循环中,为了声明元数据流的存在,可在PMT中设置metadata_pointer_descriptor(MPEG-2标准第2.6.58节)。元数据可与主要节目(音频/视频)内容在相同的节目中。在一实施例中,不支持使用该描述符来引用另一个节目。
表S1
在节目映射中,还可在基本流的循环中声明基本流(MPEG-2标准第2.4.4.8节)。
表S2
用于基本流的PMT的描述符循环
在用于基本流的es_info循环中,为了声明元数据流的格式,可在PMT中设置metadata_descriptor(MPEG-2标准第2.6.60节)。
表S3
PES流格式
ID3元数据可作为完整ID3v4帧存储在PES分组中,包括完整ID3头部流。ID3标签在PES报头之后立即开始;该PES报头包含PTS(PTS_DTS_flags到’10’)。PTS与音频和视频帧在同一时间线上。可将data_alignment比特设为0。PES报头包含非零值的PES_packet_length。如果ID3标签长于65535个字节,那么它就可具有超过1个PES报头。第二及后续PES报头包括具有设置为0的data_alignment,以及设置为’00’的PTS_DTS_flags(因而没有PTS)。PES报头根据MPEG-2标准第2.4.3.7节中的记载进行格式化。
表S4
以和音频或视频相同的方式将元数据流合并到传输流中。例如,那就意味着,在transport_packet()(参见MPEG-2标准第2.4.3.2节)中,仅当PES报头紧接其后时才可将payload_unit_start_indicator设为1。(接下来,PES报头指示ID3数据的开头是否在其后,或者其是否已经被分成多个PES分组,如前面段落提到的)。
在本发明的一实施例中,媒体文件的处理(例如,播放列表的重新获取和播放列表中指定的媒体文件的重新获取,以及媒体文件中内容的解码)可独立于用于呈现和控制被呈现媒体的用户界面而完成。例如,用户应用,如用于观看实况事件(例如,作为用于观看棒球比赛的美国职业棒球联盟(MLB)的应用)或其他流的应用,可提供用户界面以呈现和控制(例如,可接收对媒体文件的选择)呈现,而另一个软件进程(例如,为如用于服务媒体的后台程序这样的媒体服务的软件进程,其可被称作“媒体服务”)可重新获取播放列表并获取和解码媒体文件。在一些情况下,可对媒体文件进行加密,由用户应用(例如,MLB应用)控制加密;例如,用户应用可将客户端证书(例如,提供认证、信任链和可撤回性的X.509证书)安装到其密钥链中(持久地或仅在存储器中),该密钥链可用于当建立HTTP安全套接字层(SSL)连接以下载用于对媒体内容进行解密的密钥时应答服务器询问。在其他情况下,播放列表包含用于一个或多个密钥的URL,所述密钥使用由用户应用或与用户应用交互的服务器所使用的自定义URL方案;在这种情况下,用户应用注册用于这些自定义URL方案的URL协议处理程序(handler),可调用这些处理程序以获得密钥(如新密钥),从而允许用户应用在带外传送密钥(例如,隐藏在它们的应用二进制中),或者使用私有协议从服务器获得密钥,该私有协议被用户应用和与用户应用交互的服务器理解,但不能被其他系统理解。
图17A示出允许媒体服务后台程序与用户应用交互的软件结构的实施例。该结构包括媒体服务后台程序(“媒体服务”)1710和示范性用户应用、事件媒体提供商(EMP)应用1720,二者在运行在客户端设备上的进程中都是可执行的,客户端设备例如,智能手机、个人数字助理、台式电脑、笔记本电脑、平板设备等。客户端设备的一个实施例可使用图8中所示的电子系统800来实现。在一些实施例中,媒体服务1710和EMP应用1720二者共享关于存储器控制、存储器空间、存储器分配、文件系统控制和网络控制的相同的特权。同样地,媒体服务1710可访问EMP应用1720可访问的数据。而且,阻止媒体服务1710访问EMP应用1720不能访问的数据。
在一些实施例中,EMP应用1720进一步包括核心媒体堆栈1721,核心媒体堆栈是用于访问网络堆栈1723的自定义软件堆栈,其又访问URL协议处理程序、EMP处理程序1725。EMP应用1720注册用于自定义URL方案的EMP处理程序1725,其可被调用以获得一个或多个密钥。因此,EMP应用1720可在带外传输密钥(例如,隐藏在应用二进制中)。
一般而言,媒体服务1710和EMP应用1720相互交互以下载和重放来自内容提供商的应用的用于现场流内容的媒体文件,在当前示例中,该内容提供商为EMP。重放可在客户端设备上的媒体服务1710中完成。在一些实施例中,媒体服务1710可下载用于对媒体文件进行解密的密钥,如果下载失败,媒体服务1710可请求EMP应用1720从内容提供商服务器下载密钥,在当前示例中该内容提供商服务器为EMP服务器1730。运行在客户端设备上的EMP应用1720可登记以获得一个或多个密钥。在一实施例中,EMP应用1720在下载媒体文件之前就已经登记并获得了密钥。下面讨论媒体服务1710和EMP应用1720之间交互的一些实施例的细节,以进一步阐述概念。
参照图17A,在一实施例中的EMP应用1720将具有至少一个URL和一个密钥的播放列表发送到媒体服务1710(1)。使用该密钥,媒体服务1710尝试在该URL访问由EMP提供的媒体源,并下载来自媒体源的播放列表中指定的媒体文件。可对媒体文件进行编码或加密以防止对媒体文件内容的未经授权的浏览。如果媒体服务1710未能下载媒体文件,或者它未能解码或解密所下载的媒体文件(2),那么媒体服务1710将该故障报告给EMP应用1720(3)。
响应于来自媒体服务1710的故障报告,EMP应用1720使用其核心媒体堆栈1721访问网络堆栈1723以请求新密钥(4),其接着为了新密钥而访问EMP处理程序1725(5)。EMP处理程序1725连接到网络(例如,互联网)上的EMP服务器1730以向EMP服务器1730请求新密钥(6)。响应于该请求,EMP服务器1730将新密钥发送给EMP处理程序(7)。然后,EMP处理程序1725将新密钥传递到核心媒体堆栈1721(8),其随后将新密钥传递到媒体服务1710(9)。
当媒体服务1710从核心媒体堆栈1721接收新密钥,媒体服务1710试着使用新密钥再次下载媒体文件,然后使用新密钥对下载的媒体文件进行解码(10)。可选地,如果之前成功下载了媒体文件,但媒体服务1710未能对媒体文件进行解密,那么媒体服务1710可试着使用新密钥对之前下载的媒体文件进行解密。如果媒体服务1710使用新密钥成功下载并解码媒体文件,那么EMP应用1720可在客户端设备上呈现解码的媒体文件。
图17B和17C示出可由独立于用户应用(例如,“AppX”)的播放器服务完成媒体文件处理(例如,播放列表的重新获取和播放列表中识别的媒体文件的重新获取,以及加密媒体文件的解码)的另一个实施例,该用户应用呈现和控制用于呈现来自经处理的媒体文件的内容的用户界面。媒体文件的处理与用户界面的控制之间的分离允许内容提供商创建唯一的用户界面,并通过由内容提供商或为内容提供商所创建的应用来呈现该用户界面,并且,它还允许内容提供商使用对反常的工程师很隐藏或困难的自定义URL或自定义协议以保护其内容。自定义URL或自定义协议可由内容提供商的应用(例如,“AppX”)以及与内容提供商的应用交互的系统(例如,由内容提供商或内容提供商代理控制的服务器)来控制。图17B示出在客户端设备1750上的软件结构的示例,客户端设备例如为智能手机、个人数字助理、台式电脑、笔记本电脑、平板设备、娱乐系统、或消费电子设备等。例如,客户端设备可以是图8中所示的系统。客户端设备1750可通过网络1752(例如,互联网或电话网络等)与一个或多个服务器1753进行交互和通信。一个或多个服务器可存储和传输播放列表(例如,播放列表1754)以及播放列表中涉及的媒体文件,并且这些服务器可由提供应用(例如,AppX)的内容提供商来控制,因此,将应用和服务器设计为利用自定义协议一同工作,以确保内容被保护或在控制内容分发的过程中提供更大的灵活性等。
客户端设备1750包括操作系统(OS)1756,该操作系统可包括播放器服务1757,尽管在另一个实施例中可独立于操作系统提供播放器服务。操作系统1756可维持用于存储应用(如AppX)注册的信息的注册表1755;该存储在注册表中的信息可包含显示自定义URL和使用该自定义URL的应用之间的关系的信息,以便播放器服务或OS调用使用自定义URL的应用以从该自定义URL中获取对象(例如,解密密钥)。也就是说,通过使用在播放列表中发现的自定义URL在注册表中查找相关应用(其可由与应用相关的标识符确定),注册表允许OS或播放器服务确定要调用的应用。在一实施例中,自定义URL由EXT-X-KEY标签指定,并且,作为该标签的参数,播放器服务被配置以接受被指定为http、https和注册的标识符(例如,在如注册表1755的注册表中已经注册的标识符)中的一个的URL。客户端设备1750包括一个或多个用户应用,如AppX1751(或者,例如,美国职业棒球联盟(MLB)应用,或提供从一个或多个播放列表,如这里所描述的播放列表,中获得流内容的用户界面的其他应用)。这些应用可由提供内容的实体来提供(例如,MLB提供流向客户端并在MLB应用的用户界面中呈现的内容,棒球比赛,该MLB应用在客户端设备上执行),或者这些应用可由创建具有其他人创建的内容的一般用途播放器的用户界面的应用开发者提供。
可根据图17C所示的方法操作客户端设备1750和一个或多个服务器1753以解析不能被播放器服务,如播放器服务1757,识别的自定义URL。在图17C的操作1761中,例如AppX1751的应用,当其被安装或安装之后,能够使得自定义URL被注册到注册表中,如注册表1755。在一实施例中,作为安装过程的一部分,应用可调用操作系统1756以使得其一个或多个自定义URL同将这些一个或多个自定义URL与应用相关联的标识符一起被存储到注册表1755中。在安装之后,可由用户启动和使用应用,该步骤可在操作1763中当用户在应用中做出选择以使得应用呈现选择的HTTP流时发生。响应于该输入,在操作1765,应用调用(在图17B的调用2中)播放器服务1757以呈现(例如,显示)HTTP流。在操作1767,播放器服务取回(调用3)由用户输入指定的播放列表,并确定播放列表中包含不能被播放器服务识别或支持的自定义URL;在图17B的情况下,自定义URL针对播放器服务用来对播放列表中涉及的媒体文件进行解密的解密密钥;在确定播放列表包含自定义URL的基础上,播放器服务调用操作系统1756(调用4)来检查注册表1755以确定应当被请求用来解析或使用自定义URL的应用。在操作1769,操作系统1756确定播放列表中的自定义URL将被AppX1751解析,操作系统1756接着调用(调用5)AppX1751以使得AppX使用自定义URL取回对象(在这种情况下为由AppX用来对呈现内容进行解密的解密密钥)。在操作1771,AppX1751可以接收来自操作系统1756的调用并作为响应可确定要使用的URL,并且调用操作系统(调用6)以使用AppX1751确定的URL取回对象(在这种情况下为解密密钥)。然后在操作1773,操作系统1756接收对象并将其传递到AppX1751,AppX1751随后将该对象传递到播放器服务1757以允许播放器服务使用该对象处理播放列表或媒体文件或二者(如在操作1775中)。在操作1773的一个可替换实施例中,操作系统1756一旦接收到对象就可将其直接传递到播放器服务1757。
图17D示出由应用,如AppX,执行的为了使用自定义URL的方法的示例。该方法可与图17A中所示的软件结构一同使用。在操作1780,应用,如AppX,可以使得其一个或多个自定义URL被注册;该注册可以在应用的安装过程中或在第一次启动应用时完成。在应用被启动之后,其可接收用户输入,例如HTTP流的选择(在操作1781),并且作为响应,应用可以调用(例如,通过API)播放器服务以呈现HTTP流。如果HTTP流的播放列表包含不能被播放器服务识别或处理的自定义URL,那么应用从播放器服务或操作系统中接收调用(在操作1783),以使得应用解析由应用注册的自定义URL(例如,appx://appx.com/key)。在操作1784,应用随后可响应于操作1783中的调用对自定义URL进行解析;该解析可包括预定的、专有的(对于应用)方案,该方案包括基于例如应用的特权(例如,保护等级或应用开销)、内容要求、请求浏览内容的日期和时间等确定合法的URL。在解析自定义URL之后,应用可调用操作系统或网络堆栈以从耦合到网络(例如,互联网)的远程服务器请求由自定义URL表示的对象(例如,解密密钥)。操作系统或网络堆栈可获得对象(例如,通过将解析的URL发送到以对象作为响应的服务器),并使得该对象被传递到播放器服务(直接地或通过应用);如果对象被直接传递到播放器服务,那么操作1785可由组件执行,而不是由应用执行。
图17E示出可由设备上的播放器服务和操作系统之一或二者执行的为了使用自定义URL的方法的示例。该方法可与图17A中所示的软件结构一起使用。在操作1790,播放器服务从应用(例如,AppX)接收调用以呈现HTTP流,并在操作1791中,作为响应,播放器服务可使用在请求中指定的数据取回该应用中描述的播放列表。然后,在操作1792,播放器服务可确定播放列表包含自定义URL,并且随后在操作1793中调用操作系统使其检查注册表,如注册表1755,以确定自定义URL是否已经被注册;或者,播放器服务可以自己调用服务来检查注册表。检查注册表的结果可确定注册自定义URL的应用(或可确定没有这样的注册,在这种情况下,播放器服务可显示HTTP流不可用的错误消息)。如果应用在用于自定义URL的注册表中被识别,那么,在操作1794,播放器服务或操作系统调用应用,并将自定义URL传递到应用以促使应用解析自定义URL。在应用解析自定义URL之后,其促使对象(例如,解密密钥)被获得,并且在操作1795,播放器服务接收对象(通过应用,或通过网络堆栈或操作系统组件)。在接收对象之后,在操作1796,播放器服务可处理播放列表中涉及的媒体文件,通过例如取回每个媒体文件并使用对象对其进行解码以及对其进行显示。
本发明的另一个实施例使用分布式系统,该系统利用至少两个设备以使用本文所描述的播放列表和流式方法提供重放。图20、21、22A和22B提供了这样的分布式系统的一个示例,其中一个设备可启动在另一个设备上的远程重放,该另一个设备驱动和提供输出给TV或其他呈现设备,如立体音响系统等。参照图20,第一设备2001被配置成通过例如有线网络或无线网络或如有线连接这样的直接连接与第二设备2003通信。在一实施例中,第一设备可以是平板电脑或笔记本电脑或智能手机,第二设备可以是机顶盒或音频/视频控制器,如加州库佩蒂诺的苹果公司的AppleTV。在一实施例中,第一设备可以是加州库佩蒂诺的苹果公司的iPad。设备2001和2003中每一个都可以是电子系统,如结合图8描述的电子系统,并可包括一个或多个处理器、存储器和外围设备,如输入或输出或输入/输出接口。在一实施例中,设备2001和2003中每一个都包括允许设备加入WiFi无线网络的无线网络接口。在一实施例中,连接2005可以是与WiFi网络的连接,在其他实施例中,可使用其他无线连接或有线连接将两个设备2001和2003相联结。设备2003包括到呈现设备如TV或立体音响系统的输出,该输出提供媒体的远程呈现,该呈现可通过在应用或应用,如设备2001上的应用2007,中选择该媒体来启动。
设备2001可包括多个软件组件,其中该软件组件包括例如应用或应用2007,应用2007可以是例如用于在设备2001上呈现棒球比赛的美国职业棒球应用或用于通过本文所描述的流式方法呈现电影或其他内容的Netflix应用或应用的应用。设备2001还包括类似于图17B中所示的播放器服务1757或图17A中所示的媒体服务器后台程序1710的媒体服务器2009。设备2001还包括远程重放服务2011,其是在第一和第二设备之间提供接口的软件组件,用于通过第二设备允许选择或启动的内容在第一设备上远程重放,然后该第二设备输出内容到与第二设备2003的输出相联结的呈现设备,如TV。可由第一设备的用户激活或选择远程重放服务,使其与第二设备通信以通过第二设备促使远程重放到与第二设备的输出相联结的呈现设备上,如TV上。在一实施例中,远程重放服务可以是由苹果公司的iPad或iPhone上提供的AirPlay设备的一部分。设备2001还包括操作系统2013,其提供操作系统的标准的和已知的服务,以使得设备具有本领域已知的一个或多个应用的功能。
第二设备还可包括媒体服务器2017,其类似于媒体服务器或播放器服务1757,或者类似于图17A中的媒体服务器后台程序1710。此外,第二设备2003还包括操作系统2019和远程重放后台程序2015。在一实施例中,远程重放后台程序2015是作为后台进程的后台程序,其在第二设备启动时被启动,并被配置用于监视某些命令,如“播放”URL命令或“播放”URL调用,然后被配置成将该调用提供给媒体服务器,如媒体服务器2017。后台程序可作为后台进程操作,并在启动时启动自己,而不需要来自第二设备2003的用户的任何交互。也可以理解为应用2007类似与图17B中的应用1751。
在一可替代实施例中,媒体服务器和每个设备的远程重放部分可以结合在一起以便在合并对象之间不需要公开的API调用。
图21示出如何利用一系列调用和返回使用图20中所示的软件结构,以提供图20中所示的分布式系统的环境中自定义URL的使用,其中,可由第一设备启动重放并由第二设备远程地将重放通过第二设备的输出提供给呈现设备,如TV或立体音响系统或TV和立体音响系统的组合。调用和调用的返回被显示为带圈的数字。例如,第一设备2001中的应用进行调用以播放URL到媒体服务器,该调用在图21中示出为的圆圈中的“1”。现在将结合图22A和22B中所示的方法进一步讨论软件组件的交互以及这些组件之间的调用。
现参照图22A和22B,方法由操作2025开始,在两个设备,如两个无线网络设备,之间建立连接,设备之一被建立以允许其在第二设备上或通过第二设备播放和控制媒体。在一实施例中,第一设备可以是平板电脑或笔记本电脑或其它包含应用如应用2007的数据处理系统,用户可使用该设备通过第二设备或在第二设备上远程地选择要被呈现的内容。在一实施例中,第一设备可包括输出,如显示器,用于当通过第二设备在呈现设备,例如TV或第二设备的其他显示器,上呈现媒体时也显示相同的媒体。在一实施例中,第一设备的用户可选择远程重放模式,如iPad上的AirPlay模式,并在这种情况下建立第一设备以允许其在第二设备上控制和播放媒体;类似地,该设置还可建立设备之间的连接。可以理解,操作2025和2027的顺序可以颠倒,并且可在启动应用并选择重放媒体之后建立该连接。在操作2027,系统响应用户请求或自动地由第一设备启动应用,并接收重放视频或其它媒体的请求。例如,用户在iPad上启动Netflix应用,然后在Netflix应用中选择特定视频或其它内容以进行重放。响应于用于重放的特定视频或其它媒体的选择,在操作2029,第一设备上的应用调用第一设备上的媒体服务器以播放用于播放列表的URL。该调用如图21中调用1所示。作为响应,第一设备上的媒体服务器确定远程重放模式是否已经被选择或使能。如果没有,那么重放通过第一设备以图17A-17E中所描述的方式出现,如果需要解析自定义URL的话。另一方面,如果远程重放模式已经被选择或使能,那么第一设备上的媒体服务器通过图21中的调用2调用远程重放服务。实际上,该调用将URL传递到第二设备上的远程重放后台程序2015,该URL可以是用于播放列表的URL或用于播放列表中的密钥的URL。该调用如图21中调用3所示。在操作2031,远程重放后台程序,如远程重放后台程序2015,从第一设备接收URL并调用第二设备上的媒体服务器播放该URL;该调用如图21中调用4所示。作为响应,第二设备上的媒体服务器2017确定该URL为媒体服务器2017不能处理的自定义URL。在一实施例中,自定义URL为任何不属于标准URL方案的URL,该标准URL方案如HTTP方案、HTTPS方案、文件方案或DAV方案。自定义URL方案将被应用理解,就如何解码和处理自定义URL以取回由该URL指向的数据或内容而言。
然后在操作2035,第二设备上的媒体服务器,如媒体服务器2017,调用第二设备上的远程重放后台程序,如远程重放后台程序2015,以请求对自定义URL的解析。作为响应,远程重放后台程序通过图21中所示的调用6调用远程重放服务。然后在操作2039,远程重放服务,如第一设备上的远程重放服务2011,接收解析自定义URL的请求,并在调用7中调用媒体服务器,如第一设备上的媒体服务器2009,对自定义URL进行解析。接着在操作2041,媒体服务器2009接收自定义URL并调用应用如应用2007(在一实施例中,在查阅注册表以确定要调用的合适的应用之后),以对自定义URL进行解析。对应用的调用如图21中调用8所示。然后,在操作2043,应用解析URL并返回自定义URL的内容,如密钥或播放列表或由自定义URL指向的其他内容,并且该内容被返回到第一设备上的媒体服务器,如图21中的返回9所示。然后在操作2045,第一设备上的媒体服务器将自定义URL的内容返回到远程重放服务,如远程重放服务2011,其转而将该URL的内容返回到第二设备上的远程重放后台程序,该远程重放后台程序随后将该URL的内容返回给第二设备上的媒体服务器。此时,在操作2049,第二设备上的媒体服务器可使用该URL的内容处理重放过程,该内容可以是密钥或播放列表,并且每当媒体服务器2017遇到自定义URL时,这一过程可根据需要重复。在这种情况下,当遇到自定义URL,可由图21中所示的调用5开始重复这一过程,并以图22A中的操作2035开始,通过自定义URL调用的解析继续,再次以操作2047结束。
可以理解,在操作2047,如果URL的内容为密钥,那么该密钥将被用于对媒体文件进行解密,如果内容为播放列表,那么第二设备上的媒体服务器将根据本公开其余部分的描述使用播放列表以取回并解码由该播放列表指定的媒体文件。如果该播放列表中的密钥也由自定义URL指定,那么该过程将再次重复,如上文所述从操作2035开始到操作2047结束。
图8为电子系统的实施例的方框图。图8中所示的电子系统旨在代表一些电子系统(有线的或无线的),包括例如台式电脑系统、笔记本电脑系统、移动电话、包括手机功能的PDA的个人数字助理(PDA)、机顶盒、娱乐系统或其它消费电子设备。替代电子系统可包括更多、更少和/或不同组件。图8的电子系统可用于提供客户端设备和/或服务器设备。
电子系统800包括总线805或其他沟通信息的通信设备,以及耦合到总线805以处理信息的处理器810。虽然电子系统800使用单个处理器来阐述,但是电子系统800可包括多个处理器和/或协处理器。电子系统800进一步包括随机存取存储器(RAM)或其他动态存储设备820(作为主存储器被提及),其耦合到总线805并可存储信息和由处理器810执行的指令。主存储器820还用于存储在处理器810执行指令过程中的临时变量或其他中间信息。
电子系统800还包括耦合到总线805的只读存储器(ROM)和/或其他静态存储设备830,其可存储静态信息和用于处理器810的指令。数据存储设备840耦合到总线805以存储信息和指令。数据存储设备如闪存存储器或磁盘或光盘以及相应的驱动器可被耦合到电子系统800。
电子系统800还通过总线805与显示设备850耦合,如阴极射线管(CRT)或液晶显示器(LCD),以向用户显示信息。电子系统800还包括字母数字输入设备860,其包括字母数字和其他键,可耦合到总线805以传送信息和命令选择给处理器810。另一类型的用户输入设备为光标控制器870,如触控板、鼠标、轨迹球或光标方向键,以传送方向信息和命令选择给处理器810并在显示器850上控制光标移动。
电子系统800进一步包括一个或多个网络接口880以提供对网络如局域网的访问。网络接口880包括例如具有天线885的无线网络接口,该天线885可表示一个或多个天线。电子系统800可包括多个无线网络接口,如WiFi、蓝牙和移动电话接口的组合。网络接口880还可包括例如有线网络接口,以通过网络电缆887与远程设备进行通信,该网络电缆可以是例如以太网电缆、同轴电缆、光纤电缆、串行电缆或并行电缆。
在一实施例中,网络接口880提供对局域网的访问,例如,通过遵循IEEE802.11b和/或IEEE802.11g标准,和/或无线网络接口提供对个人区域网络的访问,例如,通过遵循蓝牙标准。其他无线网络接口和/或协议也可以得到支持。
除了或者替代通过无线LAN标准的通信,网络接口880使用例如时分多址(TDMA)协议、全球移动通信系统(GSM)协议、码分多址(CDMA)协议和/或任何其他类型的无线通信协议提供无线通信。
在一些实施例中可使用一个或多个应用编程接口(API)。API为由程序代码组件或硬件组件(以下称为“API-执行组件”)执行的接口,其允许不同的程序代码组件或硬件组件(以下称为“API-调用组件”)访问和使用一个或多个功能、方法、过程、数据结构、类和/或由API-执行组件提供的其他服务。API可定义在API-调用组件和API-执行组件之间传递的一个或多个参数。
API允许API-调用组件的开发者(可以是第三方开发者)利用由API-执行组件提供的指定特征。可以有一个API-调用组件,也可以有多个这样的组件。API可以是计算机系统或程序库为了支持从应用请求服务而提供的源代码接口。操作系统(OS)可具有多个API以允许运行在该OS上的应用调用那些API中的一个或多个,并且,服务(如程序库)可具有多个API以允许使用该服务的应用调用那些API中的一个或多个。API可以以编程语言的形式指定,当构建应用时可解释或编译该编程语言。
在一些实施例中,API-执行组件可提供不止一个API,每一个API都为由API-执行组件执行的功能提供不同的观点或具有访问不同方面的功能方面的不同方面。例如,API-执行组件的一个API可以提供第一组功能并对第三方开发者可见,API-执行组件的另一个API可以被隐藏(不可见)并提供第一组功能的子集以及另一组功能,如不在第一组功能中的测试或调试功能。在其他实施例中,API-执行组件自身可通过隐含的API调用一个或多个其他组件,因此其既是API-调用组件又是API-执行组件。
API定义当访问和使用API-执行组件的指定特征时API-调用组件使用的语言和参数。例如,API-调用组件通过由该API表示的一个或多个API调用和激活(例如通过函数或方法调用体现)来访问API-执行组件的指定特征,并通过API调用或激活使用参数传递数据和控制信息。响应于来自API-调用组件的API调用,API-执行组件通过该API返回一值。虽然API定义API调用的语法和结果(例如,如何调用API调用和该API调用的作用),但API不能显示API调用如何完成由该API调用指定的特征。不同的API调用通过一个或多个应用编程接口在调用(API-调用组件)和API-执行组件之间传输。API调用的传输可包括发布、启动、激活、调用、接收、返回或响应函数调用或消息;也就是说,传输既可描述API-调用组件的动作,也可描述API-执行组件的动作。函数调用或API的其他调用可通过参数列表或其他结构发送或接收一个或多个参数。参数可以是常量、关键词、数据结构、对象、对象类、变量、数据类型、指针、数组、列表、指向函数或方法的指针,或引用由API所传递的数据或其他项目的其他方法。
另外,数据类型或类可由API提供并由API-执行组件执行。因此,API-执行组件可声明变量、使用指针通过使用API中提供的定义来使用或实例化这种类型和类的常量值。
通常,API可用于访问由API-执行组件提供的服务或数据,或用于启动由API-执行组件提供的操作或计算的执行。举例来说,API-执行组件和API-调用组件每个都可以是操作系统、库、设备驱动器、API、应用或其他模块中的任何一个(应当理解的是,API-执行组件和API-调用组件彼此之间可以是相同或不同的模块类型)。在某些情况下,API-执行组件至少部分以固件、微代码或其他硬件逻辑来体现。在一些实施例中,API可允许客户端程序使用由软件开发包(SDK)库所提供的服务。在其他实施例中,应用或其他客户端程序可使用由应用框架提供的API。在这些实施例中,应用或客户端程序可将调用合并到由SDK和API提供的函数或方法中,或者使用在SDK中定义并由API提供的数据类型或对象。在这些实施例中,应用框架可为回应由框架定义的不同事件的程序提供事件循环。API允许应用使用应用框架指定事件和回应事件。在一些实施例中,API调用可向应用汇报硬件设备的性能和状态,包括那些涉及例如输入性能和状态、输出性能和状态、处理能力、电力状态、存储器容量和状态、通信能力等方面,并且API部分由固件、微代码或在硬件组件上部分执行的其他低级逻辑来实现。
API-调用组件可以是本地组件(即,与API-执行组件在相同数据处理系统中),也可以是通过API与网络中的API-执行组件进行通信的远程组件(即,在与API-执行组件不同的数据处理系统中)。应当理解的是,API-执行组件也可充当API-调用组件(即,它可对由不同API-执行组件揭示的API进行API调用),并且API-调用组件也可通过执行对不同API-调用组件可见的API来充当API-执行组件。
API可允许以不同编程语言编写的多个API-调用组件与API-执行组件通信(因此,API可包含用于在API-执行组件和API-调用组件之间翻译调用和返回的特征);然而,API可以以特定编程语言的形式来实现。在一实施例中,API-调用组件可以调用来自不同提供商的API,如来自操作系统提供商的一组API和来自插件提供商的另一组API以及来自另一个提供商(例如,软件库提供商)或该另一组API的创建者的另一组API。
图18为示出一示例性API结构的框图,其可被用于本发明的一些实施例中。如图18所示,API结构1800包括执行API1820的API-执行组件1810(例如,操作系统、库、设备驱动器、API、应用、软件或其他模块)。API1820指定一个或多个函数、方法、类、对象、协议、数据结构、格式和/或由API-调用组件1830使用的API-执行组件的其他特征。API1820可以指定至少一个调用惯例,该惯例指定API-执行组件中的函数如何从API-调用组件接收函数以及该函数如何返回结果到API-调用组件。API-调用组件1830(例如,操作系统、库、设备驱动器、API、应用、软件或其他模块)通过API1820执行API调用以访问和使用由API1820指定的API-执行组件1810的特征。响应于API调用,API执行组件1810通过API1820返回一值到API-调用组件1830。
可以理解,API-执行组件1810可包括附加函数、方法、类、数据结构、和/或没有通过API1820指定并且对API-调用组件1830不可用的其他特征。应当理解的是,API-调用组件1830可与API-执行组件1810在同一系统上,或者可远程定位并使用网络上的API1820访问API-执行组件1810。虽然图18示出与API1820交互的单个API-调用组件1830,但应当理解,以不同于API-调用组件1830的语言(或与其相同的语言)编写的其他API-调用组件也可以使用API1820。
API-执行组件1810、API1820和API-调用组件1830可被存储于机器可读的非暂时性存储介质,该存储介质包括用于以机器(例如,计算机或其他数据处理系统)可读的形式存储信息的任何机制。例如,机器可读介质包括磁盘、光盘、随机存取存储器、只读存储器、闪速存储器设备等。
在图19(“软件堆栈”)中,一个示例性实施例,应用可使用多个服务API调用服务1或2并使用多个操作系统API来调用操作系统(OS)。服务1和2可使用多个操作系统API调用操作系统。
注意到服务2有两个API,其中一个(服务2的API1)接收来自应用1的调用并返回值到应用1中,另一个(服务2的API2)接收来自应用2的调用并返回值到应用2。服务1(例如,可以是软件库)调用操作系统API1并接收来自操作系统API1的返回值,服务2(例如,可以是软件库)调用操作系统API1和操作系统API2并接收来自操作系统API1和操作系统API2的返回值。应用2调用操作系统API2并接收来自操作系统API2的返回值。
在本说明书中引用的“一个实施例”或“一实施例”表示结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。在本说明书中不同位置出现的短语“在一实施例中”不一定都指的是同一个实施例。
在之前的说明书中,本发明通过参考特定实施例的方式来描述。但是,很明显在不背离本发明宽泛的精神和范围的前提下,可以对其做出各种修改和变化。相应地,说明书和附图被认为是阐述意义而不是限制意义。
在一实施例中,一种存储可执行指令的机器可读的非暂时性存储介质,当指令被数据处理系统执行时,可使得该系统执行如下方法:
在客户端设备上执行一用户应用以呈现媒体文件并控制所述媒体文件的呈现;以及
在所述客户端设备上运行一媒体服务进程,独立于所述用户应用,以取回指定所述媒体文件的播放列表以及所述媒体文件可用的媒体源,从所述媒体源取回所述媒体文件,并对取回的所述媒体文件进行解码以及将来自所述媒体文件的解码内容提供给所述用户应用。
在一实施例中,其中所述媒体服务进程和所述用户应用对存储器控制、存储器空间、存储器分配、文件系统控制和网络控制共享相同的特权。
在一实施例中,其中所述用户应用提供一用户界面以控制所述显示并且通过一应用编程接口(API)与所述媒体服务进程通信,并且其中所述用户应用和所述媒体服务进程是不同的软件进程。
在一实施例中,其中所述媒体服务进程取回媒体文件,所述媒体文件是使用由所述用户应用处理或者由所述用户应用取回并处理的密钥进行解码的。
在一实施例中,其中所述用户应用安装一客户端证书,所述证书用于在创建连接以下载解密密钥时应答服务器的询问。
在一实施例中,其中所述播放列表包含用于使用自定义URL方案的解密密钥的URL。
在一实施例中,其中当所述媒体服务进程下载或解密媒体文件失败时,所述媒体服务进程通过所述API调用所述用户应用以使得所述用户应用取回一个或多个返回到所述媒体服务进程的密钥。
在一实施例中,其中所述媒体服务进程取回媒体文件,所述媒体文件是使用由所述用户应用处理或者由所述用户应用取回并处理的密钥进行解码的。
在一实施例中,其中所述用户应用安装一客户端证书,所述证书用于在创建连接以下载解密密钥时应答服务器的询问。
在一实施例中,其中所述播放列表包含用于使用自定义URL方案的解密密钥的URL。
在一实施例中,由数据处理系统执行的机器执行方法,所述方法包括:
在客户端设备上执行一用户应用以呈现媒体文件并控制所述媒体文件的呈现;以及
在所述客户端设备上运行的一媒体服务进程,独立于用户应用,以取回指定所述媒体文件的播放列表以及所述媒体文件可用的媒体源,从所述媒体源取回所述媒体文件,并对取回的所述媒体文件进行解码以及将来自所述媒体文件的解码内容提供给所述用户应用。
在一实施例中,其中所述媒体服务进程和所述用户应用对存储器控制、存储器空间、存储器分配、文件系统控制和网络控制共享相同的特权。
在一实施例中,其中所述用户应用和所述媒体服务进程通过一API进行通信,并且其中所述用户应用和所述媒体服务进程是不同的软件进程。
在一实施例中,其中所述媒体服务进程取回媒体文件,所述媒体文件是使用由所述用户应用处理或者由所述用户应用取回并处理的密钥进行解码的。
在一实施例中,其中所述用户应用安装一客户端证书,所述证书用于在创建连接以下载解密密钥时应答服务器的询问。
在一实施例中,其中所述播放列表包含用于使用自定义URL方案的解密密钥的URL。
在一实施例中,其中所述媒体服务进程获取媒体文件,所述媒体文件是使用由所述用户应用处理或者由所述用户应用取回并处理的密钥进行解码的,并且其中所述用户应用安装一客户端证书,所述证书用于在创建连接以下载解密密钥时应答服务器的询问,并且其中所述播放列表包含用于使用自定义URL方案的解密密钥的URL。
在一实施例中,一种数据处理系统包括:
用于在客户端设备上执行一用户应用以呈现媒体文件并控制所述媒体文件的呈现的装置;以及
用于在所述客户端设备上运行一媒体服务进程的装置,其独立于用户应用,用以取回指定所述媒体文件的播放列表以及所述媒体文件可用的媒体源,从所述媒体源取回所述媒体文件,并对取回的所述媒体文件进行解码以及将来自媒体文件的解码内容提供给所述用户应用。
在一实施例中,其中所述媒体服务进程和所述用户应用对存储器控制、存储器空间、存储器分配、文件系统控制和网络控制共享相同的特权。
在一实施例中,一种存储可执行指令的机器可读的非暂时性存储介质,当所述指令被数据处理系统执行时,可使得该系统执行如下方法:
在客户端设备上执行一用户应用以呈现媒体文件并控制所述媒体文件的呈现;以及
在所述客户端设备上运行一媒体服务进程,独立于用户应用,以取回指定所述媒体文件的播放列表以及所述媒体文件可用的媒体源,从所述媒体源取回所述媒体文件,并对取回的所述媒体文件进行解码;
通过所述媒体服务器接收所述播放列表中的一URL,所述URL涉及所述媒体服务器使用的用于解密至少一个所述媒体文件的数据;
由所述媒体服务器调用所述用户应用以处理所述URL来获得所述媒体服务器使用的所述数据;
响应于所述用户应用处理所述URL以获得所述数据而接收所述数据;
使用所述数据解码至少一个所述媒体文件。
在一实施例中,其中所述数据是一解密密钥。
在一实施例中,一种存储在机器可读的非暂时性介质上的用户应用执行由所述用户应用执行的权利要求20中的那些部分。
在一实施例中,一种存储在机器可读的非暂时性介质上的媒体服务器执行由所述媒体服务器进程执行的权利要求20中的那些部分。
在一实施例中,其中所述用户应用使用一自定义URL,所述URL用于保护通过所述用户应用提供的内容。
在一实施例中,其中一注册表存储所述自定义URL和所述用户应用之间的关系,并且其中当所述媒体服务器不能解码媒体文件时,所述媒体服务器检查所述注册表以调用所述用户应用。
在一实施例中,其中所述自定义URL由一EXT-X-KEY标签指定。
在一实施例中,其中所述用户应用由所述媒体文件的提供者授权。
在一实施例中,其中所述用户应用将自定义URL和所述用户应用之间的关系注册到一注册表,所述自定义URL用于为所述媒体文件取回一个或多个解密密钥,并且其中当所述用户应用第一次被安装或第一次被启动时,所述用户应用将所述关系注册到所述注册表。
在一实施例中,其中所述关系将所述媒体服务器指向使用所述自定义URL的所述用户应用。
在一实施例中,其中所述自定义URL不被所述媒体服务器所支持。
在一实施例中,其中所述自定义URL用于取回被提供给所述媒体服务器以对所述播放列表中的所述媒体文件进行解码的所述解密密钥。
在一实施例中,其中所述用户应用对自定义URL的解析取决于如下条件中的至少一个:(a)所述用户应用的相对于所述媒体文件中的内容的特权等级;(b)所述媒体文件中的内容;(c)显示所述媒体文件中的内容的请求的日期或时间或日期和时间。
在一实施例中,其中所述解密密钥通过所述用户应用被返回给所述媒体服务器。
在一实施例中,一种存储可执行指令的机器可读的非暂时性存储介质,当指令被数据处理系统执行时,可使得该系统执行如下方法:
在客户端设备上执行一用户应用,所述用户应用被配置以控制所述媒体文件的显示;以及
在所述客户端设备上运行一媒体服务进程,独立于用户应用,以取回指定所述媒体文件的播放列表以及所述媒体文件可用的媒体源,从所述媒体源取回所述媒体文件,并对取回的所述媒体文件进行解码;
通过所述媒体服务器接收在所述播放列表中或用于所述播放列表的一URL,所述URL涉及被用于处理至少一个所述媒体文件的数据;
由所述媒体服务器调用所述用户应用以处理所述URL来获取远程媒体服务器使用的数据;
响应于所述用户应用处理所述URL以获得所述数据而接收所述数据;
传输所述数据到所述远程媒体服务器。
在一实施例中,其中所述URL是用于其中一个播放列表的一个自定义URL或者是用于所述播放列表中至少一个媒体文件的一个解密密钥,并且其中所述用户应用使用所述自定义URL保护通过所述用户应用提供的内容。
在一实施例中,其中一注册表存储所述自定义URL和所述用户应用之间的关系,并且其中当所述媒体服务器不能处理所述URL时,所述媒体服务器检查所述注册表以调用所述用户应用。
在一实施例中,其中所述远程媒体服务器是一机顶盒的一部分,被配置以取回和处理一播放列表,并被配置以产生被传输回所述媒体服务器的一消息,以请求对所述自定义URL的解析,并且其中传输数据到所述媒体服务器提供了对所述自定义URL的解析。
在一实施例中,一种提供输出给一显示装置的设备,该设备包括:
一远程重放组件,被配置以允许所述设备由另一设备创建以控制;
一媒体服务器组件,所述媒体服务器组件被配置以取回并处理指示媒体文件的播放列表以及取回并解码所述播放列表中指示的媒体文件,并且所述媒体服务器组件被配置以产生一消息以解析一自定义URL,所述URL或者表示所述播放列表,或者表示所述播放列表中的数据,并且所述远程重放组件被配置以将所述消息传递给所述另一设备;
一输出装置,用于为所述显示装置提供视频数据或音频数据或者视频数据和音频数据,所述输出装置耦合到提供所述视频数据或音频数据或者所述视频数据和音频数据的所述媒体服务器组件;
一输入/输出(I/O)接口,耦合到所述远程重放组件,所述I/O接口被配置以从所述媒体服务器组件传递所述消息以解析一自定义URL,并且所述I/O接口被配置以将所述自定义URL的解析传递到所述媒体服务器组件,以允许所述输出提供所述视频数据或音频数据或者所述视频数据和音频数据,并且其中所述另一设备上的应用解析所述自定义URL并通过I/O接口提供所述URL的解析。
在一实施例中,一种数据处理系统包括:
用于在一客户端设备上执行一用户应用以呈现媒体文件并控制所述媒体文件的呈现的装置;以及
用于在所述客户端设备上运行一媒体服务进程的装置,其独立于所述用户应用,用以取回指定所述媒体文件的播放列表以及所述媒体文件可用的媒体源,从所述媒体源取回所述媒体文件,并对取回的所述媒体文件进行解码以将来自所述媒体文件的解码内容提供给所述用户应用。
在一实施例中,其中所述媒体服务进程和所述用户应用对存储器控制、存储器空间、存储器分配、文件系统控制和网络控制共享相同的特权。
在一实施例中,其中所述用户应用提供一用户界面以控制所述显示并且通过一应用编程接口(API)与所述媒体服务进程通信,并且其中所述用户应用和所述媒体服务进程是不同的软件进程。
在一实施例中,其中所述媒体服务进程取回媒体文件,所述媒体文件是使用由所述用户应用处理或者由所述用户应用取回并处理的密钥进行解码的。
在一实施例中,其中所述用户应用安装一客户端证书,所述证书用于在创建连接以下载解密密钥时应答服务器的询问。
在一实施例中,其中所述播放列表包含用于使用自定义URL方案的解密密钥的URL。
在一实施例中,其中当所述媒体服务进程下载或解密媒体文件失败时,所述媒体服务进程通过所述API调用所述用户应用以使得所述用户应用取回一个或多个返回到所述媒体服务进程的密钥。
在一实施例中,其中所述媒体服务进程取回媒体文件,所述媒体文件是使用由所述用户应用处理或者由所述用户应用取回并处理的密钥进行解码的。
在一实施例中,其中所述用户应用安装一客户端证书,所述证书用于在创建连接以下载解密密钥时应答服务器的询问。
在一实施例中,其中所述播放列表包含用于使用自定义URL方案的解密密钥的URL。
在一实施例中,一种数据处理系统包括:
一客户端设备上的一用户应用,用以显示媒体文件并控制所述媒体文件的显示;以及
所述客户端设备上的一媒体服务进程,其独立于用户应用,用以取回指定所述媒体文件的播放列表以及所述媒体文件可用的媒体源,从所述媒体源取回所述媒体文件,并对取回的所述媒体文件进行解码以及提供来自所述媒体文件的解码内容给所述用户应用。
在一实施例中,其中所述媒体服务进程和所述用户应用对存储器控制、存储器空间、存储器分配、文件系统控制和网络控制共享相同的特权,并且其中所述用户应用和所述媒体服务进程通过一API进行通信,并且其中所述用户应用和所述媒体服务进程是不同的软件进程。
在一实施例中,其中所述媒体服务进程取回媒体文件,所述媒体文件是使用由所述用户应用处理或者由所述用户应用取回并处理的密钥进行解码的。
在一实施例中,其中所述用户应用安装一客户端证书,所述证书用于在创建连接以下载解密密钥时应答服务器的询问。
在一实施例中,其中所述播放列表包含用于使用自定义URL方案的解密密钥的URL。
在一实施例中,一种数据处理系统包括:
用于在客户端设备上执行一用户应用以显示媒体文件并控制所述媒体文件的显示的装置;以及
用于在所述客户端设备上运行一媒体服务进程的装置,其独立于所述用户应用,用以取回指定所述媒体文件的播放列表以及所述媒体文件可用的媒体源,从所述媒体源取回所述媒体文件,并对取回的所述媒体文件进行解码;
用于通过所述媒体服务器接收一URL的装置,所述URL涉及所述媒体服务器使用的用于解密或显示至少一个所述媒体文件的数据;
用于由所述媒体服务器调用所述用户应用以处理所述URL以获得所述媒体服务器使用的所述数据的装置;
用于响应于所述用户应用处理所述URL以获得所述数据而接收所述数据的装置;
用于使用所述数据解码至少一个所述媒体文件的装置。
在一实施例中,其中所述数据是一解密密钥。
在一实施例中,其中所述用户应用使用一自定义URL,所述URL用于保护通过所述用户应用提供的内容。
在一实施例中,其中一注册表存储所述自定义URL和所述用户应用之间的关系,并且其中当所述媒体服务器不能解码一媒体文件时,所述媒体服务器检查所述注册表以调用所述用户应用。
在一实施例中,其中所述自定义URL由一EXT-X-KEY标签指定。
在一实施例中,其中所述用户应用由所述媒体文件的一提供者授权。
在一实施例中,其中所述用户应用将自定义URL和所述用户应用之间的关系注册到一注册表,所述自定义URL用于为所述媒体文件取回一个或多个解密密钥,并且其中当所述用户应用第一次被安装或第一次被启动时,所述用户应用将所述关系注册到所述注册表。
在一实施例中,其中所述关系将所述媒体服务器指向使用所述自定义URL的所述用户应用。
在一实施例中,其中所述自定义URL不被所述媒体服务器所支持。
在一实施例中,其中所述自定义URL用于取回被提供给所述媒体服务器以对所述播放列表中的所述媒体文件进行解码的所述解密密钥。
在一实施例中,其中所述用户应用对自定义URL的解析取决于如下条件中的至少一个:(a)所述用户应用的相对于所述媒体文件中的内容的特权等级;(b)所述媒体文件中的内容;(c)显示所述媒体文件中的内容的请求的日期或时间或日期和时间。
在一实施例中,其中所述解密密钥通过所述用户应用被返回给所述媒体服务器。
附录
下面的附录是根据本发明一个特定实施例的协议草案说明。需要理解的是该附录中的一些关键词(比如:必须,不允许,应当,不得,等等)的使用只适用于该特定实施例,而不适用于本发明描述的其他实施例。
摘要
本文档描述了一种用于传输无限多媒体数据流的协议。详述了文件的数据格式以及流的服务器(发送者)和客户端(接收者)将采取的动作。描述了该协议的第二版本。
目录
1.引言
2.概述
3.播放列表文件
3.1引言
3.2新标签
3.2.1EXT-X-TARGETDURATION
3.2.2EXT-X-MEDIA-SEQUENCE
3.2.3EXT-X-KEY
3.2.4EXT-X-PROGRAM-DATE-TIME
3.2.5EXT-X-ALLOW-CACHE
3.2.6EXT-X-ENDLIST
3.2.7EXT-X-STREAM-INF
3.2.8EXT-X-DISCONTINUITY
3.2.9EXT-X-VERSION
4.媒体文件
5.密钥文件
5.1引言
5.2用于AES-128的IV
6.客户端/服务器操作
6.1引言
6.2服务器进程
6.2.1引言
6.2.2滑动窗口播放列表
6.2.3加密媒体文件
6.2.4提供不同的流
6.3客户端进程
6.3.1引言
6.3.2加载播放列表文件
6.3.3播放播放列表文件
6.3.4重新加载播放列表文件
6.3.5确定下一个将要加载的文件
6.3.6解密被加密的媒体文件
7.协议版本兼容性
8.示例
8.1引言
8.2简单播放列表文件
8.3滑动窗口播放列表,使用HTTPS
8.4带加密媒体文件的播放列表文件
8.5不同播放列表文件
9.安全性考虑
10.参考文献
规范性文献
参考性文献
1.引言
本文档描述了一种用于传输无限多媒体数据流的协议。该协议支持媒体数据的加密和流替代版本(比如比特率)的提供。媒体数据可以在创建后很快被传输,从而允许近似实时的播放。数据通常由HTTP承载【RFC2616】。
在11节中列举描述比如HTTP的相关标准的外部参考文献。
2.概述
一多媒体演示(或呈现)被一个URI【FRC3986】指定到播放列表文件,该文件是媒体URI和信息标签的序列表。每个媒体URI涉及一个媒体文件,该文件是一单独的、连续的流的分段。
为了播放流,客户端首先获取播放列表文件,然后获取并播放该播放列表中的每个媒体文件。如同该文档中描述的,客户端重新加载播放列表文件来发现其他的分段。
该文档中的关键词“必须”,“不允许”,“必需的”,“应当”,“不得”,“应该”,“不应该”,“推荐的”,“可能”和“可选择的”将按照RFC2119【RFC2119】中的描述予以解释。
3.播放列表文件
3.1引言
播放列表必须是扩展的M3U播放列表文件【M3U】。该文档通过定义额外的标签来扩展M3U文件格式。
M3U播放列表是包含单独的行的文本文件。行或者是以单个LF字母结束,或者是以一个LF字母跟随的CR字母结束。每一行是一URI、一空格或者由注释符‘#’开头。忽略空白行。除非元素中有特别说明,否则空格是不允许出现的。
一个URI行标识一个媒体文件或者一个不同的播放列表文件(参见章节3.2.7)
URI可以是相关的。必须针对包含相关URI的播放列表文件的URI来解析该相关URI。以注释符‘#’开头的行或者是注释,或者是标签。标签以#EXT开头。所有其他以‘#’开头的行是注释并且应该被忽略。
播放列表文件的持续时间是它里面媒体文件持续时间的总和。
名字以.m3u8结尾和/或具有HTTP内容类型“application/vnd.apple.mpegurl”的M3U播放列表文件在UTF-8【RFC3629】中被编码。名字以.m3u结尾和/或具有HTTP内容类型[RFC2616]“audio/mpegurl”的文件在US-ASCII【US_ASCII】中被编码。
播放列表文件必须具有以.m3u8结尾和/或具有内容类型“application/vnd.apple.mpegurl”(如果通过HTTP传输)的文件名,或者具有以.m3u结尾和/或具有HTTP内容类型“audio/mpegurl”(兼容性考虑)的文件名。
扩展的M3U文件格式定义两种标签:EXTM3U和EXTINF。扩展的M3U文件的首行必须是#EXTM3U,以此与基本的M3U文件相区别。
EXTINF是一记录标记,用以描述由跟随它的URI标识的媒体文件。每个媒体文件URI必须在EXTINF标签之后。其格式为:
#EXTINF:<持续时间>,<标题>
“持续时间”为整数,以秒为单位指定媒体文件的持续时间。持续时间应该被四舍五入到最近的整数。逗号后面该行的剩余部分是该媒体文件的标题,它是一个该媒体片段的可选的可读信息性标题。
该文档定义了如下新标签:EXT-X-TARGETDURATION,EXT-X-MEDIA-SEQUENCE,EXT-X-KEY,EXT-X-PROGRAM-DATE-TIME,EXT-X-ALLOW-CACHE,EXT-X-STREAM-INF,EXT-X-ENDLIST,EXT-X-DISCONTINUITY和EXT-X-VERSION。
3.2新标签
3.2.1EXT-X-TARGETDURATION
EXT-X-TARGETDURATION标签指示最大媒体文件的持续时间。播放列表中每个媒体文件的EXTINF持续时间必须小于或等于目标持续时间。该标签必须在播放列表中出现一次,其格式为:
#EXT-X-TARGETDURATION:<s>
其中,s是一个整数,代表以秒为单位的目标持续时间。
3.2.2EXT-X-MEDIA-SEQUENCE
播放列表中的每个媒体文件URI有一个唯一的序列号。一个URI的序列号等于它前面一个URI的序列号加一。
EXT-X-MEDIA-SEQUENCE标签指示出现在播放列表文件中的第一个URI的序列号。其格式为:
#EXT-X-MEDIA-SEQUENCE:<number>
一个播放列表文件不允许包含超过一个EXT-X-MEDIA-SEQUENCE标签。如果该播放列表文件不包含EXT-X-MEDIA-SEQUENCE标签,则播放列表中第一个URI的序列号应认为0。
一个媒体文件的序列号不要求出现在它的URI中。
参看章节6.3.2和6.3.5中关于处理EXT-X-MEDIA-SEQUENCE标签的信息。
3.2.3EXT-X-KEY
媒体文件可能被加密。EXT-X-KEY标签提供解密它之后的媒体文件所需的信息。其格式为:
#EXT-X-KEY:METHOD=<method>[,URI=“<URI>“][,IV=<IV>]
该方法属性指示加密方法。定义了两种加密方法:无(NONE)和AES-128。
无(NONE)的加密方法意味着媒体文件没有被加密。如果加密方法为无(NONE),URI和IV的属性不允许显示。
AES-128加密方法表示媒体文件被使用带128位密钥和PKCS7填充【RFC5652】的高级加密标准【AES_128】加密。如果加密方法是AES-128,URI属性必须显示。IV属性可以显示;参看章节5.2。
如果URI属性显示,则它指示如何获取密钥。如果IV属性显示,则它指定和密钥一起使用的初始化矢量。IV属性出现在协议版本2中。
一个新的EXT-X-KEY取代之前任何的EXT-X-KEY。
如果播放媒体文件不包含EXT-X-KEY标签,则媒体文件没有被加密。
参看章节5关于密钥文件的格式。更多关于媒体文件加密的信息参看章节5.2,6.2.3和6.3.6。
3.2.4EXT-X-PROGRAM-DATE-TIME
EXT-X-PROGRAM-DATE-TIME标签将下一媒体文件的开头和绝对日期和/或者时间结合起来。日期/时间表示法是ISO/IEC8601:2004【ISO_8601】,并且应该说明时区。比如:
#EXT-X-PROGRAM-DATE-TIME:<YYYY-MM-DDThh:mm:ssZ>
更多关于EXT-X-PROGRAM-DATE-TIME标签的信息参看章节6.2.1和6.3.3。
3.2.5EXT-X-ALLOW-CACHE
EXT-X-ALLOW-CACHE标签指示客户端是否可以或者不允许缓存下载的媒体文件用以稍后重播。它可以出现在播放列表文件的任何位置;不允许出现超过一次。其格式为:
#EXT-X-ALLOW-CACHE:<YES|NO>
更多关于EXT-X-ALLOW-CACHE标签的信息参看章节6.3.3
3.2.6EXT-X-ENDLIST
EXT-X-ENDLIST标签指示再没有媒体文件将被添加到播放列表文件中。它可以出现在播放列表文件的任何位置;不允许出现超过一次。其格式为:
#EXT-X-ENDLIST
3.2.7EXT-X-STREAM-INF
EXT-X-STREAM-INF标签指示播放列表文件中的下一个URI识别另一个播放列表文件。其格式为:
#EXT-X-STREAM-INF:[attribute=value][,attribute=value]*<URI>
在同一EXT-X-STREAM-INF标签中,一个属性不允许出现超过一次。如下属性被定义:
BANDWIDTH=<n>
其中n是每秒的比特数。它必须是出现或将出现在播放列表中的每一媒体文件所有比特率的上限,容器开销也被计算在内。
PROGRAM-ID=<i>
其中i是一个数字,它唯一识别在播放列表文件范围内的一特别的演示。
一个播放列表文件可以包含具有相同PROGRAM-ID的多个EXT-X-STREAM-INF标签来识别相同演示的不同编码。这些不同的播放列表可以包含额外的EXT-X-STREAM-INF标签。
CODECS=”[format][,format]
其中每一个格式指定出现在播放列表文件中的媒体文件中的媒体样本类型。
有效的格式标识符是那些在ISO文件格式名空间中被RFC4281【RFC4281】定义的。
RESOLUTION=<N>x<M>
其中N是流中视频的近似编码水平分辨率,以像素数表示。M是近似编码垂直分辨率。
3.2.8EXT-X-DISCONTINUITY
EXT-X-DISCONTINUITY标签指示它之前一个媒体文件和它之后一个媒体文件之间编码的不连续性。可能改变的特性集是:
О文件格式
О轨道的数量和类型
О编码参数
О编码序列
О时间戳序列
其格式为:
#EXT-X-DISCONTINUITY
更多关于EXT-X-DISCONTINUITY标签的信息参看章节4,6.2.1和6.3.3。
3.2.9EXT-X-VERSION
EXT-X-VERSION标签指示播放列表文件的兼容性版本。播放列表文件、与其相关的媒体以及其服务器必须服从描述由标签值指示的协议版本的文档的最新版本的所有条款。
其格式是:
#EXT-X-VERSION:<n>
其中n为整数,指示协议版本。
一个播放列表文件不允许包含超过一个EXT-X-VERSION标签。不包含EXT-X-VERSION标签的播放列表文件必须服从协议的版本1。
4.媒体文件
播放列表文件中的每个媒体文件URI必须标识一个媒体文件,该媒体文件是整个演示的一个片段。每个媒体文件必须被格式化为一个MPEG-2传输流或者一个MPEG-2音频基本流【ISO_13818】。
传输流文件必须包含一个单独的MPEG-2程序。在每个文件的开头应该有一个程序关联表和一个程序映射表。一个包含视频的文件应该具有至少一个密钥帧和足够的信息以完整地初始化视频解码器。
一个播放列表中的媒体文件必须是具有前一序列号的媒体文件结尾处的编码流的延续,除非它是出现在播放列表文件中的第一个媒体文件或者它在EXT-X-DISCONTINUITY标签之后。
客户端应该要被准备用来处理特定类型的多个轨道(比如音频或视频)。没有其它优先权的客户端应该选择它能播放的具有最小数字PID的轨道。客户端必须忽略传输流中他们不能识别的私有流。
媒体文件中的流的样本编码参数和相应的跨多个媒体文件的流之间的样本编码参数应该保持一致。但是客户端应该解决它们遇到的解码变化。比如缩放视频内容以适应分辨率的变化。
5.密钥文件
5.1引言
带有URI属性的EXT-X-KEY标签标识密钥文件。一个包含加密密钥的密钥文件必须用来解密播放列表中的后续媒体文件。
AES-128加密方法使用16字节密钥。该密钥文件的格式仅仅是二进制格式的大量16字节排列。
5.2用于AES-128的IV
128位AES在加密和解密时需要被供给相同的16字节初始化矢量(IV)。改变这个IV会增加密码的强度。
如果EXT-X-KEY标签具有IV属性,当用那个密钥加密或解密时,实施过程必须使用属性值作为IV。该属性值必须作为一个128位十六进制数解析,并且必须以0x或者0X作为前缀。
如果EXT-X-KEY标签不具有IV属性,当加密或者解密媒体文件时,实施过程必须使用媒体文件的序列号作为IV。序列号的大端二进制表示法将会放进一个16字节的缓冲区并且填充(在左边)零。
6.客户端/服务器操作
6.1引言
本章描述了服务器如何生成播放列表和媒体文件,以及客户端应该如何下载并播放它们。
6.2服务器操作
6.2.1引言
MPEG-2流的产生超出了该文档的阐述范围,在此简单地一个包含演示的连续流的来源。
服务器必须将流分割成持续时间近似相同的单个媒体文件。服务器应该尝试在支持单个媒体文件的有效解码的点分割流,比如在包和密钥帧的边界。
服务器必须为每一个媒体文件创建一URI以允许它的客户端获取文件。
服务器必须创建一个播放列表文件。该播放列表文件必须符合章节3中描述的格式。服务器要提供的每个媒体文件的URI必须按照将要播放的顺序出现在播放列表中。如果它的URI在播放列表文件中,则对于客户端整个媒体文件必须是可用的。
播放列表文件必须包含一个EXT-X-TARGETDURATION标签。它必须标识任何添加到该播放列表文件中的媒体文件的最大EXTINF值。对于整个演示,它的值必须保持一致。典型的目标持续时间是10秒。
播放列表文件应该包含一个EXT-X-VERSION标签用于标识流的兼容性版本。它的值应该是服务器,播放列表文件和相关媒体文件都遵循的最小协议版本。
服务器必须为每一个媒体文件创建一URI以允许它的客户端获取文件。
如果该播放列表文件是由HTTP发布,服务器应该支持客户端的使用“gzip”内容编码的请求。
播放列表文件的变动必须从客户端角度自动执行。
播放列表中的每一个媒体文件URI必须以标识媒体文件的四舍五入持续时间的EXTINF标签作为前缀。
服务器可以通过将EXT-X-PROGRAM-DATE-TIME标签作为它URI前缀的方式将绝对日期和时间与一个媒体文件结合起来。日期和时间的值提供了一个媒体的时间线的信息性映射给一个合适的挂钟时间。该映射可以作为搜索、显示或其他目的的基础。如果服务器提供了这样的一个映射,它应该在播放列表文件中的每个EXT-X-DISCONTINUITY标签后放置一个EXT-X-PROGRAM-DATE-TIME标签。
如果播放列表包含演示的最终媒体文件,则播放列表必须包含EXT-X-ENDLIST标签。
如果播放列表不包含EXT-X-ENDLIST标签,服务器必须生成一个包含至少一个新媒体文件URI的可用的放媒体文件的新版本播。它必须在相对于播放列表的先前版本可用的时间是可用的:不早于该时间之后的0.5倍的目标持续时间,不晚于该时间之后的1.5倍的目标持续时间。
如果服务器希望移除整个演示,它必须使得该播放列表文件对于客户端不可用。它应该确保播放列表文件中所有的媒体文件在移除时保持对客户端可用的时间至少为播放列表文件的持续时间。
6.2.2滑动窗口播放列表
服务器可以将媒体文件的可用性限制到只给那些最近添加到播放列表中的。为此,播放列表文件必须始终恰好包含一个EXT-X-MEDIA-SEQUENCE标签。对于每个从播放列表文件中移除的媒体文件URI,它的值必须增加1。
媒体文件URI必须按照它们被添加的顺序从播放列表文件中移除。
当服务器从播放列表中移除一个媒体文件URI,媒体文件应该保持对于客户端的可用性一段时间,该段时间等于媒体文件的持续时间加上媒体文件出现其中的最长播放列表文件的持续时间。
如果服务器计划在媒体文件通过HTTP分发给客户端后移除它,它应该确保HTTP响应包含反映计划生存时间的一个过期标头。
不包含EXT-X-ENDLIST标签的播放列表文件的持续时间必须是至少三倍于目标持续时间。
6.2.3加密媒体文件
如果媒体文件是将要加密的,服务器必须定义一个URI,该URI将允许授权的客户端获取包含解密密钥的一个密钥文件。该密钥文件必须遵循章节5中描述的格式。
服务器可以在密钥响应中设置HTTP过期标头来标识密钥可以被缓存。
如果加密方法是AES-128,AES-128CBC加密必将被应用到单个媒体文件。整个文件必须被加密。密码块链不允许跨媒体文件使用。用于加密的IV必须或者是媒体文件的序列号,或者是章节5.2中描述的EXT-X-KEY标签的IV属性值。
服务器必须使用播放列表文件中最即刻早于它URI的EXT-X-KEY标签指定的方法和其他属性加密每一个媒体文件。之前有EXT-X-KEY标签且方法为无(NONE)的媒体文件,或者之前没有任何EXT-X-KEY标签的媒体文件不允许加密。
如果播放列表文件包含使用密钥加密的媒体文件的URI,服务器不允许从播放列表文件中移除EXT-X-KEY标签。
6.2.4提供不同的流
服务器可以提出多个播放列表文件以提供同一演示的不同编码。如果是这样,它应该提供一变化播放列表列举每个不同的流以允许客户端在不同编码之间动态转换。
不同的播放列表必须为每个不同的流包含一EXT-X-STREAM-INF标签。同一演示的每个EXT-X-STREAM-INF标签必须具有相同的PROGRAM-ID属性值。在不同的播放列表中,每个演示的PROGRAM-ID值必须是唯一的。
如果一EXT-X-STREAM-INF标签包含CODECS属性,该属性值必须包含【RFC4281】定义的、存在于出现在或即将出现在播放列表文件中的任何媒体文件中的每个格式。
当产生不同的流时,服务器必须符合下列限制:
每个不同的流必须呈现相同的内容,包括流不连续性。
每个不同的播放列表文件必须具有相同的目标持续时间。
只出现在一个而并非其它不同播放列表文件中的内容必须出现在该播放列表文件的开头或者结尾,并且不允许长于目标持续时间。
不同流中匹配的内容必须具有匹配的时间戳。它可以允许客户端同步流。
基本音频流文件必须通过在ID3PRIV标签【ID3】前追加拥有者标识“com.apple.streaming.transportStreamTimestamp”的方式标识文件中第一个样本的时间戳。二进制数据必须是作为大端8字节数表示的一个33位MPEG-2程序基本流时间戳。
另外,所有的不同流应该包含相同的编码音频比特流。它允许客户端在流之间没有音频干扰地转换。
6.3客户端操作
6.3.1引言
客户端如何给播放列表文件获取URI超出本文档的论述范围,在此假定它已经完成。
客户端必须从URI获取播放列表文件。如果这样获取的播放列表文件是一个不同的播放列表,客户端必须从该不同的播放列表中获取该播放列表文件。
本文档没有详细说明客户端对不同流的处理方式。
6.3.2加载播放列表文件
每当播放列表文件从播放列表URI中被加载或重新加载:
客户端必须确保播放列表文件以EXTM3U开头,并且如果出现EXT-X-VERSION标签,该标签指示客户端支持的协议版本,如果没有出现该EXT-X-VERSION标签,客户端不允许尝试使用该播放列表。
客户端应该忽略所有它不能识别的标签和属性。
客户端必须确定如章节6.3.5中描述的下一个要加载的媒体文件。
如果播放列表包含EXT-X-MEDIA-SEQUENCE标签,客户端应该认为在播放列表中的每个媒体文件将会在一个时间变为不可用。该时间为播放列表文件加载的时间加上播放列表文件的持续时间。播放列表文件的持续时间是它之中的媒体文件的持续时间之和。
6.3.3播放播放列表文件
当重放开始时,客户端应该从播放列表中选择首先播放的媒体文件。如果EXT-X-ENDLIST没有出现,客户端倾向于定期地播放媒体(比如以标称的重放速率按照播放列表的顺序)。客户端不应该选择从播放列表文件的结尾开始少于三倍目标持续时间的文件。这么做会导致重放停顿。
为了实现正常的重放,媒体文件必须按照它们在播放列表文件中出现的顺序被播放。客户端可以以它希望的任何方式显示可用的媒体,包括定期重放,随机读取和特技模式。
客户端在播放以EXT-X-DISCONTINUITY标签开头的媒体文件之前必须准备重新设置它的解析器和解码器。
客户端应该在当他们为补偿潜伏期和处理能力中的临时变动而要求的不间断重放之前尝试加载媒体文件。
如果播放列表文件包含EXT-X-ALLOW-CACHE标签并且它的值为否,客户端不允许在下载的媒体文件被播放后缓存它们。否则,客户端可以为以后的重播无限期的缓存媒体文件。
客户端可以使用EXT-X-PROGRAM-DATE-TIME标签值向用户呈现程序起始时间。如果该值包含时区信息,客户端应该把它考虑进去。但是如果它不包含,客户端不允许推测起始时区。
客户端不允许依赖EXT-X-PROGRAM-DATE-TIME标签值的正确性和一致性。
6.3.4重新加载播放列表文件
除非包含EXT-X-ENDLIST标签,客户端必须周期性的重新加载播放列表文件。
但是客户端不允许尝试以超过本章节指定的频率重新加载播放列表文件。
当客户端第一次加载播放列表文件或者重新加载播放列表文件时发现媒体文件自从上次被加载后已经有所改变,客户端必须在尝试再一次重新加载该播放列表文件之前等待一段时间。这段时间叫做初始最小重新加载延时。它从客户端开始加载播放列表文件开始计算。
初始最小重新加载延时是播放列表中最后一个媒体文件的持续时间。媒体文件持续时间由EXTINF标签确定。
如果客户端重新加载一播放列表文件并且发现它没有改变,则客户端必须在重试之前等待一段时间。这个最小的延时是目标等待时间的倍数。这个倍数在第一次尝试时为0.5倍,第二次尝试时为1.5倍,此后为3.0倍。
6.3.5确定下一个将要加载的文件
客户端必须在播放列表文件每次被加载或重新加载时检查以确定下一个加载的媒体文件。
如同章节6.3.3中描述的,第一个加载的文件必须是客户端选择第一个播放的文件。
如果第一个播放的文件已经被加载,并且播放列表文件不包含EXT-X-MEDIA-SEQUENCE标签,客户端必须证实当前播放列表文件在最后加载的媒体文件最初被发现的位移处包含该媒体文件的URI,加载如果不包含则停止重放。下一个将要加载的媒体文件必须是播放列表中跟随最后一个加载的URI的第一个媒体文件URI。
如果第一个播放的文件已经加载,并且播放列表文件包含EXT-X-MEDIA-SEQUENCE标签,则下一个将要加载的媒体文件应该是那个具有大于最后一个加载的媒体文件序列号的最小序列号的媒体文件。
6.3.6解密加密的媒体文件
如果播放列表文件包含标识密钥文件URI的EXT-X-KEY标签,客户端必须获取那个密钥文件并且用密钥文件中的密钥解密EXT-X-KEY标签之后所有的媒体文件直到遇到另一个EXT-X-KEY标签。
如果加密方法是AES-128,AES-128CBC加密应该被应用到单个媒体文件。整个文件必须被解密。密码块链不允许跨媒体文件使用。如章节5.2中描述的,解密使用的IV必须或者是媒体文件的序列号,或者是EXT-X-KEY标签的IV属性值。
如果加密方法是无(NONE),客户端必须将所有跟随EXT-X-KEY标签的媒体文件当作明文(不加密的)直到遇到另一个EXT-X-KEY标签。
7.协议版本兼容性
客户端和服务器必须执行协议版本2或者更高版本以使用:
ОEXT-X-KEY标签的IV属性
8.示例
8.1引言
这一章节包含一些示例播放列表文件
8.2简单播放列表文件
#EXTM3U
#EXT-X-TARGETDURATION:5220
#EXTINF:5220,
http://media.example.com/entire.ts
#EXT-X-ENDLIST
8.3滑动窗口播放列表,使用HTTPS
#EXTM3U
#EXT-X-TARGETDURATION:8
#EXT-X-MEDIA-SEQUENCE:2680
#EXTINF:8,
https://priv.example.com/fileSequence2680.ts
#EXTINF:8,
https://priv.example.com/fileSequence2681.ts
#EXTINF:8,
https://priv.example.com/fileSequence2682.ts
8.4带加密媒体文件的播放列表文件
#EXTM3U
#EXT-X-MEDIA-SEQUENCE:7794
#EXT-X-TARGETDURATION:15
#EXT-X-KEY:METHOD=AES-128,URI="https://priv.example.com/key.php?r=52"
#EXTINF:15,
http://media.example.com/fileSequence52-1.ts
#EXTINF:15,
http://media.example.com/fileSequence52-2.ts
#EXTINF:15,
http://media.example.com/fileSequence52-3.ts
#EXT-X-KEY:METHOD=AES-128,URI="https://priv.example.com/key.php?r=53"
#EXTINF:15,
http://media.example.com/fileSequence53-1.ts
8.5不同播放列表文件
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1280000
http://example.com/low.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2560000
http://example.com/low.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=7680000
http://example.com/low.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=65000,CODECS="mp4a.40.5"
http://example.com/audio-only.m3u8
9.安全性考虑
因为协议一般使用HTTP来传输数据,所以大部分相同的安全性考虑同样适用。参看RFC2616【RFC2616】的章节15。
媒体文件解析器往往容易遭受“模糊”攻击。当解析从服务器接收的文件时客户端应该小心以拒绝非相容性文件。
播放列表文件包含URI,客户端会使用URI生成任意实体的网络请求。客户端应该对响应进行范围检查以防止缓冲器溢出。同样参看RFC3986【RFC3986】关于安全性考虑的章节。
客户端应该随意加载由URI标识的资源以防止引起拒绝服务式攻击。
HTTP请求经常包含会话状态(“信息(cookies)”),它可能包含私有用户数据。实施必须遵循RFC2965【RFC2965】指定的信息(cookie)限定和期满规则。同样参看RFC2965和RFC2964【RFC2964】关于安全性考虑的章节。
加密密钥由URI指定。这些密钥的传递应该由诸如TLS【RFC5246】(原来的SSL)上的HTTP的机制结合一安全领域或者会话信息(cookie)来保障。
10.参考文献
规范性文献
【AES_128】美国商务部/国家标准和技术部,“高级加密标准(AES),FIPSPUB197”,2001年11月,<http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf<http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf>>。
【ISO_13818】国际标准化组织,“ISO/IEC国际标准13818;移动图像和相关音频信息的通用编码”,2007年10月,<http://www.iso.org/iso/catalogue_detail?csnumber=44169>。
【ISO_8601】国际标准化组织,“ISO/IEC国际标准8601:2004;数据元素和互换格式—信息互换—日期和时间表示法”,2004年10月,<http://www.iso.org/iso/catalogue_detail?csnumber=40874>。
【RFC2046】Freed,N.和N.Borenstein,“多目的互联网邮件扩展(MIME)第二部分:媒体类型”,RFC2046,1996年11月。
【RFC2119】Bradner,S.,“关键词在RFC中指示需求级别的使用”,BCP14,RFC2119,1997年3月。
【RFC2616】Fielding,R.,Gettys,J.,Mogul,J.,Frystyk,H.,Masinter,L.,Leach,P.,和T.Berners-Lee,“超文本传输协议—HTTP/1.1”,RFC2616,1999年6月。
【RFC2964】Moore,K.和N.Freed,“HTTP状态管理的使用”,BCP44,RFC2964,2000年10月。
【RFC2965】Kristol,D.和L.Montulli,“HTTP状态管理机制”,RFC2965,2000年10月。
【RFC3629】Yergeau,F.,“UTF-8,ISO10646的一种变形格式”,STD63,RFC3629,2003年11月。
【RFC3986】Berners-Lee,T.,Fielding,R.,和L.Masinter,“通用资源标志符(URI):通用语法”,STD66,RFC3986,2005年1月。
【RFC4281】Gellens,R.,Singer,D.,和P.Frojdh,“用于‘桶’媒体类型的编解码器参数”,RFC4281,2005年11月。
【RFC5246】Dierks,T.和E.Rescorla,“传输层安全(TLS)协议版本1.2”,RFC5246,2008年8月。
【RFC5652】Housley,R.,“加密消息语法(CMS)”,RFC5652,2009年9月。
【US_ASCII】美国国家标准化协会“ANSIX3.4-1986,信息系统—编码字符集用于信息互换的7位美国国家标准代码(7位ASCII),1986年12月。
12.2参考性文献
【ID3】ID3.org<http://ID3.org>,“ID3音频文件数据标签格式”,<http://www.id3.org/Developer_Information>。
【M3U】Nullsoft公司,“M3U播放列表格式,该发明最初用于Winamp媒体播放器”,<http://wikipedia.org/wiki/M3U>。

Claims (44)

1.一种客户端设备执行的方法,所述方法包括:
在客户端设备上执行用户应用以在所述客户端设备上呈现媒体文件的内容,控制对由所述用户应用呈现的所述媒体文件的内容的访问,以及从所述客户端设备远程的媒体源取回解密秘钥;以及
在所述媒体源远程的所述客户端设备上运行作为独立于所述用户应用的不同的软件进程的媒体服务进程,以取回指定所述媒体文件以及所述媒体文件可用的媒体源的播放列表,从所述用户应用取回解密秘钥,从所述媒体源取回所述媒体文件,使用所述解密秘钥对取回的所述媒体文件进行解码,以及将来自所述媒体文件的解码内容提供给所述用户应用,其中对所述媒体文件的内容的访问是通过由所述用户应用处理或者由所述用户应用取回并处理并且被传输给所述媒体服务进程的秘钥进行控制的,并且当所述用户应用取回所述秘钥时,对所述秘钥的取回独立于所述媒体服务进程取回所述媒体文件,并且其中所述用户应用提供用户界面以控制所述呈现,并且所述用户应用通过应用编程接口API与所述媒体服务进程通信,并且其中,所述媒体服务进程从所述用户应用或者所述媒体源取回所述播放列表。
2.根据权利要求1所述的方法,其中所述媒体服务进程和所述用户应用对存储器控制、存储器空间、存储器分配、文件系统控制和网络控制共享相同的特权。
3.根据权利要求2所述的方法,其中所述媒体服务进程取回媒体文件,所述媒体文件是使用由所述用户应用处理或者由所述用户应用取回并处理的密钥进行解码的。
4.根据权利要求2所述的方法,其中所述用户应用安装客户端证书,所述证书用于在创建连接以下载解密密钥时应答服务器的询问。
5.根据权利要求2所述的方法,其中所述播放列表包含使用自定义URL方案的解密密钥的URL。
6.根据权利要求1所述的方法,其中当所述媒体服务进程加载或解码媒体文件失败时,所述媒体服务进程通过所述API调用所述用户应用以使得所述用户应用取回一个或多个返回到所述媒体服务进程的密钥。
7.根据权利要求1所述的方法,其中所述用户应用安装客户端证书,所述证书用于在创建连接以下载解密密钥时应答服务器的询问。
8.根据权利要求7所述的方法,其中所述播放列表包含使用自定义URL方案的解密密钥的URL。
9.一种由数据处理系统执行的机器实现的方法,所述方法包括:
在客户端设备上执行用户应用以通过由所述用户应用提供的用户界面在所述客户端设备上呈现媒体文件的内容并控制对由所述用户应用呈现的所述媒体文件的内容的访问;以及
在媒体源远程的所述客户端设备上运行作为独立于所述用户应用的不同的软件进程的媒体服务器进程,以取回指定所述媒体文件以及所述媒体文件可用的媒体源的播放列表,从所述媒体源取回所述媒体文件,并对取回的所述媒体文件进行解码;
由所述媒体服务器进程接收所述播放列表中的URL,所述URL涉及所述媒体服务器进程要使用的用于解码至少一个所述媒体文件的数据;
由所述媒体服务器进程通过应用编程接口API调用所述用户应用以处理所述URL来获得所述媒体服务器进程要使用的所述数据;
响应于所述用户应用处理所述URL以获得所述数据,而由所述媒体服务器进程接收所述数据;以及
由所述媒体服务器进程使用所述数据解码至少一个所述媒体文件;以及
由所述媒体服务器进程提供所述媒体文件中的经解码的至少一个媒体文件给所述用户应用,其中对所述媒体文件的内容的访问是通过由所述用户应用处理或者由所述用户应用取回并处理并且被传输给所述媒体服务器进程的密钥进行控制的,并且当所述用户应用取回所述密钥时,对所述密钥的取回独立于所述媒体服务器进程取回所述媒体文件。
10.根据权利要求9所述的方法,其中所述数据是解密密钥。
11.根据权利要求10所述的方法,其中所述用户应用使用自定义URL,所述自定义URL用于保护通过所述用户应用提供的内容。
12.根据权利要求11所述的方法,其中注册表存储所述自定义URL和所述用户应用之间的关系,并且其中当所述媒体服务器进程不能解码媒体文件时,所述媒体服务器进程检查所述注册表以调用所述用户应用。
13.根据权利要求12所述的方法,其中所述自定义URL由EXT-X-KEY标签指定,并且其中所述用户应用由所述媒体文件的提供者授权。
14.根据权利要求11所述的方法,其中所述用户应用将所述自定义URL和所述用户应用之间的关系安装到注册表中,所述自定义URL用于为所述媒体文件取回一个或多个解密密钥,并且其中当所述用户应用第一次被安装或第一次被启动时,所述用户应用将所述关系安装到所述注册表中。
15.根据权利要求11所述的方法,其中所述自定义URL不被所述媒体服务器进程所支持。
16.根据权利要求11所述的方法,其中所述自定义URL用于取回被提供给所述媒体服务器进程以对所述播放列表中的所述媒体文件进行解码的所述解密密钥。
17.根据权利要求16所述的方法,其中所述用户应用对所述自定义URL的解析取决于如下条件中的至少一个:(a)所述用户应用的对于所述媒体文件中的内容的特权等级;(b)所述媒体文件中的内容;以及(c)呈现所述媒体文件中的内容的请求的日期或时间或日期和时间。
18.根据权利要求17所述的方法,其中所述解密密钥通过所述用户应用被返回给所述媒体服务器进程。
19.一种由数据处理系统执行的机器实现的方法,所述方法包括:
在媒体源远程的客户端设备上执行用户应用,所述用户应用被配置以控制对由所述用户应用呈现的媒体文件的内容的访问,以及通过所述用户应用的用户界面在所述客户端设备上呈现所述媒体文件的内容;以及
在所述媒体源远程的所述客户端设备上运行作为独立于所述用户应用的不同的软件进程的媒体服务器进程,以取回指定所述媒体文件以及所述媒体文件可用的媒体源的播放列表;
由所述媒体服务器进程接收在所述播放列表中或用于所述播放列表的URL,所述URL涉及被用于处理至少一个所述媒体文件的数据;
由所述媒体服务器进程调用所述用户应用以处理所述URL来获得所述媒体服务器进程要使用的数据;
响应于所述用户应用处理所述URL来获得所述数据,而由所述媒体服务器进程接收所述数据,其中对所述媒体文件的内容的访问是通过被用于处理至少一个所述媒体文件的数据、由所述用户应用处理或者由所述用户应用取回并处理并且被传输给所述媒体服务器进程的数据进行控制的,并且当所述用户应用取回所述数据时,对所述数据的取回独立于所述媒体服务器进程取回所述媒体文件,并且其中所述用户应用通过应用编程接口API与所述媒体服务器进程通信,并且其中,所述媒体服务器进程从所述用户应用或者所述媒体源取回所述播放列表;以及
传输所述数据到所述媒体源。
20.根据权利要求19所述的方法,其中所述URL是所述播放列表中的一个的自定义URL或者是所述播放列表中的至少一个媒体文件的解密密钥,并且其中所述用户应用使用所述自定义URL来保护通过所述用户应用提供的内容。
21.根据权利要求20所述的方法,其中注册表存储所述自定义URL和所述用户应用之间的关系,并且其中当所述媒体服务器进程不能处理所述URL时,所述媒体服务器进程检查所述注册表以调用所述用户应用。
22.根据权利要求21所述的方法,其中所述媒体服务器进程是机顶盒的一部分,并且被配置成取回和处理播放列表,并被配置成产生被传输回所述媒体源的消息,以请求对所述自定义URL的解析,并且其中传输数据到所述媒体源提供了对所述自定义URL的解析。
23.一种客户端设备,所述客户端设备包括:
用于在客户端设备上执行用户应用以在所述客户端设备上呈现媒体文件的内容,控制对由所述用户应用呈现的所述媒体文件的内容的访问,以及从所述客户端设备远程的媒体源取回解密秘钥的装置;以及
用于在所述媒体源远程的所述客户端设备上运行作为独立于所述用户应用的不同的软件进程的媒体服务进程,以取回指定所述媒体文件以及所述媒体文件可用的媒体源的播放列表,从所述用户应用取回解密秘钥,从所述媒体源取回所述媒体文件,使用所述解密秘钥对取回的所述媒体文件进行解码,以及将来自所述媒体文件的解码内容提供给所述用户应用的装置,其中对所述媒体文件的内容的访问是通过由所述用户应用处理或者由所述用户应用取回并处理并且被传输给所述媒体服务进程的秘钥进行控制的,并且当所述用户应用取回所述秘钥时,对所述秘钥的取回独立于所述媒体服务进程取回所述媒体文件,并且其中所述用户应用提供用户界面以控制所述呈现,并且所述用户应用通过应用编程接口API与所述媒体服务进程通信,并且其中,所述媒体服务进程从所述用户应用或者所述媒体源取回所述播放列表。
24.根据权利要求23所述的客户端设备,其中所述媒体服务进程和所述用户应用对存储器控制、存储器空间、存储器分配、文件系统控制和网络控制共享相同的特权。
25.根据权利要求24所述的客户端设备,其中所述媒体服务进程取回媒体文件,所述媒体文件是使用由所述用户应用处理或者由所述用户应用取回并处理的密钥进行解码的。
26.根据权利要求24所述的客户端设备,其中所述用户应用安装客户端证书,所述证书用于在创建连接以下载解密密钥时应答服务器的询问。
27.根据权利要求24所述的客户端设备,其中所述播放列表包含使用自定义URL方案的解密密钥的URL。
28.根据权利要求23所述的客户端设备,其中当所述媒体服务进程加载或解码媒体文件失败时,所述媒体服务进程通过所述API调用所述用户应用以使得所述用户应用取回一个或多个返回到所述媒体服务进程的密钥。
29.根据权利要求23所述的客户端设备,其中所述用户应用安装客户端证书,所述证书用于在创建连接以下载解密密钥时应答服务器的询问。
30.根据权利要求29所述的客户端设备,其中所述播放列表包含使用自定义URL方案的解密密钥的URL。
31.一种数据处理系统,所述数据处理系统包括客户端设备和媒体源,
其中,所述客户端设备包括:
用于在所述客户端设备上执行用户应用以通过由所述用户应用提供的用户界面在所述客户端设备上呈现媒体文件的内容,并控制对由所述用户应用呈现的所述媒体文件的内容的访问的装置;
用于在所述媒体源远程的客户端设备上运行作为独立于所述用户应用的不同的软件进程的媒体服务器进程,以取回指定所述媒体文件以及所述媒体文件可用的媒体源的播放列表,从所述媒体源取回所述媒体文件,并对取回的所述媒体文件进行解码的装置;以及
所述媒体服务器进程被配置为:
接收在所述播放列表中的URL,所述URL涉及所述媒体服务器进程要使用的用于解码至少一个所述媒体文件的数据;
由所述媒体服务器进程通过应用编程接口API调用所述用户应用以处理所述URL来获得所述媒体服务器进程要使用的所述数据;
其中,所述客户端设备还包括:
用于响应于所述用户应用处理所述URL来获得所述数据,而接收所述数据的装置;
用于使用所述数据解码至少一个所述媒体文件的装置;以及
用于由所述媒体服务器进程提供所述媒体文件中的经解码的至少一个媒体文件给所述用户应用的装置,其中对所述媒体文件的内容的访问是通过由所述用户应用处理或者由所述用户应用取回并处理并且被传输给所述媒体服务器进程的密钥进行控制的,并且当所述用户应用取回所述密钥时,对所述密钥的取回独立于所述媒体服务器进程取回所述媒体文件。
32.根据权利要求31所述的数据处理系统,其中所述数据是解密密钥。
33.根据权利要求32所述的数据处理系统,其中所述用户应用使用自定义URL,所述自定义URL用于保护通过所述用户应用提供的内容。
34.根据权利要求33所述的数据处理系统,其中注册表存储所述自定义URL和所述用户应用之间的关系,并且其中当所述媒体服务器进程不能解码媒体文件时,所述媒体服务器进程检查所述注册表以调用所述用户应用。
35.根据权利要求34所述的数据处理系统,其中所述自定义URL由EXT-X-KEY标签指定,并且其中所述用户应用由所述媒体文件的提供者授权。
36.根据权利要求33所述的数据处理系统,其中所述用户应用将自定义URL和所述用户应用之间的关系安装到注册表中,所述自定义URL用于为所述媒体文件取回一个或多个解密密钥,并且其中当所述用户应用第一次被安装或第一次被启动时,所述用户应用将所述关系安装到所述注册表中。
37.根据权利要求33所述的数据处理系统,其中所述自定义URL不被所述媒体服务器进程所支持。
38.根据权利要求33所述的数据处理系统,其中所述自定义URL用于取回被提供给所述媒体服务器进程以对所述播放列表中的所述媒体文件进行解码的所述解密密钥。
39.根据权利要求38所述的数据处理系统,其中所述用户应用对所述自定义URL的解析取决于如下条件中的至少一个:(a)所述用户应用的对于所述媒体文件中的内容的特权等级;(b)所述媒体文件中的内容;以及(c)呈现所述媒体文件中的内容的请求的日期或时间或日期和时间。
40.根据权利要求39所述的数据处理系统,其中所述解密密钥通过所述用户应用被返回给所述媒体服务器进程。
41.一种数据处理系统,所述数据处理系统包括客户端设备和媒体源,
其中,所述客户端设备包括:
用于在媒体源远程的客户端设备上执行用户应用的装置,所述用户应用被配置以控制对由所述用户应用呈现的媒体文件的内容的访问,以及通过所述用户应用的用户界面在所述客户端设备上呈现所述媒体文件的内容;
用于在所述媒体源远程的所述客户端设备上运行作为独立于所述用户应用的不同的软件进程的媒体服务器进程,以取回指定所述媒体文件以及所述媒体文件可用的媒体源的播放列表的装置;并且
所述媒体服务器进程被配置为:
接收在所述播放列表中或用于所述播放列表的URL,所述URL涉及被用于处理至少一个所述媒体文件的数据;
调用所述用户应用以处理所述URL来获得所述媒体服务器进程要使用的数据,以及
其中所述客户端设备还包括:
用于响应于所述用户应用处理所述URL来获得所述数据,而接收所述数据的装置,其中对所述媒体文件的内容的访问是通过被用于处理至少一个所述媒体文件的数据、由所述用户应用处理或者由所述用户应用取回并处理并且被传输给所述媒体服务器进程的数据进行控制的,并且当所述用户应用取回所述数据时,对所述数据的取回独立于所述媒体服务器进程取回所述媒体文件,并且其中所述用户应用通过应用编程接口API与所述媒体服务器进程通信,并且其中,所述媒体服务器进程从所述用户应用或者所述媒体源取回所述播放列表;以及
用于传输所述数据到所述媒体源的装置。
42.根据权利要求41所述的数据处理系统,其中所述URL是所述播放列表中的一个的自定义URL或者是所述播放列表中的至少一个媒体文件的解密密钥,并且其中所述用户应用使用所述自定义URL来保护通过所述用户应用提供的内容。
43.根据权利要求42所述的数据处理系统,其中注册表存储所述自定义URL和所述用户应用之间的关系,并且其中当所述媒体服务器进程不能处理所述URL时,所述媒体服务器进程检查所述注册表以调用所述用户应用。
44.根据权利要求43所述的数据处理系统,其中所述媒体服务器进程是机顶盒的一部分,并且被配置成取回和处理播放列表,并被配置成产生被传输回所述媒体源的消息,以请求对所述自定义URL的解析,并且其中传输数据到所述媒体源提供了对所述自定义URL的解析。
CN201210278922.XA 2010-04-07 2011-04-07 实时或准实时流传输 Active CN102882845B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US32176710P 2010-04-07 2010-04-07
US61/321,767 2010-04-07
US35182410P 2010-06-04 2010-06-04
US61/351,824 2010-06-04

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201110141675.4A Division CN102238179B (zh) 2010-04-07 2011-04-07 实时或准实时流传输

Publications (2)

Publication Number Publication Date
CN102882845A CN102882845A (zh) 2013-01-16
CN102882845B true CN102882845B (zh) 2016-07-13

Family

ID=44000683

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201210278922.XA Active CN102882845B (zh) 2010-04-07 2011-04-07 实时或准实时流传输
CN201110141675.4A Active CN102238179B (zh) 2010-04-07 2011-04-07 实时或准实时流传输

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201110141675.4A Active CN102238179B (zh) 2010-04-07 2011-04-07 实时或准实时流传输

Country Status (6)

Country Link
US (3) US8892691B2 (zh)
CN (2) CN102882845B (zh)
GB (1) GB2479455B (zh)
HK (1) HK1163979A1 (zh)
TW (1) TWI451279B (zh)
WO (1) WO2011127312A1 (zh)

Families Citing this family (206)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11204729B2 (en) 2000-11-01 2021-12-21 Flexiworld Technologies, Inc. Internet based digital content services for pervasively providing protected digital content to smart devices based on having subscribed to the digital content service
US20020062398A1 (en) 2000-11-20 2002-05-23 William Ho Chang Controller for mobile and pervasive output
EP1586045A1 (en) 2002-12-27 2005-10-19 Nielsen Media Research, Inc. Methods and apparatus for transcoding metadata
US10268352B2 (en) * 2004-06-05 2019-04-23 Sonos, Inc. Method and apparatus for managing a playlist by metadata
US8424041B2 (en) * 2005-09-07 2013-04-16 Sony Corporation Method and system for downloading content to a content downloader
WO2007106844A2 (en) 2006-03-14 2007-09-20 Divx, Inc. Federated digital rights management scheme including trusted systems
US20070288985A1 (en) * 2006-06-13 2007-12-13 Candelore Brant L Method and system for uploading content to a target device
US8832777B2 (en) 2009-03-02 2014-09-09 Headwater Partners I Llc Adapting network policies based on device service processor configuration
US8589541B2 (en) 2009-01-28 2013-11-19 Headwater Partners I Llc Device-assisted services for protecting network capacity
US9154942B2 (en) * 2008-11-26 2015-10-06 Free Stream Media Corp. Zero configuration communication between a browser and a networked media device
JP5681641B2 (ja) 2009-01-07 2015-03-11 ソニック アイピー, インコーポレイテッド オンラインコンテンツのためのメディアガイドの特異的、収集的および自動的な生成
US10248996B2 (en) 2009-01-28 2019-04-02 Headwater Research Llc Method for operating a wireless end-user device mobile payment agent
US9980146B2 (en) 2009-01-28 2018-05-22 Headwater Research Llc Communications device with secure data path processing agents
US9954975B2 (en) 2009-01-28 2018-04-24 Headwater Research Llc Enhanced curfew and protection associated with a device group
US10326800B2 (en) 2009-01-28 2019-06-18 Headwater Research Llc Wireless network service interfaces
US9565707B2 (en) 2009-01-28 2017-02-07 Headwater Partners I Llc Wireless end-user device with wireless data attribution to multiple personas
US11985155B2 (en) 2009-01-28 2024-05-14 Headwater Research Llc Communications device with secure data path processing agents
US10783581B2 (en) 2009-01-28 2020-09-22 Headwater Research Llc Wireless end-user device providing ambient or sponsored services
US10492102B2 (en) 2009-01-28 2019-11-26 Headwater Research Llc Intermediate networking devices
US9706061B2 (en) 2009-01-28 2017-07-11 Headwater Partners I Llc Service design center for device assisted services
US10264138B2 (en) 2009-01-28 2019-04-16 Headwater Research Llc Mobile device and service management
US10798252B2 (en) 2009-01-28 2020-10-06 Headwater Research Llc System and method for providing user notifications
US10237757B2 (en) 2009-01-28 2019-03-19 Headwater Research Llc System and method for wireless network offloading
US9572019B2 (en) 2009-01-28 2017-02-14 Headwater Partners LLC Service selection set published to device agent with on-device service selection
EP2436168A2 (fr) * 2009-05-29 2012-04-04 France Telecom Technique de distribution d'un contenu vers un utilisateur
CA2782825C (en) 2009-12-04 2016-04-26 Divx, Llc Elementary bitstream cryptographic material transport systems and methods
US9253548B2 (en) * 2010-05-27 2016-02-02 Adobe Systems Incorporated Optimizing caches for media streaming
US9160978B2 (en) * 2010-08-10 2015-10-13 Google Technology Holdings LLC Method and apparatus related to variable duration media segments
US9542203B2 (en) 2010-12-06 2017-01-10 Microsoft Technology Licensing, Llc Universal dock for context sensitive computing device
US8923770B2 (en) 2010-12-09 2014-12-30 Microsoft Corporation Cognitive use of multiple regulatory domains
US8792429B2 (en) * 2010-12-14 2014-07-29 Microsoft Corporation Direct connection with side channel control
US8948382B2 (en) 2010-12-16 2015-02-03 Microsoft Corporation Secure protocol for peer-to-peer network
US9294545B2 (en) 2010-12-16 2016-03-22 Microsoft Technology Licensing, Llc Fast join of peer to peer group with power saving mode
US8971841B2 (en) 2010-12-17 2015-03-03 Microsoft Corporation Operating system supporting cost aware applications
JP2012134652A (ja) * 2010-12-20 2012-07-12 Nec Access Technica Ltd 宅内機器、コンテンツ引き継ぎ方法およびコンテンツ引き継ぎプログラム
US8914534B2 (en) 2011-01-05 2014-12-16 Sonic Ip, Inc. Systems and methods for adaptive bitrate streaming of media stored in matroska container files using hypertext transfer protocol
US20120210374A1 (en) * 2011-02-14 2012-08-16 Charles Dasher Video-On-Demand (VOD)-Augmented eBook
US9860293B2 (en) 2011-03-16 2018-01-02 Electronics And Telecommunications Research Institute Apparatus and method for providing streaming content using representations
US9380356B2 (en) 2011-04-12 2016-06-28 The Nielsen Company (Us), Llc Methods and apparatus to generate a tag for media content
US9087060B2 (en) * 2011-06-03 2015-07-21 Apple Inc. Partial sort on a host
US8856283B2 (en) * 2011-06-03 2014-10-07 Apple Inc. Playlists for real-time or near real-time streaming
US9209978B2 (en) 2012-05-15 2015-12-08 The Nielsen Company (Us), Llc Methods and apparatus to measure exposure to streaming media
US20130290508A1 (en) * 2012-04-25 2013-10-31 Jan Besehanic Methods and apparatus to measure exposure to streaming media
US9515904B2 (en) * 2011-06-21 2016-12-06 The Nielsen Company (Us), Llc Monitoring streaming media content
US9319453B2 (en) * 2011-07-15 2016-04-19 Shmuel Ur User-controlled download duration time
US9467708B2 (en) 2011-08-30 2016-10-11 Sonic Ip, Inc. Selection of resolutions for seamless resolution switching of multimedia content
US8964977B2 (en) 2011-09-01 2015-02-24 Sonic Ip, Inc. Systems and methods for saving encoded media streamed using adaptive bitrate streaming
US8909922B2 (en) 2011-09-01 2014-12-09 Sonic Ip, Inc. Systems and methods for playing back alternative streams of protected content protected using common cryptographic information
US9043866B2 (en) 2011-11-14 2015-05-26 Wave Systems Corp. Security systems and methods for encoding and decoding digital content
US9047489B2 (en) 2011-11-14 2015-06-02 Wave Systems Corp. Security systems and methods for social networking
US9015857B2 (en) * 2011-11-14 2015-04-21 Wave Systems Corp. Security systems and methods for encoding and decoding digital content
US8769524B2 (en) * 2011-12-09 2014-07-01 Disney Enterprises, Inc. HTML directed adaptive features for mobile applications
US9697297B2 (en) * 2011-12-16 2017-07-04 Microsoft Technology Licensing, Llc. Representation/invocation of actions/functions in a hypermedia-driven environment
US8983076B2 (en) * 2011-12-22 2015-03-17 Adobe Systems Incorporated Methods and apparatus for key delivery in HTTP live streaming
US10225306B2 (en) 2011-12-29 2019-03-05 Koninklijke Kpn N.V. Controlled streaming of segmented content
US9654821B2 (en) 2011-12-30 2017-05-16 Sonos, Inc. Systems and methods for networked music playback
CN103248611B (zh) 2012-02-07 2017-05-24 华为终端有限公司 媒体播放处理与控制方法、装置及系统
US9215065B2 (en) * 2012-02-17 2015-12-15 Cbs Interactive Inc. Media player security for full length episodes
KR101606311B1 (ko) * 2012-03-30 2016-03-24 인텔 코포레이션 표시 장치를 이용하는 미디어 콘텐츠의 소비의 모바일 장치를 이용한 보완
CN102780916B (zh) * 2012-04-12 2015-03-18 天脉聚源(北京)传媒科技有限公司 一种视频直播流汇聚分发方法
US8468563B1 (en) * 2012-04-30 2013-06-18 This Technology, Inc. Method for ingesting multiple signals of the same meaning
KR20130127211A (ko) * 2012-05-14 2013-11-22 한국전자통신연구원 다중 네트워크 환경 적응형 미디어 스트리밍 전송방법 및 그 장치
US9235867B2 (en) * 2012-06-04 2016-01-12 Microsoft Technology Licensing, Llc Concurrent media delivery
US9557999B2 (en) 2012-06-15 2017-01-31 Apple Inc. Loop buffer learning
US9753733B2 (en) 2012-06-15 2017-09-05 Apple Inc. Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer
US9674587B2 (en) * 2012-06-26 2017-06-06 Sonos, Inc. Systems and methods for networked music playback including remote add to queue
US9197685B2 (en) * 2012-06-28 2015-11-24 Sonic Ip, Inc. Systems and methods for fast video startup using trick play streams
EP2680599A1 (en) * 2012-06-29 2014-01-01 Thomson Licensing Provision of a personalized media content
DE102012212139A1 (de) * 2012-07-11 2014-01-16 Mackevision Medien Design GmbH Stuttgart Verfahren zum Betreiben eines Servers für das HLS-Streaming eines Video-Films mit mindestens einem konfigurierbaren Objekt
US9516079B2 (en) 2012-07-16 2016-12-06 Ricoh Company, Ltd. Media stream modification based on channel limitations
US9804668B2 (en) 2012-07-18 2017-10-31 Verimatrix, Inc. Systems and methods for rapid content switching to provide a linear TV experience using streaming content distribution
WO2014015110A1 (en) 2012-07-18 2014-01-23 Verimatrix, Inc. Systems and methods for rapid content switching to provide a linear tv experience using streaming content distribution
US20140074959A1 (en) * 2012-09-10 2014-03-13 Apple Inc. Client side media station generation
US20140075316A1 (en) * 2012-09-11 2014-03-13 Eric Li Method and apparatus for creating a customizable media program queue
US9537917B2 (en) 2012-11-20 2017-01-03 Google Technology Holdings LLC Method and apparatus for streaming media content to client devices
US9930082B2 (en) 2012-11-20 2018-03-27 Nvidia Corporation Method and system for network driven automatic adaptive rendering impedance
US10616086B2 (en) 2012-12-27 2020-04-07 Navidia Corporation Network adaptive latency reduction through frame rate control
JP6116240B2 (ja) * 2012-12-28 2017-04-19 キヤノン株式会社 送信装置、送信方法、及びプログラム
US9313510B2 (en) 2012-12-31 2016-04-12 Sonic Ip, Inc. Use of objective quality measures of streamed content to reduce streaming bandwidth
US9191457B2 (en) 2012-12-31 2015-11-17 Sonic Ip, Inc. Systems, methods, and media for controlling delivery of content
EP2947571B1 (en) 2013-01-17 2019-09-18 Sony Interactive Entertainment Inc. Information processing device and file management method
US9313544B2 (en) 2013-02-14 2016-04-12 The Nielsen Company (Us), Llc Methods and apparatus to measure exposure to streaming media
WO2014133589A1 (en) * 2013-03-01 2014-09-04 Intel Corporation Wireless local area network (wlan) traffic offloading
US10817959B2 (en) * 2013-03-08 2020-10-27 Google Llc System for serving shared content on a video sharing web site
WO2014159862A1 (en) 2013-03-14 2014-10-02 Headwater Partners I Llc Automated credential porting for mobile devices
US10397292B2 (en) 2013-03-15 2019-08-27 Divx, Llc Systems, methods, and media for delivery of content
US9906785B2 (en) 2013-03-15 2018-02-27 Sonic Ip, Inc. Systems, methods, and media for transcoding video data according to encoding parameters indicated by received metadata
US9361371B2 (en) 2013-04-16 2016-06-07 Sonos, Inc. Playlist update in a media playback system
US9247363B2 (en) 2013-04-16 2016-01-26 Sonos, Inc. Playback queue transfer in a media playback system
US9501533B2 (en) 2013-04-16 2016-11-22 Sonos, Inc. Private queue for a media playback system
US20160057468A1 (en) * 2013-04-19 2016-02-25 Sony Corporation Server device, content providing method, and computer program
US9798510B2 (en) 2013-05-29 2017-10-24 Sonos, Inc. Connected state indicator
US9684484B2 (en) * 2013-05-29 2017-06-20 Sonos, Inc. Playback zone silent connect
US9735978B2 (en) 2013-05-29 2017-08-15 Sonos, Inc. Playback queue control via a playlist on a mobile device
US9953179B2 (en) 2013-05-29 2018-04-24 Sonos, Inc. Private queue indicator
US9703521B2 (en) 2013-05-29 2017-07-11 Sonos, Inc. Moving a playback queue to a new zone
US9495076B2 (en) 2013-05-29 2016-11-15 Sonos, Inc. Playlist modification
US10715973B2 (en) 2013-05-29 2020-07-14 Sonos, Inc. Playback queue control transition
US9094737B2 (en) 2013-05-30 2015-07-28 Sonic Ip, Inc. Network video streaming with trick play based on separate trick play files
US9247317B2 (en) 2013-05-30 2016-01-26 Sonic Ip, Inc. Content streaming with client device trick play index
JP2014235531A (ja) * 2013-05-31 2014-12-15 株式会社東芝 データ転送装置、データ転送システム、およびプログラム
US9344342B2 (en) 2013-06-10 2016-05-17 International Business Machines Corporation Monitoring similar data in stream computing
US9967305B2 (en) 2013-06-28 2018-05-08 Divx, Llc Systems, methods, and media for streaming media content
CN105379295A (zh) 2013-07-03 2016-03-02 皇家Kpn公司 分段内容的流送
US9836271B2 (en) * 2013-07-17 2017-12-05 Booktrack Holdings Limited Delivery of synchronised soundtracks for electronic media content
US10181040B2 (en) * 2013-07-19 2019-01-15 Disney Enterprises, Inc. Alternate content playlist for locked media content
US9160540B2 (en) * 2013-07-25 2015-10-13 Adobe Systems Incorporated Preventing playback of streaming video if ads are removed
US9819604B2 (en) 2013-07-31 2017-11-14 Nvidia Corporation Real time network adaptive low latency transport stream muxing of audio/video streams for miracast
CN103428583A (zh) * 2013-08-12 2013-12-04 深圳市同洲电子股份有限公司 一种对流媒体文件的保护方法和数字电视终端
US9411942B2 (en) * 2013-08-30 2016-08-09 D&M Holdings, Inc. Network device, system and method for rendering an interactive multimedia playlist
US8718445B1 (en) 2013-09-03 2014-05-06 Penthera Partners, Inc. Commercials on mobile devices
US9888050B2 (en) * 2013-09-24 2018-02-06 Verizon Patent And Licensing Inc. Method and apparatus for integrating various network elements and providing media processing services
US10296884B2 (en) * 2013-09-30 2019-05-21 Sonos, Inc. Personalized media playback at a discovered point-of-sale display
US20150095964A1 (en) * 2013-10-01 2015-04-02 Opentv, Inc. Bumper video carousel for digital video delivery
US9244916B2 (en) * 2013-10-01 2016-01-26 Penthera Partners, Inc. Downloading media objects
US9332035B2 (en) 2013-10-10 2016-05-03 The Nielsen Company (Us), Llc Methods and apparatus to measure exposure to streaming media
KR102104498B1 (ko) * 2013-11-22 2020-04-24 삼성전자주식회사 슬라이드 쇼를 제공하는 시스템 및 방법
KR20150074542A (ko) * 2013-12-24 2015-07-02 현대자동차주식회사 미러링크 제어방법
TWI533678B (zh) * 2014-01-07 2016-05-11 緯創資通股份有限公司 即時轉播同步方法以及使用該方法的系統
US10779035B2 (en) * 2014-01-09 2020-09-15 Samsung Electronics Co., Ltd. Method and apparatus of transmitting media data related information in multimedia transmission system
US9661045B2 (en) * 2014-01-13 2017-05-23 Cisco Technology, Inc. System and methods for dynamic transcoder rate adaption for adaptive bit rate streaming
US9621963B2 (en) 2014-01-28 2017-04-11 Dolby Laboratories Licensing Corporation Enabling delivery and synchronization of auxiliary content associated with multimedia data using essence-and-version identifier
US9471322B2 (en) 2014-02-12 2016-10-18 Apple Inc. Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold
JP6698553B2 (ja) 2014-02-13 2020-05-27 コニンクリーケ・ケイピーエヌ・ナムローゼ・フェンノートシャップ 1つの要求メッセージに基づいたネットワーク・ノードへの多数のチャンクの要求
US10599706B2 (en) 2014-03-20 2020-03-24 Gracenote Digital Ventures, Llc Retrieving and playing out media content for a personalized playlist
US9342229B2 (en) 2014-03-28 2016-05-17 Acast AB Method for associating media files with additional content
US9866878B2 (en) 2014-04-05 2018-01-09 Sonic Ip, Inc. Systems and methods for encoding and playing back video at different frame rates using enhancement layers
CN105099602A (zh) * 2014-04-25 2015-11-25 阿里巴巴集团控股有限公司 一种基于网速传输文件的方法及系统
US10250937B2 (en) * 2014-05-30 2019-04-02 Apple Inc. Item to item transitions
US10523723B2 (en) 2014-06-06 2019-12-31 Koninklijke Kpn N.V. Method, system and various components of such a system for selecting a chunk identifier
CN104093065A (zh) * 2014-06-13 2014-10-08 深圳市白板科技有限公司 一种机顶盒连接播放方法及系统
US10362094B2 (en) * 2014-07-25 2019-07-23 Gracenote Digital Ventures, Llc Retrieval and playout of media content
US10228751B2 (en) 2014-08-06 2019-03-12 Apple Inc. Low power mode
PL3180688T3 (pl) 2014-08-12 2021-10-25 Groupon, Inc. Sposób, urządzenie, i produkt w postaci programu komputerowego do sterowania rozprowadzaniem treści za pośrednictwem nadajników-odbiorników w celu wyświetlania
CN104168435B (zh) * 2014-08-15 2018-01-12 北京彩云动力教育科技有限公司 一种音频文件批量合并和播放的方法及系统
US9647489B2 (en) 2014-08-26 2017-05-09 Apple Inc. Brownout avoidance
CN104159168A (zh) * 2014-09-02 2014-11-19 尚斌 一种适用于音视频时间格式转换的计算方法
US10708391B1 (en) * 2014-09-30 2020-07-07 Apple Inc. Delivery of apps in a media stream
US10231033B1 (en) 2014-09-30 2019-03-12 Apple Inc. Synchronizing out-of-band content with a media stream
US10148713B2 (en) * 2014-10-21 2018-12-04 Adobe Systems Incorporated Live manifest update
US10728599B2 (en) * 2014-12-12 2020-07-28 Arris Enterprise, Llc Gateway server conditioned media streaming
CN105763583A (zh) * 2014-12-16 2016-07-13 博雅网络游戏开发(深圳)有限公司 与php进程通信的方法和系统
EP3038389A1 (en) * 2014-12-23 2016-06-29 Orange A method for controlling the sharing of at least one electronic content between a first user equipment and at least a second user equipment
US9858337B2 (en) * 2014-12-31 2018-01-02 Opentv, Inc. Management, categorization, contextualizing and sharing of metadata-based content for media
US20160234528A1 (en) * 2015-02-09 2016-08-11 Arris Enterprises, Inc. Carriage of video coding for browsers (vcb) video over mpeg-2 transport streams
US10440757B2 (en) * 2015-02-17 2019-10-08 Google Llc Second-screen control automatic pairing using push notifications
US10719290B2 (en) 2015-05-15 2020-07-21 Spotify Ab Methods and devices for adjustment of the energy level of a played audio stream
US10082939B2 (en) 2015-05-15 2018-09-25 Spotify Ab Playback of media streams at social gatherings
US20160335046A1 (en) 2015-05-15 2016-11-17 Spotify Ab Methods and electronic devices for dynamic control of playlists
US9762965B2 (en) 2015-05-29 2017-09-12 The Nielsen Company (Us), Llc Methods and apparatus to measure exposure to streaming media
US10585727B1 (en) * 2015-06-08 2020-03-10 Google Llc API manager
WO2017010154A1 (ja) * 2015-07-13 2017-01-19 ソニー株式会社 情報処理装置、情報処理方法及びコンピュータプログラム
US20170041363A1 (en) * 2015-08-03 2017-02-09 Unroll, Inc. System and Method for Assembling and Playing a Composite Audiovisual Program Using Single-Action Content Selection Gestures and Content Stream Generation
US10270903B2 (en) * 2015-08-21 2019-04-23 Avaya Inc. Failover announcements
US9635431B2 (en) * 2015-08-27 2017-04-25 Kiswe Mobile Inc. Live event viewing via mixed live and on-demand streaming
US9942343B2 (en) 2015-08-27 2018-04-10 Kiswe Mobile Inc. Efficient content streaming utilizing local proxy server implemented on client device
CN105592346B (zh) * 2015-12-17 2018-07-24 天脉聚源(北京)教育科技有限公司 一种音频信号的切换方法及装置
US10740727B2 (en) * 2015-12-28 2020-08-11 Seiko Epson Corporation Techniques for determining whether employee attendance is being appropriately managed
KR101743228B1 (ko) * 2016-01-22 2017-06-05 네이버 주식회사 스트리밍 장치 및 그 방법, 이를 이용한 스트리밍 서비스 시스템 및 컴퓨터로 판독 가능한 기록매체
CA3013182A1 (en) 2016-02-23 2017-08-31 nChain Holdings Limited Universal tokenisation system for blockchain-based cryptocurrencies
MX2018010056A (es) 2016-02-23 2019-01-21 Nchain Holdings Ltd Un metodo y sistema para asegurar software de computadora usando un cuadro hash distribuido y una cadena de bloques.
SG10202011640TA (en) 2016-02-23 2021-01-28 Nchain Holdings Ltd System and method for controlling asset-related actions via a blockchain
CN108780548B (zh) 2016-02-23 2022-08-05 区块链控股有限公司 将椭圆曲线加密用于个人装置安全以共享秘密
EP4235552A3 (en) 2016-02-23 2023-09-13 nChain Licensing AG Methods and systems for efficient transfer of entities on a peer-to-peer distributed ledger using the blockchain
US11126976B2 (en) 2016-02-23 2021-09-21 nChain Holdings Limited Method and system for efficient transfer of cryptocurrency associated with a payroll on a blockchain that leads to an automated payroll method and system based on smart contracts
EP4167165A1 (en) 2016-02-23 2023-04-19 nChain Licensing AG Blockchain-based exchange with tokenisation
AU2017222468B2 (en) 2016-02-23 2023-01-12 nChain Holdings Limited Agent-based turing complete transactions integrating feedback within a blockchain system
US11120437B2 (en) * 2016-02-23 2021-09-14 nChain Holdings Limited Registry and automated management method for blockchain-enforced smart contracts
AU2017223129A1 (en) 2016-02-23 2018-07-12 nChain Holdings Limited Secure multiparty loss resistant storage and transfer of cryptographic keys for blockchain based systems in conjunction with a wallet management system
KR20180116278A (ko) 2016-02-23 2018-10-24 엔체인 홀딩스 리미티드 안전한 정보 교환과 계층 구조적이고 결정론적인 암호키를 위한 공통 비밀 결정
SG10202011641RA (en) 2016-02-23 2021-01-28 Nchain Holdings Ltd Tokenisation method and system for implementing exchanges on a blockchain
KR20180115293A (ko) 2016-02-23 2018-10-22 엔체인 홀딩스 리미티드 블록체인상의 개체의 안전한 전송을 위한 방법 및 시스템
US11410145B2 (en) 2016-02-23 2022-08-09 nChain Holdings Limited Blockchain-implemented method for control and distribution of digital content
EP3420669B1 (en) 2016-02-23 2021-03-24 Nchain Holdings Limited Cryptographic method and system for secure extraction of data from a blockchain
CN105847941B (zh) * 2016-03-17 2019-02-19 央广视讯传媒股份有限公司 一种基于hls协议的音视频流直播方法
US10075292B2 (en) 2016-03-30 2018-09-11 Divx, Llc Systems and methods for quick start-up of playback
CN105847897A (zh) * 2016-03-31 2016-08-10 乐视控股(北京)有限公司 一种提供及处理视频下载的方法及设备
US10447748B2 (en) 2016-05-12 2019-10-15 Apple Inc. Sharing media information between applications on client devices
US10432685B2 (en) * 2016-05-31 2019-10-01 Brightcove, Inc. Limiting key request rates for streaming media
WO2017209573A1 (en) * 2016-06-03 2017-12-07 Samsung Electronics Co., Ltd. Multi-point content transmission method and apparatus
CN106131610A (zh) * 2016-06-28 2016-11-16 乐视控股(北京)有限公司 在线播放视频的方法、设备及装置
CN106302745B (zh) * 2016-08-17 2020-07-14 上海交通大学 基于缓存和冗余消除的上行链路小基站内容调度方法
US11412272B2 (en) 2016-08-31 2022-08-09 Resi Media Llc System and method for converting adaptive stream to downloadable media
US9602846B1 (en) 2016-08-31 2017-03-21 Living As One, Llc System and method for asynchronous uploading of live digital multimedia with guaranteed delivery
US10511864B2 (en) 2016-08-31 2019-12-17 Living As One, Llc System and method for transcoding media stream
US10708336B2 (en) 2016-12-04 2020-07-07 Cisco Technology, Inc. System and method for announcing media changes
US10498795B2 (en) 2017-02-17 2019-12-03 Divx, Llc Systems and methods for adaptive switching between multiple content delivery networks during adaptive bitrate streaming
EP3370388B1 (en) * 2017-03-01 2021-05-05 EPOS Group A/S A communication system including eavesdropping
CN107517411B (zh) * 2017-09-04 2020-08-25 海信视像科技股份有限公司 一种基于GStreamer框架的视频播放方法
US11363133B1 (en) 2017-12-20 2022-06-14 Apple Inc. Battery health-based power management
US10817307B1 (en) 2017-12-20 2020-10-27 Apple Inc. API behavior modification based on power source health
US11509949B2 (en) * 2019-09-13 2022-11-22 Disney Enterprises, Inc. Packager for segmenter fluidity
US11792472B2 (en) * 2019-09-18 2023-10-17 Wayne Fueling Systems Llc Schedule-based uninterrupted buffering and streaming
US11223665B2 (en) * 2019-09-25 2022-01-11 Disney Enterprises, Inc. Media content system for transferring a playback marker between network-connected playback devices
CN113038245B (zh) * 2019-12-24 2023-07-21 瑞昱半导体股份有限公司 多媒体内容播放装置与多媒体内容播放方法
CN111277864B (zh) * 2020-02-18 2021-09-10 北京达佳互联信息技术有限公司 直播数据的编码方法、装置、流转系统及电子设备
US11140204B1 (en) * 2020-04-03 2021-10-05 Dish Network L.L.C. Media delivery notification data ingestion and display
US11570419B2 (en) * 2020-08-24 2023-01-31 T-Mobile Usa, Inc. Telematics and environmental data of live events in an extended reality environment
US11270666B1 (en) * 2020-10-02 2022-03-08 Dell Products L.P. Synchronizing preferences between multiple displays
US11595502B2 (en) * 2020-10-15 2023-02-28 Pensando Systems Inc. Methods and systems for layer 7 hardware assist and CPU task offloads
US11308756B1 (en) * 2020-11-23 2022-04-19 Adrenalineip Parallel streaming
TWI797626B (zh) * 2020-12-04 2023-04-01 姊弟投資股份有限公司 可應用於多媒體播放平台的多媒體系統及其方法
TWI733629B (zh) * 2020-12-04 2021-07-11 姊弟投資股份有限公司 可應用於多媒體播放平台的多媒體系統及其方法
US11520848B2 (en) * 2021-01-06 2022-12-06 Tencent America LLC Methods and apparatuses for dynamic adaptive streaming over HTTP
US20230118415A1 (en) * 2021-10-20 2023-04-20 Apple Inc. Systems and methods of using a media bit rate curve for streaming bit rate adaption
US11695815B1 (en) * 2022-12-06 2023-07-04 CodeShop, B.V. Method and system for redundant media presentation generation

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1645353A (zh) * 2001-01-04 2005-07-27 汤姆森许可公司 用于从内容集合器获取可获得的媒体业务的方法和设备
CN101465861A (zh) * 2009-01-16 2009-06-24 香港应用科技研究院有限公司 用于传输和/或接收媒体流的系统、方法和计算机编程产品

Family Cites Families (303)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4917390A (en) 1988-11-25 1990-04-17 Tetrafluor, Inc. Hydraulic seal assembly
US5065396A (en) 1990-01-02 1991-11-12 At&T Bell Laboratories Inverse multiplexer and demultiplexer techniques
US5719786A (en) 1993-02-03 1998-02-17 Novell, Inc. Digital media data stream network management system
US5361259A (en) 1993-02-19 1994-11-01 American Telephone And Telegraph Company Wide area network (WAN)-arrangement
EP0614317A3 (en) 1993-03-05 1995-01-25 Sony Corp Decoding video signals.
US5550982A (en) 1993-06-24 1996-08-27 Starlight Networks Video application server
US5610841A (en) 1993-09-30 1997-03-11 Matsushita Electric Industrial Co., Ltd. Video server
US5524110A (en) 1993-11-24 1996-06-04 Intel Corporation Conferencing over multiple transports
US5493514A (en) 1993-11-24 1996-02-20 Intel Corporation Process, apparatus, and system for encoding and decoding video signals
US5579239A (en) 1994-02-16 1996-11-26 Freeman; Mitchael C. Remote video transmission system
US5434860A (en) 1994-04-20 1995-07-18 Apple Computer, Inc. Flow control for real-time data streams
US5819034A (en) 1994-04-28 1998-10-06 Thomson Consumer Electronics, Inc. Apparatus for transmitting and receiving executable applications as for a multimedia system
US5583859A (en) 1994-08-30 1996-12-10 Bell Communications Research, Inc. Data labeling technique for high performance protocol processing
US5613032A (en) 1994-09-02 1997-03-18 Bell Communications Research, Inc. System and method for recording, playing back and searching multimedia events wherein video, audio and text can be searched and retrieved
US5668948A (en) 1994-09-08 1997-09-16 International Business Machines Corporation Media streamer with control node enabling same isochronous streams to appear simultaneously at output ports or different streams to appear simultaneously at output ports
US5821986A (en) 1994-11-03 1998-10-13 Picturetel Corporation Method and apparatus for visual communications in a scalable network environment
EP0720374A1 (en) 1994-12-30 1996-07-03 Daewoo Electronics Co., Ltd Apparatus for parallel decoding of digital video signals
US6181867B1 (en) 1995-06-07 2001-01-30 Intervu, Inc. Video storage and retrieval system
US6138147A (en) 1995-07-14 2000-10-24 Oracle Corporation Method and apparatus for implementing seamless playback of continuous media feeds
US5778374A (en) 1995-08-03 1998-07-07 International Business Machines Corporation Compressed common file directory for mass storage systems
BR9610415A (pt) 1995-09-01 1999-09-14 Starguide Digital Networks Inc Sistema de distribuição e produção de arquivos de áudio
IL115263A (en) 1995-09-12 1999-04-11 Vocaltec Ltd System and method for distributing multi-media presentations in a computer network
JPH0981497A (ja) 1995-09-12 1997-03-28 Toshiba Corp 実時間ストリームサーバ並びに実時間ストリームデータの格納方法および転送方法
US5835495A (en) 1995-10-11 1998-11-10 Microsoft Corporation System and method for scaleable streamed audio transmission over a network
US5933603A (en) 1995-10-27 1999-08-03 Emc Corporation Video file server maintaining sliding windows of a video data set in random access memories of stream server computers for immediate video-on-demand service beginning at any specified location
US5751951A (en) 1995-10-30 1998-05-12 Mitsubishi Electric Information Technology Center America, Inc. Network interface
FI99063C (fi) 1995-11-07 1997-09-25 Nokia Oy Ab Multimediavastaanotto digitaalisessa yleisradiojärjestelmässä
EP0773503B1 (en) 1995-11-10 2004-03-31 Kabushiki Kaisha Toshiba File transfer method, method for a file requesting client device, and file server device
US5627936A (en) 1995-12-21 1997-05-06 Intel Corporation Apparatus and method for temporal indexing of multiple audio, video and data streams
US5805823A (en) 1996-01-30 1998-09-08 Wayfarer Communications, Inc. System and method for optimal multiplexed message aggregation between client applications in client-server networks
US5841432A (en) 1996-02-09 1998-11-24 Carmel; Sharon Method and system of building and transmitting a data file for real time play of multimedia, particularly animation, and a data file for real time play of multimedia applications
IL117133A (en) 1996-02-14 1999-07-14 Olivr Corp Ltd Method and system for providing on-line virtual reality movies
AU1616597A (en) 1996-02-14 1997-09-02 Olivr Corporation Ltd. Method and systems for progressive asynchronous transmission of multimedia data
JP3258236B2 (ja) 1996-05-28 2002-02-18 株式会社日立製作所 マルチメディア情報転送システム
EP0827336B1 (en) 1996-08-30 2003-10-15 Matsushita Electric Industrial Co., Ltd. Digital broadcasting system, digital broadcasting apparatus, and associated receiver therefor
US5867230A (en) 1996-09-06 1999-02-02 Motorola Inc. System, device, and method for streaming a multimedia file encoded at a variable bitrate
US5928330A (en) 1996-09-06 1999-07-27 Motorola, Inc. System, device, and method for streaming a multimedia file
US5819160A (en) 1996-09-18 1998-10-06 At&T Corp Programmable radio subscription system for receiving selectively defined information
US20030093790A1 (en) 2000-03-28 2003-05-15 Logan James D. Audio and video program recording, editing and playback systems using metadata
US5953506A (en) 1996-12-17 1999-09-14 Adaptive Media Technologies Method and apparatus that provides a scalable media delivery system
CN1248504C (zh) 1997-01-29 2006-03-29 数字广告及销售有限公司 通过通信网络传送媒体文件的方法
JPH10229420A (ja) 1997-02-17 1998-08-25 Matsushita Electric Ind Co Ltd 通信システム
US6151632A (en) 1997-03-14 2000-11-21 Microsoft Corporation Method and apparatus for distributed transmission of real-time multimedia information
US6292834B1 (en) 1997-03-14 2001-09-18 Microsoft Corporation Dynamic bandwidth selection for efficient transmission of multimedia streams in a computer network
US6032193A (en) 1997-03-20 2000-02-29 Niobrara Research And Development Corporation Computer system having virtual circuit address altered by local computer to switch to different physical data link to increase data transmission bandwidth
CA2284797C (en) 1997-03-31 2004-12-28 Broadband Associates Method and system for providing a presentation on a network
US5974503A (en) 1997-04-25 1999-10-26 Emc Corporation Storage and access of continuous media files indexed as lists of raid stripe sets associated with file names
US5892915A (en) 1997-04-25 1999-04-06 Emc Corporation System having client sending edit commands to server during transmission of continuous media from one clip in play list for editing the play list
US6014694A (en) 1997-06-26 2000-01-11 Citrix Systems, Inc. System for adaptive video/audio transport over a network
US5999529A (en) 1997-09-16 1999-12-07 Nortel Networks Corporation Method and apparatus for interworking ATM adaptation layer formats
US5996015A (en) 1997-10-31 1999-11-30 International Business Machines Corporation Method of delivering seamless and continuous presentation of multimedia data files to a target device by assembling and concatenating multimedia segments in memory
US20020002039A1 (en) * 1998-06-12 2002-01-03 Safi Qureshey Network-enabled audio device
US6385596B1 (en) 1998-02-06 2002-05-07 Liquid Audio, Inc. Secure online music distribution system
US6377995B2 (en) 1998-02-19 2002-04-23 At&T Corp. Indexing multimedia communications
IL123819A (en) 1998-03-24 2001-09-13 Geo Interactive Media Group Lt Network media streaming
US6389403B1 (en) * 1998-08-13 2002-05-14 International Business Machines Corporation Method and apparatus for uniquely identifying a customer purchase in an electronic distribution system
EP0984584A1 (en) 1998-09-04 2000-03-08 America Online, Inc. Internet multimedia broadcast system
TW463165B (en) 1998-09-07 2001-11-11 Thomson Brandt Gmbh Method for addressing a bitstream to be recorded or being recorded on a storage medium
US6847778B1 (en) 1999-03-30 2005-01-25 Tivo, Inc. Multimedia visual progress indication system
US6538665B2 (en) 1999-04-15 2003-03-25 Apple Computer, Inc. User interface for presenting media information
JP2001036423A (ja) 1999-05-20 2001-02-09 Yamaha Corp 番組再生システム及び番組再生方法
ID27748A (id) 1999-05-28 2001-04-26 Matsushita Electric Ind Co Ltd Kartu memori semikonduktor, peralatan playback, peralatan perekam, metoda playback, metoda perekam dan medium perekam yang dapat dibaca komputer
RU2272318C2 (ru) 1999-08-03 2006-03-20 Вижионартс Инк. Считываемый компьютером носитель записи, на котором записан файл изображения, устройство для изготовления носителя записи, носитель, на котором записана программа для создания файла изображения, устройство для передачи файла изображения, устройство для обработки файла изображения и носитель, на котором записана программа обработки файла изображения
JP3522635B2 (ja) 1999-08-03 2004-04-26 ヴィジョンアーツ株式会社 画像ファイルを記録したコンピュータ読み取り可能な記録媒体、この記録媒体の作成装置、画像ファイル作成プログラムを記録した媒体、画像ファイル送信装置、画像ファイル処理装置、画像ファイル処理プログラムを記録した媒体
US8341662B1 (en) 1999-09-30 2012-12-25 International Business Machine Corporation User-controlled selective overlay in a streaming media
US6625750B1 (en) 1999-11-16 2003-09-23 Emc Corporation Hardware and software failover services for a file server
WO2001038993A1 (en) * 1999-11-29 2001-05-31 Binary Broadcasting Corporation Secure digital music distribution
US20070005428A1 (en) 1999-12-08 2007-01-04 Jacobs Paul E Method for distributing advertisements to client devices having e-mail software installed including multiple advertisement operational modes
US20020029166A1 (en) 1999-12-08 2002-03-07 Qualcomm Incorporated E-mail software and method and system for distributing advertisements to client devices that have such e-mail software installed thereon
US20070038728A1 (en) 1999-12-08 2007-02-15 Jacobs Paul E A system for controlling the distribution of advertisements to informational client devices using a playlist
EP1113642A3 (en) 1999-12-16 2004-04-14 Actv, Inc. Enhanced video programming system and method using a local host for network communication
JP3348067B2 (ja) 2000-02-29 2002-11-20 株式会社電通 広告の再生を制御する方法および装置
US6985848B2 (en) 2000-03-02 2006-01-10 Texas Instruments Incorporated Obtaining and exporting on-chip data processor trace and timing information
US6721489B1 (en) 2000-03-08 2004-04-13 Phatnoise, Inc. Play list manager
US7187947B1 (en) 2000-03-28 2007-03-06 Affinity Labs, Llc System and method for communicating selected information to an electronic device
US7725812B1 (en) 2000-03-31 2010-05-25 Avid Technology, Inc. Authoring system for combining temporal and nontemporal digital media
US7260564B1 (en) 2000-04-07 2007-08-21 Virage, Inc. Network video guide and spidering
EP1158799A1 (en) 2000-05-18 2001-11-28 Deutsche Thomson-Brandt Gmbh Method and receiver for providing subtitle data in several languages on demand
US7756743B1 (en) 2000-06-21 2010-07-13 Clubcom, Llc System and method for branding a facility
US7017189B1 (en) * 2000-06-27 2006-03-21 Microsoft Corporation System and method for activating a rendering device in a multi-level rights-management architecture
US6925495B2 (en) 2000-07-13 2005-08-02 Vendaria Media, Inc. Method and system for delivering and monitoring an on-demand playlist over a network using a template
US7624337B2 (en) 2000-07-24 2009-11-24 Vmark, Inc. System and method for indexing, searching, identifying, and editing portions of electronic multimedia files
US7471834B2 (en) 2000-07-24 2008-12-30 Vmark, Inc. Rapid production of reduced-size images from compressed video streams
US7689510B2 (en) * 2000-09-07 2010-03-30 Sonic Solutions Methods and system for use in network management of content
US7218837B2 (en) 2000-09-25 2007-05-15 Victor Company Of Japan, Ltd. Program-signal recording and reproducing apparatus
US6834297B1 (en) 2000-10-06 2004-12-21 Redline Networks, Inc. Web resource transfer acceleration system and method
US20020046315A1 (en) 2000-10-13 2002-04-18 Interactive Objects, Inc. System and method for mapping interface functionality to codec functionality in a portable audio device
EP2357651A3 (en) * 2000-12-07 2013-06-26 SanDisk Technologies Inc. System, method, and device for playing back recorded audio, video or other content from non-volatile memory cards, compact disks or other media
US20020083182A1 (en) 2000-12-18 2002-06-27 Alvarado Juan C. Real-time streamed data download system and method
US7640320B2 (en) 2001-01-18 2009-12-29 Yahoo! Inc. Method and system for managing digital content, including streaming media
US20080059532A1 (en) 2001-01-18 2008-03-06 Kazmi Syed N Method and system for managing digital content, including streaming media
US20020147634A1 (en) 2001-01-31 2002-10-10 Ronald Jacoby System for dynamic generation of online streaming media advertisements
US7308717B2 (en) * 2001-02-23 2007-12-11 International Business Machines Corporation System and method for supporting digital rights management in an enhanced Java™ 2 runtime environment
US20030061305A1 (en) 2001-03-30 2003-03-27 Chyron Corporation System and method for enhancing streaming media delivery and reporting
US8275709B2 (en) * 2001-05-31 2012-09-25 Contentguard Holdings, Inc. Digital rights management of content when content is a future live event
US20090178003A1 (en) * 2001-06-20 2009-07-09 Recent Memory Incorporated Method for internet distribution of music and other streaming content
US7076478B2 (en) 2001-06-26 2006-07-11 Microsoft Corporation Wrapper playlists on streaming media services
US6990497B2 (en) 2001-06-26 2006-01-24 Microsoft Corporation Dynamic streaming media management
CN100492524C (zh) 2001-09-10 2009-05-27 汤姆森特许公司 用于在数字音频数据播放器中建立带索引的播放列表的方法和装置
KR100913844B1 (ko) 2001-09-10 2009-08-26 톰슨 라이센싱 디지털 오디오 플레이어에서 사용자 인터페이스 및네비게이션 작업을 지원하기 위한 m3u 파일 포맷의 확장
US7721103B2 (en) * 2001-09-18 2010-05-18 Media Rights Technologies, Inc. System and method for providing global media content delivery
US7343487B2 (en) 2001-10-10 2008-03-11 Nokia Corporation Datacast distribution system
US7334016B2 (en) 2001-11-15 2008-02-19 Globalview Software Inc. Data transfer system for providing non-buffered, real-time streaming data users
US7260555B2 (en) * 2001-12-12 2007-08-21 Guardian Data Storage, Llc Method and architecture for providing pervasive security to digital assets
US7039784B1 (en) 2001-12-20 2006-05-02 Info Value Computing Inc. Video distribution system using dynamic disk load balancing with variable sub-segmenting
EP1470497A1 (en) * 2002-01-12 2004-10-27 Coretrust, Inc. Method and system for the information protection of digital content
US7159174B2 (en) 2002-01-16 2007-01-02 Microsoft Corporation Data preparation for media browsing
US7096234B2 (en) 2002-03-21 2006-08-22 Microsoft Corporation Methods and systems for providing playlists
JP2003288290A (ja) 2002-03-28 2003-10-10 Nippon Telegr & Teleph Corp <Ntt> ファイル配信方法
US20030186645A1 (en) 2002-04-02 2003-10-02 Robert Mori Method for marking a portion of a media broadcast for later use
US6868439B2 (en) 2002-04-04 2005-03-15 Hewlett-Packard Development Company, L.P. System and method for supervising use of shared storage by multiple caching servers physically connected through a switching router to said shared storage via a robust high speed connection
US7020710B2 (en) 2002-06-21 2006-03-28 Thomson Licensing Streaming media delivery on multicast networks for network and server bandwidth minimization and enhanced personalization
US7549060B2 (en) * 2002-06-28 2009-06-16 Microsoft Corporation Using a rights template to obtain a signed rights label (SRL) for digital content in a digital rights management system
US7272296B2 (en) 2002-07-24 2007-09-18 Thomson Licensing Navigating to a particular program or specific time increment in a personal video recorder
US7917557B2 (en) 2002-09-05 2011-03-29 Koninklijke Philips Electronics N.V. Method and devices for creating a second playlist based on a first playlist
US8584175B2 (en) 2002-09-16 2013-11-12 Touchtunes Music Corporation Digital downloading jukebox system with user-tailored music management, communications, and other tools
US7668842B2 (en) 2002-10-16 2010-02-23 Microsoft Corporation Playlist structure for large playlists
US7054888B2 (en) 2002-10-16 2006-05-30 Microsoft Corporation Optimizing media player memory during rendering
CN100463513C (zh) 2002-10-21 2009-02-18 松下电器产业株式会社 数据处理装置
US20040086120A1 (en) 2002-11-06 2004-05-06 Akins Glendon L. Selecting and downloading content to a portable player
US6812994B2 (en) 2002-12-04 2004-11-02 Eastman Kodak Company Streamlined methods and systems for scheduling and handling digital cinema content in a multi-theatre environment
KR100520115B1 (ko) 2002-12-27 2005-10-10 삼성전자주식회사 플레이리스트 관리 장치 및 방법
CA2457602A1 (en) 2003-02-19 2004-08-19 Impatica Inc. Method of synchronizing streams of real time data
US7383229B2 (en) * 2003-03-12 2008-06-03 Yahoo! Inc. Access control and metering system for streaming media
US7287083B1 (en) 2003-03-20 2007-10-23 Novell, Inc. Computing environment failover in a branch office environment
US7349663B1 (en) 2003-04-24 2008-03-25 Leave A Little Room Foundation Internet radio station and disc jockey system
KR100492567B1 (ko) 2003-05-13 2005-06-03 엘지전자 주식회사 이동통신 시스템의 http 기반 비디오 스트리밍 장치및 방법
US20040250293A1 (en) 2003-06-09 2004-12-09 Sony Corporation System and method for providing alternate program services
US20040260835A1 (en) 2003-06-23 2004-12-23 Welk Douglas L. Automotive internet radio system
EP1645130A1 (en) 2003-07-04 2006-04-12 Koninklijke Philips Electronics N.V. Method of broadcasting multimedia content via a distribution network
US20050005025A1 (en) 2003-07-04 2005-01-06 Michael Harville Method for managing a streaming media service
US7290058B2 (en) 2003-07-26 2007-10-30 Innomedia Pte Video mail server with reduced frame loss
KR20050015937A (ko) 2003-08-05 2005-02-21 삼성전자주식회사 정보 저장 매체, 그 재생 장치 및 방법
US20130097302A9 (en) 2003-10-01 2013-04-18 Robert Khedouri Audio visual player apparatus and system and method of content distribution using the same
US7673062B2 (en) * 2003-11-18 2010-03-02 Yahoo! Inc. Method and apparatus for assisting with playback of remotely stored media files
US8544050B2 (en) 2003-12-30 2013-09-24 Aol Inc. Rule-based playlist engine
US7949726B2 (en) 2004-03-12 2011-05-24 Ocean And Coastal Environmental Sensing, Inc. System and method for delivering information on demand
US10200504B2 (en) * 2007-06-12 2019-02-05 Icontrol Networks, Inc. Communication protocols over internet protocol (IP) networks
JP2006526215A (ja) 2004-03-22 2006-11-16 ニトゲン・テクノロジーズ・インコーポレーテッド ストリーミング基盤のコンテンツ分散形ネットワークシステムとファイル分割、併合及び再生方法
JP2005323325A (ja) 2004-03-26 2005-11-17 Nec Corp 放送映像音声データ記録方法、装置、および記録媒体
US7818444B2 (en) 2004-04-30 2010-10-19 Move Networks, Inc. Apparatus, system, and method for multi-bitrate content streaming
US7720983B2 (en) 2004-05-03 2010-05-18 Microsoft Corporation Fast startup for streaming media
JP2005332274A (ja) 2004-05-20 2005-12-02 Toshiba Corp 動画像中のオブジェクトに関するメタデータストリームのデータ構造、検索方法及び再生方法
US20080288536A1 (en) 2004-07-23 2008-11-20 Commonwealth Scientific And Industrial Research Organisation Method and System for Integrating Browsing Histories with Media Playlists
US20110214059A1 (en) * 2010-03-01 2011-09-01 Ashley Edwardo King Media Distribution in a Content Delivery Network
JP4332089B2 (ja) 2004-08-19 2009-09-16 ソニー株式会社 再生装置、再生方法および再生プログラム、ならびに、記録媒体
US20060075428A1 (en) 2004-10-04 2006-04-06 Wave7 Optics, Inc. Minimizing channel change time for IP video
JP2007065928A (ja) 2005-08-30 2007-03-15 Toshiba Corp 情報記憶媒体、情報処理方法、情報転送方法、情報再生方法、情報再生装置、情報記録方法、情報記録装置、及びプログラム
US7412149B2 (en) 2004-10-28 2008-08-12 Bitband Technologies, Ltd. Trick mode generation in video streaming
CA2590234A1 (en) 2004-12-13 2006-06-22 Muvee Technologies Pte Ltd A method of automatically editing media recordings
US7490775B2 (en) 2004-12-30 2009-02-17 Aol Llc, A Deleware Limited Liability Company Intelligent identification of multimedia content for synchronization
WO2006074093A2 (en) 2005-01-05 2006-07-13 Divx, Inc. Media transfer protocol
US7434154B2 (en) 2005-01-07 2008-10-07 Dell Products L.P. Systems and methods for synchronizing media rendering
US20070214182A1 (en) 2005-01-15 2007-09-13 Outland Research, Llc Establishment-based media and messaging service
KR100567157B1 (ko) 2005-02-11 2006-04-04 비디에이터 엔터프라이즈 인크 모바일 환경에서의 플레이리스트를 통한 다수 파일의 스트리밍 방법 및 그 시스템
US7818350B2 (en) 2005-02-28 2010-10-19 Yahoo! Inc. System and method for creating a collaborative playlist
JP4593618B2 (ja) * 2005-03-08 2010-12-08 パナソニック株式会社 パケット送信装置
US8176565B2 (en) 2005-04-15 2012-05-08 Sony Corporation Information processing apparatus, information processing method, and computer program
EP1873780B1 (en) 2005-04-22 2018-10-03 Sony Corporation Recording device, recording method, reproducing device, reproducing method, program, and recording medium
US7693280B2 (en) * 2005-04-22 2010-04-06 Microsoft Corporation Rights management system for streamed multimedia content
US8321041B2 (en) 2005-05-02 2012-11-27 Clear Channel Management Services, Inc. Playlist-based content assembly
EP1877981A4 (en) 2005-05-02 2009-12-16 Univ Virginia SYSTEMS, DEVICES AND METHODS FOR INTERPRETATION OF MOVEMENTS
US7686215B2 (en) 2005-05-21 2010-03-30 Apple Inc. Techniques and systems for supporting podcasting
JP4731214B2 (ja) 2005-06-17 2011-07-20 ソニー エリクソン モバイル コミュニケーションズ, エービー 携帯端末装置、コンテンツ配信装置、コンテンツ配信システム、及び通信プログラム
US20080005348A1 (en) 2005-06-24 2008-01-03 David Kosiba System and method for enabling playlist navigation of digital multimedia content
US7519681B2 (en) * 2005-06-30 2009-04-14 Intel Corporation Systems, methods, and media for discovering remote user interface applications over a network
JP4846798B2 (ja) * 2005-07-05 2011-12-28 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ デジタルコンテンツ保護に関する方法、システム及び装置
GB0514492D0 (en) * 2005-07-14 2005-08-17 Ntnu Technology Transfer As Secure media streaming
CN102905166B (zh) 2005-07-18 2014-12-31 汤姆森许可贸易公司 使用元数据来处理多个视频流的方法和设备
US7680824B2 (en) 2005-08-11 2010-03-16 Microsoft Corporation Single action media playlist generation
US20070055743A1 (en) 2005-09-02 2007-03-08 Pirtle Ross M Remote control media player
US20070174147A1 (en) 2005-12-30 2007-07-26 Realnetworks System and method for updating a playlist based upon ratings
JP2007115293A (ja) 2005-10-17 2007-05-10 Toshiba Corp 情報記憶媒体、プログラム、情報再生方法、情報再生装置、データ転送方法、及びデータ処理方法
JP2007158414A (ja) 2005-11-30 2007-06-21 Matsushita Electric Ind Co Ltd コンテンツ配信システム及びコンテンツ仲介サーバ
TW200723081A (en) 2005-12-13 2007-06-16 Universal Scient Ind Co Ltd Circular multimedia playback progress indicator and method of indicating signals thereof
US8214516B2 (en) 2006-01-06 2012-07-03 Google Inc. Dynamic media serving infrastructure
KR100724950B1 (ko) * 2006-03-09 2007-06-04 삼성전자주식회사 Dlna 시스템에서 ieee1394 인터페이스를 사용하는 장치 간의 콘텐츠 공유 방법
JPWO2007111312A1 (ja) 2006-03-28 2009-08-13 パイオニア株式会社 コンテンツ配信システム、サーバ装置、コンテンツ配信方法およびプログラム
US7730420B1 (en) 2006-05-03 2010-06-01 The Weather Channel, Inc. Systems and methods for creating a playlist
US20080008439A1 (en) 2006-06-06 2008-01-10 Guangqun Liu Method and System For Dynamic Management Of Multiple Media Data Streams
US20070282905A1 (en) 2006-06-06 2007-12-06 Sony Ericsson Mobile Communications Ab Communication terminals and methods for prioritizing the playback of distributed multimedia files
WO2008002295A1 (en) 2006-06-27 2008-01-03 Thomson Licensing Performance aware peer-to-peer video-on-demand
US7917963B2 (en) * 2006-08-09 2011-03-29 Antenna Vaultus, Inc. System for providing mobile data security
US20080133603A1 (en) * 2006-08-28 2008-06-05 Lawrence Fischer System and method for media publishing
GB2454618B (en) * 2006-09-01 2010-03-03 Rowe Internat Corp Automatic music management methods and systems
KR20080020868A (ko) 2006-09-01 2008-03-06 삼성전자주식회사 스트리밍 컨텐츠 기록과 재생에 관한 장치 및 방법
JP4694448B2 (ja) 2006-09-13 2011-06-08 アルパイン株式会社 オーディオ装置
US20080109888A1 (en) * 2006-09-14 2008-05-08 Shah Ullah Methods and systems for securing content projected to a nearby device
US20080091717A1 (en) 2006-09-27 2008-04-17 Zachary Adam Garbow Generation of Collaborative Playlist Based Upon Musical Preference Data from Multiple Digital Media Players
KR100928090B1 (ko) 2006-10-30 2009-11-23 주식회사 한랭크닷컴 웹상의 텍스트를 음악으로 재생하는 저작 시스템 및 방법
WO2008058259A2 (en) 2006-11-08 2008-05-15 Mywaves, Inc. An apparatus and method for dynamically providing web-based multimedia to a mobile phone
WO2008058529A2 (de) 2006-11-17 2008-05-22 Faurecia Autositze Gmbh Fahrzeugsitz
US8176058B2 (en) 2006-11-30 2012-05-08 Yahoo! Inc. Method and systems for managing playlists
US9124650B2 (en) * 2006-12-13 2015-09-01 Quickplay Media Inc. Digital rights management in a mobile environment
US8219636B2 (en) 2006-12-18 2012-07-10 Verizon Patent And Licensing Inc. Networked media recording
WO2008081415A2 (en) 2006-12-28 2008-07-10 France Telecom Media file server
US8180735B2 (en) 2006-12-29 2012-05-15 Prodea Systems, Inc. Managed file backup and restore at remote storage locations through multi-services gateway at user premises
US20080256129A1 (en) 2006-12-31 2008-10-16 Robert Salinas Method and System of Creating Media Playlists and Sending to Mobile Devices
US20080159715A1 (en) 2007-01-03 2008-07-03 Microsoft Corporation Contextual linking and out-of-band delivery of related online content
US20080209066A1 (en) 2007-01-24 2008-08-28 Spio Mary A Method and apparatus for providing continuous playback of media programs at a remote end user computer
US20100281042A1 (en) * 2007-02-09 2010-11-04 Novarra, Inc. Method and System for Transforming and Delivering Video File Content for Mobile Devices
JP4389179B2 (ja) 2007-02-27 2009-12-24 ブラザー工業株式会社 メディア接続装置、メディア接続システム、メディア接続システムの操作方法
US10382514B2 (en) 2007-03-20 2019-08-13 Apple Inc. Presentation of media in an application
JP2008251082A (ja) 2007-03-30 2008-10-16 Hitachi Ltd 録画システムおよび録画再生方法
US20080250319A1 (en) 2007-04-05 2008-10-09 Research In Motion Limited System and method for determining media playback behaviour in a media application for a portable media device
US20080271076A1 (en) 2007-04-27 2008-10-30 General Instrument Corporation Method and Apparatus for Switching Between Edge Device Resources in an SDV System
WO2009003684A1 (en) * 2007-07-02 2009-01-08 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Apparatus and method for storing and reading a file having a media data container and a metadata container
AU2008272901B2 (en) 2007-07-03 2011-03-17 3M Innovative Properties Company System and method for assigning pieces of content to time-slots samples for measuring effects of the assigned content
US7769829B1 (en) 2007-07-17 2010-08-03 Adobe Systems Inc. Media feeds and playback of content
TW200910864A (en) 2007-08-22 2009-03-01 Darling Digital Co Ltd System and method for transmitting audio/video stream in a point-to-point manner
DE102007041143B4 (de) 2007-08-30 2010-04-08 Siemens Enterprise Communications Gmbh & Co. Kg Verfahren zum Analysieren von gleichzeitig übertragenen, verschlüsselten Datenströmen in IP-Netzwerken
WO2009046435A1 (en) 2007-10-05 2009-04-09 Aharon Mizrahi System and method for enabling search of content
CN101448009B (zh) 2007-11-27 2013-02-20 鸿富锦精密工业(深圳)有限公司 音乐同步播放系统、方法及音乐播放器
US9734198B2 (en) 2007-11-30 2017-08-15 Red Hat, Inc. Query processing
US8543622B2 (en) * 2007-12-07 2013-09-24 Patrick Giblin Method and system for meta-tagging media content and distribution
EP2235642A4 (en) 2007-12-13 2016-08-03 Highwinds Holdings Inc CONTENT DELIVERY NETWORK
US20090157731A1 (en) 2007-12-14 2009-06-18 Zigler Jeffrey D Dynamic audio file and method of use
US8364296B2 (en) 2008-01-02 2013-01-29 International Business Machines Corporation Method and system for synchronizing playing of an ordered list of auditory content on multiple playback devices
US8677430B2 (en) * 2008-01-04 2014-03-18 Apple, Inc. Content rental system
WO2009097492A1 (en) 2008-01-30 2009-08-06 Azuki Systems, Inc. Media navigation system
US8776161B2 (en) * 2008-02-12 2014-07-08 Ciena Corporation Systems and methods for video processing in network edge devices
EP2259251A4 (en) 2008-03-07 2011-07-27 Victor Company Of Japan SERVER DEVICE, TERMINAL, PLAYBACK DEVICE
US8239889B2 (en) * 2008-03-10 2012-08-07 Hulu, LLC Method and apparatus for collecting viewer survey data and for providing compensation for same
WO2012047673A1 (en) * 2010-09-27 2012-04-12 Hulu Llc Method and apparatus for providing a user-editable playlist of advertisements
WO2009120301A2 (en) 2008-03-25 2009-10-01 Square Products Corporation System and method for simultaneous media presentation
WO2009123694A2 (en) 2008-03-31 2009-10-08 Packetvideo Corp. System and method for managing, controlling and/or rendering media in a network
US20090259711A1 (en) * 2008-04-11 2009-10-15 Apple Inc. Synchronization of Media State Across Multiple Devices
US20100040349A1 (en) 2008-05-01 2010-02-18 Elliott Landy System and method for real-time synchronization of a video resource and different audio resources
US8275880B2 (en) 2008-05-06 2012-09-25 Microsoft Corporation Media content programming, delivery, and consumption
US7921222B2 (en) * 2008-05-06 2011-04-05 Vantrix Corporation Method and system for fast channel switching using standard RTSP messages
WO2009140208A2 (en) 2008-05-12 2009-11-19 Swarmcast, Inc. Live media delivery over a packet-based computer network
US8644675B2 (en) 2008-06-06 2014-02-04 Deluxe Digital Studios, Inc. Methods and systems for use in providing playback of variable length content in a fixed length framework
KR20100000335A (ko) 2008-06-24 2010-01-06 삼성전자주식회사 유저 인터페이스, 컨텐츠 내비게이션 방법 및 컨텐츠 재생장치와 저장 매체
US8452855B2 (en) 2008-06-27 2013-05-28 Yahoo! Inc. System and method for presentation of media related to a context
US8375137B2 (en) 2008-07-22 2013-02-12 Control4 Corporation System and method for streaming audio using a send queue
US10007668B2 (en) 2008-08-01 2018-06-26 Vantrix Corporation Method and system for triggering ingestion of remote content by a streaming server using uniform resource locator folder mapping
US8473628B2 (en) 2008-08-29 2013-06-25 Adobe Systems Incorporated Dynamically altering playlists
US8265140B2 (en) 2008-09-30 2012-09-11 Microsoft Corporation Fine-grained client-side control of scalable media delivery
TWI395487B (zh) 2008-10-02 2013-05-01 Ind Tech Res Inst 應用於網狀點對點串流系統之播放延遲時間之調整方法及其電腦程式產品
EP2175577A3 (en) 2008-10-09 2012-03-28 MMI Broadcasting Ltd. Apparatus and methods for broadcasting
US9788043B2 (en) * 2008-11-07 2017-10-10 Digimarc Corporation Content interaction methods and systems employing portable devices
US8527877B2 (en) 2008-11-25 2013-09-03 At&T Intellectual Property I, L.P. Systems and methods to select media content
US9060187B2 (en) 2008-12-22 2015-06-16 Netflix, Inc. Bit rate stream switching
EP3300372B1 (en) 2008-12-31 2022-01-26 Apple Inc. Updating a playlist for streaming content
US8156089B2 (en) 2008-12-31 2012-04-10 Apple, Inc. Real-time or near real-time streaming with compressed playlists
US20100169303A1 (en) 2008-12-31 2010-07-01 David Biderman Playlists for real-time or near real-time streaming
US8260877B2 (en) 2008-12-31 2012-09-04 Apple Inc. Variant streams for real-time or near real-time streaming to provide failover protection
US8161137B2 (en) 2009-01-16 2012-04-17 At&T Intellectual Property I., L.P. Environment delivery network
US8621044B2 (en) 2009-03-16 2013-12-31 Microsoft Corporation Smooth, stateless client media streaming
US8026805B1 (en) * 2009-04-09 2011-09-27 Adobe Systems Incorporated Media tracker
US8429287B2 (en) 2009-04-29 2013-04-23 Rangecast Technologies, Llc Network audio distribution system and method
US9602864B2 (en) * 2009-06-08 2017-03-21 Time Warner Cable Enterprises Llc Media bridge apparatus and methods
US9195775B2 (en) * 2009-06-26 2015-11-24 Iii Holdings 2, Llc System and method for managing and/or rendering internet multimedia content in a network
US10410222B2 (en) 2009-07-23 2019-09-10 DISH Technologies L.L.C. Messaging service for providing updates for multimedia content of a live event delivered over the internet
EP2280521A1 (en) 2009-07-30 2011-02-02 Alcatel Lucent Method of switching media content for a mobile apparatus
CA2822185C (en) * 2009-08-14 2014-04-22 Azuki Systems, Inc. Method and system for unified mobile content protection
US9537967B2 (en) 2009-08-17 2017-01-03 Akamai Technologies, Inc. Method and system for HTTP-based stream delivery
US20110055876A1 (en) * 2009-08-26 2011-03-03 Lewis Holly Lynn Universal Entertainment Unification System
US8392600B2 (en) 2009-09-14 2013-03-05 Adobe Systems Incorporated Dynamic stream switch control
CA2774363C (en) * 2009-09-15 2020-06-23 Comcast Cable Communications, Llc Dynamic content packaging
US20110096828A1 (en) 2009-09-22 2011-04-28 Qualcomm Incorporated Enhanced block-request streaming using scalable encoding
KR20110034820A (ko) * 2009-09-29 2011-04-06 엘지전자 주식회사 대화형 프로그램 가이드를 디스플레이하는 방법, 대화형 프로그램 가이드를 디스플레이하는 사용자 장치, 통합 데이터 가이드 정보 목록을 제공하는 방법 및 통합 데이터 가이드 정보 목록 제공 장치
US9237387B2 (en) 2009-10-06 2016-01-12 Microsoft Technology Licensing, Llc Low latency cacheable media streaming
WO2011044287A1 (en) 2009-10-06 2011-04-14 Openwave Systems Inc. Managing network traffic by editing a manifest file and/or using intermediate flow control
US10264029B2 (en) * 2009-10-30 2019-04-16 Time Warner Cable Enterprises Llc Methods and apparatus for packetized content delivery over a content delivery network
EP3220281A1 (en) 2009-11-04 2017-09-20 Amotech Co., Ltd. System and method for media content streaming
KR101750049B1 (ko) 2009-11-13 2017-06-22 삼성전자주식회사 적응적인 스트리밍 방법 및 장치
KR101750048B1 (ko) 2009-11-13 2017-07-03 삼성전자주식회사 변속 재생 서비스 제공 방법 및 장치
CA2780440C (en) 2009-11-16 2018-03-06 Twentieth Century Fox Film Corporation Non-destructive file based mastering for multiple languages and versions
KR20110072728A (ko) 2009-12-23 2011-06-29 삼성전자주식회사 셋탑박스간 영상 이어 보기 서비스 제공 방법 및 장치
WO2011087449A1 (en) 2010-01-18 2011-07-21 Telefonaktiebolaget L M Ericsson (Publ) Methods and arrangements for http media stream distribution
US8972541B2 (en) * 2010-02-12 2015-03-03 Alcatel Lucent Method and apparatus providing access network aware presence to applications
EP2362375A1 (en) 2010-02-26 2011-08-31 Fraunhofer-Gesellschaft zur Förderung der Angewandten Forschung e.V. Apparatus and method for modifying an audio signal using harmonic locking
US8745388B2 (en) * 2010-03-22 2014-06-03 EchoStar Technologies, L.L.C. Systems and methods for securely streaming media content
US8560642B2 (en) 2010-04-01 2013-10-15 Apple Inc. Real-time or near real-time streaming
GB201105502D0 (en) 2010-04-01 2011-05-18 Apple Inc Real time or near real time streaming
US9043484B2 (en) * 2010-04-02 2015-05-26 Disney Enterprises, Inc. Streaming playback and dynamic ad insertion
US8954596B2 (en) * 2010-04-02 2015-02-10 Netflix, Inc. Dynamic virtual chunking of streaming media content
US9230126B2 (en) * 2010-05-04 2016-01-05 Verimatrix, Inc. Device authentication for secure key retrieval for streaming media players
US20110289084A1 (en) * 2010-05-18 2011-11-24 Rovi Technologies Corporation Interface for relating clusters of data objects
KR20130115986A (ko) * 2010-05-27 2013-10-22 에스엠에스씨 홀딩스 에스에이알엘 미디어 스트림의 끊김 없는 전송
US8555163B2 (en) 2010-06-09 2013-10-08 Microsoft Corporation Smooth streaming client component
AU2010202741B1 (en) 2010-06-30 2010-12-23 Adeia Media Holdings Llc Dynamic chunking for media streaming
BR112013001383B1 (pt) 2010-07-20 2021-12-21 Interdigital Madison Patent Holdings Método para apresentar conteúdo durante operações de modos de truque
US8554938B2 (en) * 2010-08-31 2013-10-08 Millind Mittal Web browser proxy-client video system and method
WO2012030318A1 (en) * 2010-09-03 2012-03-08 Packetvideo Corporation System and method for transferring media content
EP2614653A4 (en) 2010-09-10 2015-04-15 Nokia Corp METHOD AND APPARATUS FOR ADAPTIVE CONTINUOUS DIFFUSION
MY168733A (en) 2010-11-02 2018-11-29 Ericsson Telefon Ab L M Methods and devices for media description delivery
US8532464B2 (en) 2010-11-08 2013-09-10 Deluxe Digital Studios, Inc. Methods and systems for use in controlling playback of content in relation to recorded content
US20120117588A1 (en) * 2010-11-10 2012-05-10 Sony Network Entertainment International Llc Method and device to control iptv settings from a second display
US20120124179A1 (en) 2010-11-12 2012-05-17 Realnetworks, Inc. Traffic management in adaptive streaming protocols
US9510061B2 (en) 2010-12-03 2016-11-29 Arris Enterprises, Inc. Method and apparatus for distributing video
US9800941B2 (en) * 2011-01-03 2017-10-24 Curt Evans Text-synchronized media utilization and manipulation for transcripts
US8914534B2 (en) 2011-01-05 2014-12-16 Sonic Ip, Inc. Systems and methods for adaptive bitrate streaming of media stored in matroska container files using hypertext transfer protocol
WO2012100001A1 (en) * 2011-01-18 2012-07-26 T1 Visions, Llc Multimedia, multiuser system and associated methods
EP2676455A2 (en) * 2011-02-18 2013-12-25 Aereo, Inc. Method and system for program and stream control of video to target device
US8798777B2 (en) 2011-03-08 2014-08-05 Packetvideo Corporation System and method for using a list of audio media to create a list of audiovisual media
US8849950B2 (en) 2011-04-07 2014-09-30 Qualcomm Incorporated Network streaming of video data using byte range requests
US8510555B2 (en) 2011-04-27 2013-08-13 Morega Systems Inc Streaming video server with virtual file system and methods for use therewith
US20120284804A1 (en) * 2011-05-02 2012-11-08 Authentec, Inc. System and method for protecting digital contents with digital rights management (drm)
US8543660B2 (en) * 2011-05-27 2013-09-24 Verizon Patent And Licensing Inc. Systems and methods for bridging and managing media content associated with separate media content networks
US9462024B2 (en) 2011-06-08 2016-10-04 Futurewei Technologies, Inc. System and method of media content streaming with a multiplexed representation
US8813246B2 (en) * 2012-04-23 2014-08-19 Inside Secure Method for playing digital contents protected with a DRM (digital right management) scheme and corresponding system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1645353A (zh) * 2001-01-04 2005-07-27 汤姆森许可公司 用于从内容集合器获取可获得的媒体业务的方法和设备
CN101465861A (zh) * 2009-01-16 2009-06-24 香港应用科技研究院有限公司 用于传输和/或接收媒体流的系统、方法和计算机编程产品

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"HTTP Live Streaming ,draft-pantos-http-live-streaming-03";R.Pantos, Ed;《Internet-Draft》;20100402;1-22页 *

Also Published As

Publication number Publication date
CN102882845A (zh) 2013-01-16
US20110252118A1 (en) 2011-10-13
TW201202975A (en) 2012-01-16
CN102238179A (zh) 2011-11-09
US10523726B2 (en) 2019-12-31
CN102238179B (zh) 2014-12-10
US20150172343A1 (en) 2015-06-18
US8892691B2 (en) 2014-11-18
HK1163979A1 (zh) 2012-09-14
US20170078345A1 (en) 2017-03-16
TWI451279B (zh) 2014-09-01
GB2479455A (en) 2011-10-12
GB201105900D0 (en) 2011-05-18
GB2479455B (en) 2014-03-05
WO2011127312A1 (en) 2011-10-13
US9531779B2 (en) 2016-12-27

Similar Documents

Publication Publication Date Title
CN102882845B (zh) 实时或准实时流传输
CN102223407B (zh) 数据处理系统及其方法
CN103583051B (zh) 用于实时或近实时流传输的播放列表
CN103650526B (zh) 用于实时或近实时流传输的播放列表
CN103314598B (zh) 具有压缩播放列表的实时或近实时流传输
CN102611701B (zh) 通过非流化协议流化多媒体数据的方法
US10785508B2 (en) System for measuring video playback events using a server generated manifest/playlist
EP2646936B1 (en) Real-time or near real-time streaming
WO2011123821A1 (en) Real-time or near real-time streaming
GB2510766A (en) Determining earliest and latest transmission times for playlist files having plural tags and universal resource indicators (URIs)

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1180485

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1180485

Country of ref document: HK