在媒体流之间切换的制作方法

文档序号:12515750阅读:326来源:国知局
在媒体流之间切换的制作方法与工艺

诸如电视节目或电影或无线电内容的媒体的流式传输通常指由客户端设备作为内容的片段的流接收的媒体从服务器设备的传输。通常,内容不存储在客户端设备处,并且在从服务器设备接收流中的片段之后很快被呈现。流媒体的现有技术中的示例包括使用HTTP协议通过使用一个或多个播放列表来递送流内容的流技术。美国专利8,099,473和公布的美国专利申请2012/0311094提供了对通过使用HTTP兼容协议来使用播放列表流式传输媒体(诸如视频、音频或视频和音频两者)的描述。



技术实现要素:

在本描述中存在涉及用于提供流媒体的方法和系统的多个方面。在一个方面,一种用于处理在一个或多个播放列表中指定的媒体的方法包括:接收表示媒体的多个变体的数据并且在服务器设备处为媒体的每个变体确定峰值带宽和平均带宽,其中每个变体示出相同的媒体(例如,相同的电影或电视节目或其他内容)但是使用不同的编码,并且然后创建包括用于每个变体的通用资源标识符(URI)的主播放列表。每个URI可由客户端设备用于检索变体中的一个变体的媒体播放列表,并且在一个实施方案中,主播放列表包括指定用于每个变体的峰值带宽和平均带宽的数据。然后,客户端设备可请求主播放列表,该主播放列表然后由服务器设备传输到客户端设备。将主播放列表传输到客户端设备的服务器设备可为创建主播放列表的相同的服务器设备,或者在另一实施方案中,传输主播放列表的服务器设备可与创建主播放列表的服务器设备(“播放列表创建服务器”)分开并且与其不同。

然后,客户端设备可使用峰值带宽和平均带宽来确定是否在主播放列表中从一个变体切换到另一个变体。在一个实施方案中,客户端设备可通过选择并接收包括用于第一变体的一个或多个片段的URI的第一媒体播放列表来执行该方法。客户端设备还可确定在下载第一变体的片段期间的观察的比特率,并且在显示媒体之前将第一变体的媒体存储在缓冲器中。然后,客户端设备可在变体之间进行切换之前确定缓冲器中的数据量是否超过与第二变体的待下载的数据的估计量相关的估计值。在一个实施方案中,可从第二变体的峰值带宽和第二变体的一个或多个片段的目标持续时间的组合导出估计值。客户端设备还可将从主播放列表获得的用于第二变体的平均带宽与观察的比特率进行比较;基于该比较和缓冲器中的数据的状态,客户端设备可响应于确定缓冲器中的数据量超过估计值并且响应于确定观察的比特率超过平均带宽而切换到第二变体。在一个实施方案中,第二变体可提供更高质量的编码,诸如视频媒体的更高分辨率编码。

以上概述不包括本公开的所有实施方案的详尽列表。描述了其他方法,并且描述了系统和机器可读非暂态存储介质。可从上面概述的各个方面和实施方案以及以下具体实施方式中公开的那些的所有合适组合来实践所有系统和方法。

附图说明

本发明以举例的方式进行说明,并且不仅限于各个附图的图形,在附图中类似的标号指示类似的元件。

图1示出了具有两个变体的主播放列表的示例,每个变体具有峰值带宽的值和平均带宽的值。

图2A是示出根据本发明的一个实施方案的用于使用平均带宽来确定是否切换到另一个变体的方法的示例的流程图。

图2B是示出用于使用平均比特率来确定是否在变体之间切换的方法的流程图。

图3示出了用于现有流的缓冲器可如何用于确定何时以及是否切换到另一个变体的示例。

图4示出了可包括一个或多个内容创建服务器和一个或多个分布(例如,传送)服务器的分布式架构的示例。

图5示出了可实现本文所述的一种或多种方法的数据处理系统的示例。

具体实施方式

将参考以下讨论的细节来描述各种实施方案和方面,并且附图将对所述多个实施方案进行说明。以下描述和附图是示例性的,并且不应被理解为限制性的。描述了众多的具体细节以提供对各个实施方案的全面理解。然而,在某些示例中,众所周知或常规的细节并未被描述以便提供对实施方案的简明论述。

在本说明书中对“一个实施方案”或“实施方案”的引用是指结合该实施方案描述的特定特征、结构或特性可以被包括在少一个实施方案中。在本说明书中的不同位置出现的短语“在一个实施方案中”不一定都是指同一个实施方案。在随后的附图中所描绘的过程由包括硬件(例如,电路系统、专用逻辑等等)、软件或两者的组合的处理逻辑来执行。虽然下文按照某些顺序操作来描述该过程,但应当理解,所描述的至少某些操作可以不同的顺序执行。此外,某些操作也可并行执行而非按顺序执行。

美国专利8,099,473和美国专利申请公布U.S.2012/0311094提供了用于通过使用播放列表结合通过HTTP协议或兼容HTTP协议或其他适用的协议的传输来提供流媒体的方法的背景描述;美国专利8,099,473和美国专利申请公布U.S.2012/0311094在此通过引用整体并入本文。这些文献描述了各种数据处理系统,诸如美国专利8,099,473的图4、图5和图8中所示的系统,其可与本文所述的一个或多个实施方案一起使用。此外,该专利描述了用于在相同的媒体节目的变体之间切换的各种方法,诸如电视节目或电影;参见例如参考该美国专利的图9A至9D的变体之间切换的讨论。

在本公开的一个方面中,用于在变体之间切换的实施方案采用主播放列表中指示的平均带宽值,而不是在决定是否切换到另一变体时使用峰值带宽值的现有方法。该峰值带宽值可被定义为包括多个片段的流内的任何片段中的最大比特率。图1、图2A、图2B和图3示出了在确定是否切换到另一变体时可使用平均带宽值的一个或多个实施方案。图1示出了包括相同的媒体呈现的至少两个变体的主播放列表101的示例。具体地,媒体变体1和媒体变体2被标记为变体102和变体104,并且那些变体中的每个变体具有相关联的峰值带宽值和平均带宽值。具体地,变体102包括相关联的峰值带宽和平均带宽105,而变体104包括相关联的峰值带宽和平均带宽107。峰值带宽105可为由服务器或某些其他系统确定的值,服务器或某些其他系统确定或估计在呈现内容时该内容的任何单个片段的最大比特率;平均带宽是呈现的内容的比特率,其是随时间的平均量。通常,在内容的整个时间上计算或确定平均带宽。例如,如果内容是一小时电视节目,则在一小时时间段内确定平均带宽。在一个实施方案中,可通过将传输内容的总量(例如,在内容被正常呈现的整个时间段内的比特、字节、千字节等)除以该时间段来计算平均带宽。平均带宽可表示为每秒的比特数,并且可通过对任何计算值进行四舍五入来近似。峰值带宽和平均带宽值基于在正常(“1x”)回放速度下呈现(例如,显示)内容时流中的数据,并且这些值独立于服务器(将内容传输到客户端)和接收客户端之间的下载连接的速度。应当理解,平均带宽或比特率通常小于峰值带宽或比特率。例如,许多视频具有不随时间变化的场景,并且那些场景倾向于具有较低的比特率,因此具有此类场景的视频的平均比特率或带宽将低于其中物体、图像等正在屏幕上快速移动或颜色正在快速改变等的动作场景期间可发生的视频的峰值带宽。下面提供包括主播放列表中的每个变体的峰值带宽和平均带宽值的样本主播放列表的示例。

#EXTM3U

############################

#Alt Audio Language Groups

############################

#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac-hi",LANGUAGE="eng",

NAME="English",AUTOSELECT=YES,DEFAULT=YES,

URI="adventureland_audio_english_128kbs_AAC/prog_index.m3u8"

#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac-hi",LANGUAGE="fre",

NAME="French",AUTOSELECT=YES,DEFAULT=NO,

URI="adventureland_audio_french_128kbs_AAC/prog_index.m3u8"

#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac-hi",LANGUAGE="por",

NAME="Portuguese",AUTOSELECT=YES,DEFAULT=NO,

URI="adventureland_audio_portuguese_128kbs_AAC/prog_index.m3u8"

#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac-hi",LANGUAGE="tha",

NAME="Thai",AUTOSELECT=YES,DEFAULT=NO,

URI="adventureland_audio_thai_128kbs_AAC/prog_index.m3u8"

#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac-lo",LANGUAGE="eng",

NAME="English",AUTOSELECT=YES,DEFAULT=YES,

URI="adventureland_audio_english_64kbs_AAC/prog_index.m3u8"

#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac-lo",LANGUAGE="fre",

NAME="French",AUTOSELECT=YES,DEFAULT=NO,

URI="adventureland_audio_french_64kbs_AAC/prog_index.m3u8"

#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac-lo",LANGUAGE="por",

NAME="Portuguese",AUTOSELECT=YES,DEFAULT=NO,

URI="adventureland_audio_portuguese_64kbs_AAC/prog_index.m3u8"

#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac-lo",LANGUAGE="tha",

NAME="Thai",AUTOSELECT=YES,DEFAULT=NO,

URI="adventureland_audio_thai_64kbs_AAC/prog_index.m3u8"

##############################

#Closed caption video Feeds

##############################

#EXT-X-STREAM-INF:BANDWIDTH=4622958,AVERAGE-

BANDWIDTH=4000000,CODECS="mp4a.40.2,avc1.4d401e",AUDIO="aac-hi"

adventureland_video_CC_4_2.9Mbs/prog_index.m3u8

#EXT-X-STREAM-INF:BANDWIDTH=123578,AVERAGE-

BANDWIDTH=100000,CODECS="mp4a.40.2,avc1.42e00a",AUDIO="aac-lo"

adventureland_video_CC_1_60kbs/prog_index.m3u8

#################

#FF/FR i-frames

#################

#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=53527,AVERAGE-

BANDWIDTH=45000,CODECS="avc1.42e00a",URI="adventureland_video_CC_1_60kbs/iframe.m3u8"

图2A示出了由提供主播放列表的服务器系统执行的方法的示例,该主播放列表包括主播放列表中的每个对应变体的峰值带宽值和平均带宽值两者。在操作201中,一个或多个服务器系统创建或接收特定媒体呈现(诸如电视节目、电影、仅音频节目等)的多个变体,并且一个或多个服务器系统为变体中的每个变体确定峰值带宽值和平均带宽值或者比特率值。然后,在操作203中,一个或多个服务器系统可创建包括每个变体的URI的主播放列表,其中每个URI将被客户端设备用于检索对应变体的特定媒体播放列表。在一个实施方案中,主播放列表包括用于每个变体的指定用于对应变体的峰值带宽值和平均带宽值的数据。在操作205中,一个或多个服务器设备可存储主播放列表和也可在该时间点创建的每个变体的媒体播放列表。在操作207中,一个或多个服务器设备可基于来自一个或多个客户端设备的请求来传输主播放列表和一个或多个媒体播放列表。在一个实施方案中,可采用分布式架构,其中内容创建者创建变体并创建主播放列表以及可能地创建媒体播放列表,并且其他服务器系统分发或传送播放列表。下面描述的图4提供了分布式架构的示例。在另一实施方案中,相同的服务器系统可执行所有功能包括内容诸如创建变体和创建主播放列表以及媒体播放列表,并且还基于来自客户端设备的请求而执行主播放列表和媒体播放列表的传输。

图2B示出了可由客户端设备执行的实施方案,其利用主播放列表中的平均带宽,诸如如结合图2A所描述而创建的主播放列表。在操作221中,客户端设备接收主播放列表,其包括内容的变体(诸如内容的所有变体)的平均带宽值和峰值带宽值。通常,客户端设备可在媒体呈现正被呈现时存储主播放列表,使得在任何一个时间点处客户端设备可根据网络拥塞或用户偏好使用主播放列表中的数据来决定何时在变体之间切换等。通过在呈现期间存储主播放列表,客户端设备可获得主播放列表中的所有可能变体的峰值带宽值和平均带宽值。因此,客户端设备可在从主播放列表获得的变体的呈现期间的任何时间点从主播放列表检索所存储的峰值带宽值和平均带宽值,以便有助于图2B中所示的方法。在操作223中,客户端设备可从主播放列表选择媒体播放列表(例如,第一媒体播放列表)并且然后使用第一媒体播放列表中的URI开始下载视频或音频或视频和音频两者的片段。在操作227中,客户端设备可确定其是否可向上切换比特率。通常,当观察到的下载比特率(针对接收和显示的当前变体)超过(下一个)更高比特率变体的平均比特率时,客户端设备可向上切换(至更高比特率变体,诸如下一个更高比特率变体)。操作227可包括观察的下载比特率与新流的平均比特率(例如,来自诸如第二媒体播放列表的下一个更高比特率变体)的比较。如果在操作227中,客户端设备确定观察的比特率(针对正在显示的当前变体)大于(下一个)更高比特率变体的平均比特率,则客户端设备进行到操作229(以检查一个或多个缓冲区);另一方面,如果客户端设备确定观察的比特率不大于平均比特率,则客户端设备返回到操作225(并且因此客户端设备使用当前媒体播放列表继续下载视频片段而不是切换到新的媒体播放列表)。

操作229示出了可如何执行缓冲水平的检查的示例。具体地,在操作229中,可检查当前存储已经使用来自第一媒体播放列表的URI检索的媒体的缓冲器来确定是否有足够的数据存储在缓冲器中以允许足够的时间下载新流(诸如来自主播放列表的另一个变体)并且将其准备好用于呈现而不会导致呈现的中断。如果缓冲器中没有足够的数据,则将没有足够的时间来检索新的媒体播放列表(例如“第二”媒体播放列表)并从该媒体播放列表下载片段。在一个实施方案中,以下公式可用作缓冲器的检查以确定缓冲器是否包含足够量的数据以允许切换发生。

(Observed Download bitrate)x(No.seconds in buffer)>

(No.of Segments)x(Target duration)x(Peak Bandwidth)

在该公式的示例中,客户端设备将观察的下载比特率与存储正被呈现的当前变体的缓冲器中的秒数的乘积与三个值的乘积进行比较:(1)片段的预先确定的数量,诸如新流中的1个或者2个片段;(2)新流中的片段的目标持续时间;以及(3)用于新流的峰值带宽值。观察的下载比特率是在下载由正被呈现的当前变体(来自第一媒体播放列表)中的URI指定的内容时的实际测量的比特率。新流中的片段的目标持续时间可从用于新流的媒体播放列表获得,并且新流的峰值带宽值由变体播放列表提供。如果观察到的下载比特率和缓冲器中的秒数的乘积超过三个值的乘积,则缓冲器具有足够的数据以允许从由第一媒体播放列表指定的第一变体切换到新的(例如,第二)变体。应当理解,其他实施方案可使用另选的公式或机制来确定存储当前呈现的媒体变体的缓冲器是否具有足够的数据来允许变体之间的无缝切换。

如果操作229确定缓冲水平足够(因为基于计算,缓冲器具有足够的数据),则处理前进到操作231(并且然后操作223),其涉及切换到不同的播放列表诸如主播放列表中的下一个更高比特率变体并且该切换涉及在操作223中选择不同的播放列表并且处理如图2B的流程图所示继续。换句话说,客户端设备将使用不同的播放列表来检索在不同播放列表中指定的片段,并且还可以重复操作227,229和231;以这种方式,客户端设备可适应网络连接速度的变化。如果另一方面客户端设备在操作229中确定缓冲水平不足,则处理返回到操作225,以使用当前选择的媒体播放列表来继续下载视频片段(并且不切换到新的媒体播放列表)。使用不同媒体播放列表在变体之间切换的过程可使用本领域中已知的技术,诸如结合公开的美国专利申请2012/0311094中的图9A-9D所描述的方法。

图3示出了对缓冲器中的数据量的检查(在操作229中)的示例。特别地,触发点305由新流的峰值带宽值以及新流中的片段的目标持续时间和新流的至少一个或多个片段确定。上面所示的公式使用新流的峰值带宽值和新流中的片段的目标持续时间以及新流的至少一个或两个片段以便确定由触发点305表示的要下载的比特数,并且这与用于现有流的缓冲器的大小(如图3中的缓冲器301所示)相比较。缓冲器301被示为在当前播放头或回放位置303开始。

本文所述的方法和系统可在分布式架构中实现,其中多个服务器系统或设备向可在地理上分散在整个世界上的多个客户端设备提供服务器服务。图4示出了包括至少两个内容创建服务器401和403的分布式架构400的示例。在一个实施方案中,内容创建服务器401可创建用于一个节目或演示的内容,而其他内容创建服务器诸如内容创建服务器403可创建用于其他节目的内容并且使用与内容创建服务器401不同(或者一些相同)的传输服务器。这些内容创建服务器可创建主播放列表和媒体播放列表,以及创建由媒体播放列表引用的媒体(内容)片段。内容创建服务器可位于创建内容的位置附近(例如,诸如棒球比赛的体育项目),并且每个内容创建服务器可将“内容”(诸如主播放列表和媒体播放列表以及实际内容)传输到一个或多个传输服务器,诸如传输服务器405和407。在一个实施方案中,内容创建服务器可执行图2A所示的操作(例如操作201,203和205)的一部分,而传输服务器执行图2A中的操作的其余部分。传输服务器可在地理上分散,使得每个客户端设备可由地理上靠近客户端设备的传输服务器提供服务。在图4所示的示例中,内容创建服务器401创建内容和播放列表,诸如一个或多个主播放列表和多个媒体播放列表,并且将内容(例如,媒体播放列表引用的媒体片段)和播放列表传输到一个或多个传输服务器405,传输服务器405继而基于来自那些客户端设备的请求(诸如HTTP请求)将播放列表和内容传输到一个或多个客户端设备,诸如客户端设备409和411。类似地,内容创建服务器403可创建内容和播放列表并将内容和播放列表传输到一个或多个传输服务器407,传输服务器407继而基于来自那些客户端设备的请求将播放列表和内容传输到一个或多个客户端设备(例如客户端设备412)。在一个实施方案中,分布式架构400中的每个部件之间的通信可为通过本领域已知的TCP/IP协议上的HTTP,但是也可在一个或多个传输介质上使用其他协议,包括有线连接、无线连接或有线连接和无线连接的组合。

图5是可在本文所述的一个或多个实施方案中用作服务器设备或客户端设备的电子系统的一个实施方案的框图。图5中所示的电子系统旨在表示一系列电子系统(有线的或无线的),包括例如台式计算机系统、膝上型计算机系统、蜂窝电话、包括支持蜂窝的PDA的个人数字助理(PDA)、机顶盒、娱乐系统或其他消费电子设备。另选的电子系统可包括更多、更少和/或不同的部件。图5的电子系统能够被用来提供图4中所示的客户端设备和或服务器设备中的任一者。

电子系统800包括总线805或用于传递信息的其他通信设备以及耦接到总线805的可处理信息的处理器810。尽管电子系统800被示为具有单个处理器,但是电子系统800可包括多个处理器和/或协处理器,它们一起或单独提供处理系统。电子系统800还可包括耦接到总线805的动态随机存储器(DRAM)或其他动态存储设备820(称为主存储器),并且可存储可由处理器810执行的信息和指令。在由处理器810执行指令期间,主存储器820还能够用来存储临时变量或其他中间信息。

电子系统800还可包括耦接到总线805的只读存储器(ROM)和/或其他静态存储设备830,其可存储静态(例如,非易失性)信息和用于处理器810的指令。数据存储设备840可为非易失性存储器设备,并且可耦接到总线805以存储信息和指令。诸如闪存或磁盘或光盘的数据存储设备840和相应的驱动器可通过总线805耦接到电子系统800,或者可为通过网络接口耦接到系统800的远程存储设备。应当理解,存储器820、ROM830和存储设备840中的任何一个或多个可被认为是可存储可执行计算机程序指令的机器可读非暂态存储介质,该可执行计算机程序指令可由处理器(多个)810执行以执行本文所述的实施方案或方法中的任一者。例如,存储器820可为存储此类计算机程序指令的易失性DRAM存储器,因此该存储器820是此类机器可读非暂态存储介质的形式。

电子系统800还可经由总线805耦接到诸如阴极射线管(CRT)或液晶显示器(LCD)或其他显示设备的显示设备850以向用户显示信息。电子系统800还可包括字母数字输入设备860,字母数字输入设备860包括字母数字和其他键,其可耦接到总线805以向处理器810传送信息和命令选择。另一类型的用户输入设备是光标控件870,诸如触摸板、鼠标、轨迹球或光标方向键,以将方向信息和命令选择传送到处理器810并控制显示器850上的光标移动。

电子系统800还可包括一个或多个网络接口(多个)880以提供对网络诸如局域网的访问。一个或多个网络接口880可包括例如具有天线885的无线网络接口,其可表示一个或多个天线。电子系统800可包括多个无线网络接口,诸如WiFi、蓝牙和蜂窝电话接口的组合。一个或多个网络接口880还可包括例如有线网络接口,以经由网络电缆887与远程设备通信,网络电缆887可为例如以太网电缆、同轴电缆、光纤电缆、串行电缆或并行电缆。

在一个实施方案中,一个或多个网络接口880可例如通过符合IEEE802.11b和/或IEEE 802.11g标准来提供对局域网的访问,和/或无线网络接口可例如通过符合蓝牙标准来提供对个域网的访问。也可支持其他无线网络接口和/或协议。

除了经由无线LAN标准的通信之外或代替经由无线LAN标准的通信,一个或多个网络接口880可使用例如时分多址(TDMA)协议、全球移动通信系统(GSM)协议、码分多址(CDMA)协议、其他蜂窝电话协议和/或任何其他类型的无线通信协议。

在前述说明书中,已经描述了具体示例性实施方案。显而易见的是,可在不脱离以下权利要求所示的更广泛的实质和范围的情况下对实施方案作出各种修改。因此,说明书和附图应被认为是出于例证目的而非限制目的。

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