用于视频流式传输的无缝倒回和回放的服务器侧支持转让专利

申请号 : CN201080012757.2

文献号 : CN102356644A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : L·郑C·D·本兹尔K·卡克里贾恩

申请人 : 谷歌公司

摘要 :

一种系统和方法提供了对于视频流的无缝可伸缩倒回和回放的服务器侧支持。在网络存储地点位置中存储视频流并对其编索引。可以在帧级别对视频流编索引,其中视频流的每个内帧具有指示视频流中该内帧的文件偏移和时间戳的索引。通过从用户请求提取倒回时间需求,来处理正在广播视频流时对于视频流倒回的用户请求。提取的倒回时间值用于计算请求的文件偏移。根据用户请求获取并且回放开始于所请求时间的视频流。该系统还提供对视频流的无缝回放的服务器侧支持和跨多个流式传输数据中心的可伸缩的系统性能。

权利要求 :

1.一种用于对由客户端接收的广播视频流提供倒回的方法,所述方法包括:从所述客户端接收针对倒回广播视频流的请求,所述请求包括指示将被倒回的所述视频流一部分的流标识和定时信息;

确定对应于所述请求中所述定时信息的文件偏移;以及

向所述客户端流式传输从确定的文件偏移开始的所请求的视频流。

2.根据权利要求1所述的方法,还包括从视频源接收所述视频流。

3.根据权利要求2所述的方法,其中所述视频源来自于直播源。

4.根据权利要求2所述的方法,其中所述视频源来自于录制的视频流。

5.根据权利要求1所述的方法,还包括将所述视频流归档在网络存储系统中,其中归档的视频流由所述流标识来标识。

6.根据权利要求5所述的方法,其中归档所述视频流还包括存储所述视频流的每个内帧的索引,其中所述索引包括所述流标识、指示所述内帧位于所述视频流中何处的文件偏移以及指示在所述视频流中所述内帧何时开始播放的时间戳。

7.根据权利要求6所述的方法,其中归档所述视频流还包括存储所述视频流图片组的每个第一内帧的索引,其中所述索引包括所述流标识、文件偏移和时间戳。

8.根据权利要求1所述的方法,其中确定对应于所述请求中所述定时信息的所述文件偏移还包括选择索引,所述索引具有最接近于所述定时信息中时间值的时间戳。

9.根据权利要求1所述的方法,其中流式传输所述所请求的视频流还包括获取内帧,所述内帧的文件偏移对应于所选索引的文件偏移。

10.一种用于从流式传输数据中心流式传输广播视频流的方法,其中每个流式传输数据中心处理至少一个视频流,所述方法包括:从客户端接收针对广播视频流的请求,其中所述视频流由流标识来标识;

基于多个分发标准来选择多个流式传输数据中心中的一个以供应所述请求,其中所述流式传输数据中心可以从本地存储系统或从另一流式传输数据中心来供应请求;

响应于选择的流式传输数据中心处理来自于本地存储系统的视频流,向所述客户端流式传输所述请求的广播视频流;

响应于选择的流式传输数据中心没有处理来自于所述本地存储系统的所述视频流:确定其他哪个流式传输数据中心正在处理所述请求的视频流;

从确定的流式传输数据中心获得所述请求的视频流,并且将所述请求的视频流存储在所述选择的流式传输数据中心的所述本地存储系统中;以及从所述选择的流式传输数据中心向所述客户端流式传输所述请求的视频流。

11.根据权利要求9所述的方法,其中所述多个分发标准至少包括每个流式传输数据中心的负载。

12.根据权利要求9所述的方法,其中确定其他哪个流式传输中心正在处理所述请求的视频流包括,确定所述请求的视频流是否存储在所述选择的流式传输数据中心处的本地索引数据库中。

13.一种具有计算机可读存储介质的计算机程序产品,所述计算机可读存储介质具有记录在其上的可执行计算机程序指令,用于提供对广播视频流的倒回,所述计算机程序指令配置计算机系统以包括:流式传输服务器,被配置为:

从客户端接收针对倒回广播视频流的请求,所述请求包括指示将被倒回的所述视频流一部分的流标识和定时信息;

流处理器,被配置为确定对应于所述请求中所述定时信息的文件偏移;以及所述流式传输服务器还被配置为向所述客户端流式传输从确定的文件偏移开始的所请求的视频流。

14.根据权利要求13所述的计算机程序产品,还包括传入流式传输服务器,被配置为从视频源接收所述视频流。

15.根据权利要求14所述的计算机程序产品,其中所述视频源来自于直播源。

16.根据权利要求14所述的计算机程序产品,其中所述视频源来自于录制的视频流。

17.根据权利要求13所述的计算机程序产品,其中所述流处理器还被配置为将所述视频流归档在网络存储系统中,其中归档的视频流由所述流标识来标识。

18.根据权利要求17所述的计算机程序产品,其中所述流处理器还被配置为存储所述视频流的每个内帧的索引,其中所述索引包括所述流标识、指示所述内帧位于所述视频流中何处的文件偏移以及指示在所述视频流中所述内帧何时开始播放的时间戳。

19.根据权利要求18所述的计算机程序产品,其中所述流处理器还被配置为存储所述视频流图片组的每个第一内帧的索引,其中所述索引包括所述流标识、文件偏移和时间戳。

20.根据权利要求13所述的计算机程序产品,其中所述流处理器还被配置为选择索引,所述索引具有最接近于所述定时信息中时间值的时间戳。

21.根据权利要求13所述的计算机程序产品,其中流式传输服务器还被配置为获取内帧,所述内帧的文件偏移对应于所选索引的文件偏移。

22.一种具有计算机可读存储介质的计算机程序产品,所述计算机可读存储介质具有记录在其上的可执行计算机程序指令,所述计算机程序指令配置计算机系统以包括:流式传输数据中心分配器,被配置为:

从客户端接收针对广播视频流的请求,其中所述视频流由流标识来标识;

基于多个分发标准来选择多个流式传输数据中心中的一个以供应所述请求,其中所述流式传输数据中心可以从本地存储系统或从另一流式传输数据中心来供应请求;

选择的流式传输数据中心,被配置为:

确定哪个流式传输其他数据中心正在处理请求的视频流;

从确定的流式传输数据中心获得所述请求的视频流;以及向所述客户端流式传输所述请求的视频流。

23.根据权利要求22所述的计算机程序产品,其中所述多个分发标准至少包括每个流式传输数据中心的负载。

24.根据权利要求22所述的计算机程序产品,其中所述选择的流式传输数据中心还被配置为确定所述请求的视频流是否存储在所述选择的流式传输数据中心处的本地索引数据库中。

25.一种用于提供对广播视频流进行倒回的计算机系统,所述计算机系统包括:处理器;以及

存储处理器可执行程序指令的计算机可读存储介质,所述处理器可执行程序指令包括:流式传输服务器,被配置为:

从客户端接收针对倒回广播视频流的请求,所述请求包括指示将被倒回的所述视频流一部分的流标识和定时信息;

流处理器,被配置为确定对应于所述请求中所述定时信息的文件偏移;以及所述流式传输服务器还被配置为向所述客户端流式传输从确定的文件偏移开始的所请求的视频流。

26.根据权利要求25所述的系统,还包括传入流式传输服务器,被配置为从视频源接收所述视频流。

27.根据权利要求26所述的系统,其中所述视频源来自于直播源。

28.根据权利要求26所述的系统,其中所述视频源来自于录制的视频流。

29.根据权利要求25所述的系统,其中所述流处理器还被配置为将所述视频流归档在网络存储系统中,其中归档的视频流由所述流标识来标识。

30.根据权利要求29所述的系统,其中所述流处理器还被配置为存储所述视频流的每个内帧的索引,其中所述索引包括所述流标识、指示所述内帧位于所述视频流中何处的文件偏移以及指示在所述视频流中所述内帧何时开始播放的时间戳。

31.根据权利要求30所述的系统,其中所述流处理器还被配置为存储所述视频流图片组的每个第一内帧的索引,其中所述索引包括所述流标识、文件偏移和时间戳。

32.根据权利要求25所述的系统,其中所述流处理器还被配置为选择索引,所述索引具有最接近于所述定时信息中时间值的时间戳。

33.根据权利要求25所述的系统,其中流式传输服务器还被配置为获取内帧,所述内帧的文件偏移对应于所选索引的文件偏移。

34.一种用于从流式传输数据中心流式传输广播视频流的计算机系统,其中每个流式传输数据中心处理至少一个视频流,所述计算机系统包括:处理器;以及

存储处理器可执行程序指令的计算机可读存储介质,所述处理器可执行程序指令包括:流式传输数据中心分配器,被配置为:

从客户端接收针对广播视频流的请求,其中所述视频流由流标识来标识;

基于多个分发标准来选择多个流式传输数据中心中的一个以供应所述请求,其中所述流式传输数据中心可以从本地存储系统或从另一流式传输数据中心来供应请求;

选择的流式传输数据中心,被配置为:

确定哪个流式传输其他数据中心正在处理请求的视频流;

从确定的流式传输数据中心获得所述请求的视频流;以及向所述客户端流式传输所述请求的视频流。

35.根据权利要求34所述的系统,其中所述多个分发标准至少包括每个流式传输数据中心的负载。

36.根据权利要求35所述的系统,其中所述选择的流式传输数据中心还被配置为确定所述请求的视频流是否存储在所述选择的流式传输数据中心处的本地索引数据库中。

37.一种具有计算机可读存储介质的计算机程序产品,所述计算机可读存储介质存储用于提供对广播视频流的倒回的计算机程序,所述计算机程序包括:用于从客户端接收针对倒回广播视频流的请求的程序代码,所述请求包括指示将被倒回的所述视频流一部分的流标识和定时信息;

用于确定对应于所述请求中所述定时信息的文件偏移的程序代码;以及用于向所述客户端流式传输从确定的文件偏移开始的所请求的视频流的程序代码。

说明书 :

用于视频流式传输的无缝倒回和回放的服务器侧支持

技术领域

[0001] 本发明总体上涉及通过诸如因特网之类的电信网络来流式传输视频内容,并且更具体地涉及用于提供对此类直播视频流的无缝倒回和回放的服务器侧支持的方法。

背景技术

[0002] 视频流式传输系统能够通过基于因特网的广播类服务向大量用户递送直播视频流。传统视频流式传输系统为用户提供在客户端机器上运行的视频播放器。该视频播放器接收并缓冲客户端机器的本地存储器中的直播视频流。响应于对于直播视频流的倒回并继而回放的用户请求,视频播放器从本地存储器访问缓冲的视频。对倒回视频流的此类客户端侧支持需要大量的客户端侧计算资源,诸如快速中央处理器(CPU)、充足的存储器和盘空间,用于存储从流式传输服务器接收的视频流、在继续接收后续流式传输数据分组时针对倒回计算定时需求。结果,用户通常不得不遭受处理延迟并且体验降级的流式传输服务。
[0003] 对倒回直播视频流的客户端侧支持的现有实现所面临的另一问题是视频流式传输系统缺乏可伸缩性。通常向数千以及潜在的数百万观看者同时广播直播视频流。视频流式传输系统经常包括大量子系统,每个子系统可以包括:多个传入流式传输服务器,以接收直播视频/音频源(feed);多个流处理器(stream hander),以处理直播视频流;和多个视频流式传输服务器,以向观看者提供请求的视频流。跨多个子系统进行归档并且获取,而不使用户体验降级需要视频流式传输系统的服务器侧处的更有效的视频流归档/获取和伸缩性支持。

发明内容

[0004] 一种方法、系统和计算机程序产品提供对于视频流的无缝倒回和回放的服务器侧支持。
[0005] 视频流式传输计算机系统的一个实施方式包括多个流式传输数据中心计算机系统。流式传输数据中心计算机系统包括传入流式传输服务器计算机系统、一个或多个流处理器、流归档数据库系统、本地索引数据库系统和一个或多个流式传输服务器系统。流式传输数据中心计算机系统经由网络连接从各种视频源收集传入视频/音频流,并且向流处理器分发视频流以便归档和编索引。流式传输数据中心还从用户客户端设备接收流式传输请求,并且向用户提供请求的服务。
[0006] 流式传输归档数据库系统存储由流式传输数据中心贡献的视频流编索引信息。在一个实施方式中,对于来自于流式传输数据中心的每个视频流,存在GOP级索引文件,该索引文件存储视频流的每个GOP的索引。在另一实施方式中,对于每个视频流,存在帧级索引文件,该索引文件存储视频流的每个内帧的索引。
[0007] 方法的一个实施方式包括从客户端设备接收流式传输请求,并且标识流处理器以供应该请求。响应于正在广播视频流时的倒回请求,该方法包括提取倒回时间需求、计算对应于倒回时间需求的文件偏移并且流式传输请求的视频流。相对于视频广播的开始,从倒回请求确定该时间需求。针对对应于时间的视频部分,从索引确定视频中的偏移,并且获取并且向客户端设备流式传输对应于该视频部分的数据。
[0008] 说明书中描述的特征和优势并不是全包括的,并且具体地,根据附图、说明书和权利要求书,很多附加特征和优势对于本领域技术人员而言将变得明显。而且,应该指出,已经出于易读性和指导性目的在大体上选择了说明书中所使用的语言,并且该语言可能没有被选择用于记述或限制所公开的主题。

附图说明

[0009] 图1是示出了具有流式传输系统的环境的框图,该流式传输系统用于对直播视频流式传输的无缝倒回和回放的服务器侧支持。
[0010] 图2A是示出了用于直播视频流式传输的无缝倒回和回放的流式传输数据中心的框图。
[0011] 图2B是用于处理订阅视频流的流式传输请求的流式传输数据中心的框图。
[0012] 图3是传入流式传输中心的框图。
[0013] 图4是用于直播视频流式传输的无缝倒回和回放的流处理器的框图。
[0014] 图5是流式传输数据中心处理视频流的流程图。
[0015] 图6是流式传输数据中心供应流式传输请求的流程图。
[0016] 图7是跨越具有增强伸缩性的多个流式传输数据中心的供应视频流式传输请求的流程图。
[0017] 仅出于示范的目的,附图示出了本发明的各个实施方式,并且本发明不限于这些示出的实施方式。本领域技术人员将容易地从以下讨论中认识到,在不脱离此处所述本发明的原理的情况下,可以采用此处所示的结构和方法的备选是实施方式。

具体实施方式

[0018] 图1是示出了根据一个实施方式的、具有流式传输系统100的环境的框图,该流式传输系统100从客户端110接收流式传输请求,并且向客户端110发送请求的流式传输数据。系统100包括数据中心分配器计算机系统114(“数据中心分配器114”)、共享索引数据库计算机系统118(“共享索引数据库118”)和一个或多个流式传输数据中心计算机系统200A-N(“流式传输数据中心200”)。这些计算机系统中的每个包括一个或多个计算机,优选地是服务器级计算机,该计算机具有一个或多个处理器、大量高性能盘存储阵列(例如,1Tb)和可用存储器(例如,1Gb)。客户端110和流式传输数据中心200经由计算机网络112(诸如因特网)互连。数据中心分配器114与客户端110和流式传输数据中心200通信。每个流式传输数据中心200通过如下处理多个视频流:向共享索引数据库118写入视频流编索引信息、从共享索引数据库118获取视频流编索引信息、以及向客户端110中的一个或多个提供每个视频流来处理多个视频流。为了简化并且澄清附图,在图1中仅示出了两个客户端110和四个流式传输中心200,但是实际上,在操作中可以包括更多的客户端110和流式传输数据中心200。
[0019] 示出的环境表示典型的情况,在该情况中,多个用户/观看者订阅由流式传输数据中心200提供的视频流式传输服务。在该情况中,用户使用客户端110来通过数据中心分配器114向流式传输数据中心200发送视频流式传输服务请求,并且直接(即,没有通过数据中心分配器114)从流式传输数据中心200接收请求的服务。数据中心分配器114基于某些标准(诸如,每个流式传输数据中心的负载)来向流式传输数据中心200中的一个分配流式传输服务请求。数据中心分配器114选择的流式传输数据中心200从客户端接收流式传输服务请求并且经由网络112向客户端110提供请求的服务。
[0020] 返回到图1上示出的独立实体,每个客户端110由用户用于请求视频流式传输服务。例如,用户使用客户端110来发送请求以便订阅广播的视频流、播放视频流、暂停视频流或在仍旧正在广播视频时将视频流倒回到指定的时间点。客户端110可以是任何类型的计算机设备,诸如个人计算机(例如,台式、笔记本、膝上型)计算机、以及诸如移动电话、个人数字助理、支持IP的视频播放器之类的设备。客户端110通常包括处理器、显示设备(或去往显示设备的输出)、本地存储,诸如硬盘驱动器或闪存设备,客户端110向其存储用户在执行任务时使用的数据,以及用于经由网络112耦合至系统100的网络接口。
[0021] 客户端110还具有用于播放视频流的视频播放器120(例如,来自于Adobe TMSystems公司的Flash 播放器或专用播放器)。视频播放器120可以是单独的应用,或诸如网络浏览器的另一应用的插件。如果客户端110是通用设备(例如,台式计算机、移动电话),则播放器120通常实现为由计算机执行的软件。如果客户端110是专用设备(例如,专用视频播放器),则播放器120可以以硬件或硬件和软件的组合实现。所有这些实现关于本发明而言在功能上是等同的。播放器120包括用于选择视频源、启动、停止和倒回视频源的用户接口控制(和相应的应用编程接口)。而且,播放器120可以在其用户接口中包括时间线滑块,该时间线滑块被配置为指示视频流式传输的进程,例如相对于视频流的总时间(如果知道的话)的回放的当前时间。时间线滑块还将被配置用于在用户接口中直接操纵,通过该用户接口,用户可以移动该时间线滑块来指定他/她希望将视频流倒回多少(例如,以分钟为单位)以观看之前广播的视频流部分。也可以将其他类型的用户接口控制(例如,按钮、键盘控制)用于控制播放器120的回放和倒回功能。
[0022] 网络112支持客户端110与流式传输数据中心200之间的通信。在一个实施方式中,网络112是因特网,并且使用现在已知或后续开发的标准化的联网通信技术和协议,它们使客户端110能够与流式传输数据中心200通信。
[0023] 出于该描述的目的,视频流是来自于直播视频源的视频流,直播视频源诸如是流式传输数据媒体内容提供商通过因特网广播的直播体育、音乐、新闻和娱乐。视频流还包括来自于录制源的视频流,录制源诸如是流式传输数据媒体内容提供商通过因特网重新广播的录制的直播内容、TV表演或电影。每个视频流都由流标识(ID)标识。取决于编解码器,视频流包括多个内帧(I帧)、预测帧(P帧)并且可以具有双向预测的帧(B帧)。可以将视频流的多个视频帧进一步分组为图片组(GOP),其中每个GOP包括至少一个内帧。将视频流作为一个或多个相关文件存储在网络存储中,每个相关文件包括多个音频/视频数据分组。视频的源/来源(诸如TV广播台、或基于因特网的视频流提供商)连接至编码器。编码器负责捕获并且数字化接收的视频流、对其进行压缩并且将所得数据向视频服务器传送以便进一步处理。
[0024] 数据中心分配器114通常在从客户端110发送的用户流请求需要域名服务器(DNS)查找时使用。例如,用户请求的流位于“http://host.com/stream_id”。客户端110代表用户与数据分配器114通信以找到主控流“stream_id”的主机服务器“host.com”的因特网协议(IP)地址。数据中心分配器114基于某些标准(诸如流式传输数据中心中每个的负载)向流式传输数据中心200之一分配流式传输服务请求。可以基于每个数据中心的带宽使用和分配给每个流式传输数据中心的带宽容量值,来计算流式传输数据中心中每个的负载。数据中心分配器114通过避免向其带宽使用接近于其全容量的流式传输数据中心发送流式传输请求来平衡负载。本领域技术人员可容易地获得其他负载平衡机制。
[0025] 共享索引数据库118存储由流式传输数据中心200贡献的视频流编索引信息以便倒回广播视频流。在一个实施方式中,对于来自于流式传输数据中心200的每个视频流而言,存在存储视频流每个GOP的索引的GOP级索引文件。具体地,该GOP级索引文件将每个GOP第一内帧的索引保持在元组(stream_ID,file_offset,time_stamp)中。在另一实施方式中,对于每个视频流,存在存储视频流每个内帧的索引的帧级索引文件。索引针对每个内帧存储元组(stream_ID,file_offset,time_stamp)。“Stream_ID”标识内帧所属于的视频流。“file_offset”按照视频流文件的字节指示内帧从何处开始。该“file_offset”值是从归档文件的开始(即,字节0)计数的绝对数值。“time_stamp”指示在视频流的归档文件中内帧何时开始。该“time_stamp”值是从视频流开始播放时间(即,0毫秒)计数的绝对数值。
[0026] 在一个实施方式中,编索引信息作为全局视频流编索引文件存储。全局视频流索引文件包括由流式传输数据中心200处理的每个视频流的索引。来自于特定流式传输数据中心200的索引可以进一步由流式传输数据中心标识来标识。该编索引信息由流式传输数据中心200共享,以便在具有伸缩性的多个流式传输数据中心200中对用户流式传输请求进行供应。在下面关于图3和图4进一步地描述流式传输数据中心200和共享视频流编索引数据库118的实施方式。
[0027] 图2A是示出了根据一个实施方式的、用于视频流式传输的无缝倒回和回放的服务器侧支持的流式传输数据中心200的框图。流式传输数据中心200包括传入流式传输服务器210、一个或多个流处理器220、流归档数据库230、作为图1中共享数据库118的本地副本的本地索引数据库240、以及一个或多个流式传输服务器250。
[0028] 如图2A中示出,传入服务器210具有耦合到它的多个流处理器220;每个流处理器220具有流处理器ID。对于每个传入视频流,传入服务器210选择流处理器220的一个,并且将该传入视频流的所有数据分组引导到选择的流处理器220。
[0029] 流式传输数据中心200还包括多个流式传输服务器250,以处理来自于客户端的流式传输请求。流式传输服务器250处理两种类型的流式传输请求:订阅广播视频流的请求和倒回广播流的请求。订阅广播视频流的流式传输请求(订阅请求)不包括用于倒回的定时信息。倒回广播流的流式传输请求(倒回请求)包括定时信息,该定时信息关于正在广播视频流时倒回视频流的期望量/偏移。因此,流式传输服务器250通过定时信息是否出现在请求中来在请求之间进行区分;无需其他形式语义。
[0030] 响应于倒回请求,流式传输服务器250通过检查本地索引数据库240来找到对应于请求中定时信息的文件偏移,并且读取从存储在流式传输归档数据库230中的视频流文件偏移开始的所请求视频流的数据分组。
[0031] 例如,客户端110的播放器120为其用户提供正被广播的视频流的时间线视图。该用户可以利用鼠标选择时间线滑块中的位置。播放器120将时间线滑块上选择的位置映射到相应的定时信息。例如,假设直播广播视频是2小时长度,并且用户在时间线滑块上选择处于起始和结束之间中途点处的位置,然后将该位置映射到1:00。该定时信息包括在视频流式传输请求中并且被发送到流式传输服务器以便处理。
[0032] 示例性倒回请求是URL的形式,诸如http://www.hostserver.com/play?id=StreamID&time=timestamp,其中streamID是所请求流的流ID,并且timestamp是表示开始时间的时间值的数值,该开始时间相对于相对于视频流的开始。例如,用户可以利用URL发出针对视频流的请求,比如“http://www.hostserver.com/1play?id=Stream12&time=600”,其请求由其流ID“Stream12”标识的视频流,并且将该视频流倒回到第600秒(即,第10分钟的末尾)。定时信息(例如,时间戳值)指示用户倒回请求而不论视频流来自于直播视频源(例如,直播广播)还是来自于录制的视频源(例如,对录制的直播事件的重新广播)。在一个实施方式中,不支持快进请求。
[0033] 为了进一步示出上述流式传输请求和响应,以下的伪代码表示存储用于流式传输请求/响应的数据的流式传输服务器250使用的数据结构:
[0034]
[0035] 用于订阅广播视频流的订阅请求不包括定时信息。每个流式传输服务器250可以直接与多个流处理器220通信。来自于客户端的流式传输请求包括流ID。给定流ID,流式传输服务器250通过针对流ID检查本地索引数据库240来找到哪个流处理器220负责请求的视频流、向标识的流处理器220进行订阅以及请求从视频流起始开始的所请求视频流的数据分组。图2B是示出了根据上面描述的、用于直接从流处理器流式传输所请求视频的流式传输数据中心。
[0036] 现在回到图3,在一个实施方式中,流式传输数据中心200的传入流式传输服务器210包括协议解释模块212、数据提取模块214和负载平衡器216。传入流式传输服务器210从视频流源310接收视频流、模块212、214和216对视频流进行处理,并且向选择的流处理器220发送处理后的视频流数据320以便进一步地编索引并归档。传入流式传输服务器
210可以是流式传输服务器,例如WOWZA Media Server或者Adobe Flash Media Server。
传入流式传输服务器210可以使用标准视频流式传输协议或专用协议来接受视频流,该标准视频流式传输协议诸如实时流式传输协议(RTSP),该专用协议诸如由Adobe System 开发用于通过因特网在Flash播放器与流式传输服务器之间流式传输音频/视频数据的实时消息传送协议(RTMP)。
[0037] 协议解释模块212通过标识视频流中使用的流式传输协议来处理从视频流源310接收的视频流。例如,传入流式传输服务器210是流式传输服务器,其使用RTMP协议接受视频流并且允许flash播放器以RTMP协议播放视频流。协议解释模块212标识所接收视频流中的RTMP流式传输协议,并且向流处理器220中的一个或多个发送作为视频流信息的一部分的协议信息。
[0038] 数据提取模块214从接收的视频源提取音频/视频数据、将提取的音频/视频数据形成为音频/视频数据分组、以及向流处理器220中的一个或多个发送提取的音频/视频数据分组。在一个实施方式中,音频/视频分组是将使用用户数据报协议(UDP)向流处理器220传输的标准网络数据分组。其他实施方式可以使用其他因特网协议提取接收的视频流到网络分组中。
[0039] 对于传入视频流而言,负载平衡器216确定流处理器220中的哪一个接收视频流用于使用负载平衡算法来归档和编索引。在一个实施方式中,负载平衡器216基于每个流处理器220的业务负载在多个流处理器220中选择流处理器220用于视频流。负载平衡器216可以选择具有最轻业务负载的流处理器220来处理接收的视频流。其他实施方式可以允许负载平衡器包括其他确定因子,诸如不同流的数量、处理器利用率或分组处理率的测量值,以选择流处理器220用于处理接收的视频流。
[0040] 流处理器220接收从传入流式传输服务器210发送的视频流的多个音频/视频数据分组以便进一步处理。图4是图2A示出的流处理器220的框图。流处理器220包括流归档模块222和请求处理模块224。流归档模块222将流编索引信息420写入共享索引数据库118,并且将接收的音频/视频数据分组归档/存储在流归档数据库230中。对于倒回请求,请求处理模块224基于倒回请求中的定时信息从本地索引数据库240获取文件偏移信息,并且向流式传输服务器250发送文件偏移信息。对于订阅视频流的流式传输请求,处理模块224向流式传输服务器250直接发送从传入流式传输服务器210接收的所请求视频流的数据分组。
[0041] 流归档模块222接收视频流和/或视频流信息(例如,视频流式传输协议)的多个音频/视频数据分组,并且将数据分组存储在流归档数据库230中。在一个实施方式中,整个视频流作为一个归档文件存储在流归档数据库230中。可以经由流ID从流归档数据库230获取归档的视频流。出于归档和获取目的,属于给定视频流的所有数据分组共享相同的流ID。
[0042] 流归档模块222向共享索引数据库118写入归档文件的编索引信息。为了对归档的视频流编索引,在一个实施方式中,归档模块222在索引文件中存储视频流每个内帧的索引。该索引针对每个内帧存储元组(stream_ID,file_offset,time_stamp)。例如,对于位于字节123处并且在21,000毫秒处开始播放的内帧而言,内帧的索引是索引文件中的(stream12、123、21000)。类似地,对于位于字节345处并且在24,000毫秒处开始播放的相同视频流的另一内帧而言,索引是(stream12、345、24000)。整个视频流的索引文件是索引的列表,其中每个对应于视频流的内帧。根据视频流内帧的处理顺序对索引排序。
[0043] 为了加速向共享索引数据库118写入编索引信息,在另一实施方式中,流归档模块222在索引文件中保持视频流每个GOP的索引。具体地,流归档模块222以(stream_ID,file_offset,time_stamp)的格式保持每个GOP的第一内帧的索引。例如,对于具有5个GOP并且每个GOP由其第一内帧来表示的视频流而言,在下表中示出了该视频流的索引文件:
[0044] 表I:GOP级编索引
[0045]
[0046] 视频流生成将存储在归档数据库中的多个相关文件并且每个相关文件对应于该视频流的一部分是可能的,在该事件中,多个相关文件将共享相同的流ID。为了使针对视频流生成的多个文件相关,每个文件可以进一步由时间戳标记,该时间戳指示该部分视频流的时间偏移,从而从视频流的第一数据分组的起始连续计数(例如,视频流中的10分钟)。
[0047] 为了支持视频流在视频流正在广播时倒回到用户指定的时间点,对视频流编索引对于归档和获取而言需要是有效的。流归档模块222保持每个视频流的编索引信息用于数据获取。在一个实施方式中,流式传输归档模块222包括所存储视频文件的头部中的视频流的编索引信息。这允许流式传输归档模块222基于流ID首先访问存储的文件,并且继而从该头部读取以针对用户请求的相应时间点来访问文件中期望的偏移。
[0048] 在另一实施方式中,归档模块222向由多个流式传输数据中心200共享的全局存储设备(例如,图1中的共享索引数据库118)写入存储在归档数据库230中的每个视频流的编索引信息。共享索引数据库118通过流式传输中心标识来标识来自于特定流式传输数据中心的每个编索引信息。由流式传输中心处理的视频流的帧级编索引信息是视频流每个内帧的索引列表。索引可以具有元组(DC_ID,stream_ID,file_offset,time_stamp),其中“DC_ID”标识流式传输数据中心。响应于针对流式传输数据中心200接收的新的编索引信息,周期性地或按需更新共享索引数据库118中的编索引信息。每个流式传输数据中心200存储在共享索引数据库118中存储的编索引信息的副本,使得每个流式传输数据中心具有关于什么视频流归档在其他流式传输数据中心中的知识。
[0049] 共享编索引信息提供了针对跨多个流式传输数据中心200的可伸缩视频流式传输的各种益处。共享编索引信息允许流式传输系统基于多个因素有效地分发视频流。例如,流式传输系统可以指定特定的流式传输数据中心200来处理不流行的(即,低数量的客户端请求)视频流,并且仅将不流行的视频流归档在指定的流式传输中心200中。通过这样做,其他流式传输数据中心可以将它们的计算资源投入用于处理更高需求的视频流,同时具有响应于用户请求而到何处取得该不流行视频流的必要信息。视频流的流行性确定是设计参数。例如,视频流的流行性可以基于用户订阅的数量来确定。
[0050] 多个流式传输数据中心200共享编索引信息还提供了流式传输数据中心200的改进性能。流式传输数据中心200具有对哪个视频流进行归档并且在其他流式传输数据中心中可获得哪个视频流的灵活性。当流式传输数据中心200(供应流式传输数据中心)从客户端接收针对不是本地归档的视频流的倒回请求时,供应流式传输数据中心根据共享编索引信息的其本地副本,来确定其他哪个流式传输数据中心(源流式传输数据中心)正在处理该被请求的视频流。代替从源流式传输数据中心向供应流式传输中心、继而向客户端流式传输所请求的流,供应流式传输数据中心本地高速缓存视频流,并且从本地高速缓存向客户端发送视频流。因此,减少了在数据中心之间的多个跨越流式传输,从而使得总体性能改进。
[0051] 参考图4,请求处理模块224从视频流式传输服务器250接收流式传输请求,处理流式传输请求,并且获取所请求的视频流,并且向该视频流式传输服务器发送所请求的视频流。
[0052] 如关于图2B的流式传输服务器250在上面描述的,订阅请求不具有定时信息,其向流式传输服务器250指示客户端正在请求视频流的初始订阅。流式传输服务器250检查本地索引数据库240,以标识哪个流处理器220将处理该请求,并且向所标识的流处理器220传送该请求。标识的流处理器的请求处理模块224开始连续地向流式传输服务器250发送从传入流式传输服务器210接收的所请求流的数据分组。
[0053] 响应于倒回请求,流式传输服务器250确定是否需要倒回。在一个实施方式中,流式传输服务器250从该请求提取定时信息并且检查该请求中所请求开始时间的值。流式传输服务器250向处理模块224发送请求的开始时间和流ID以便进一步处理。因而,处理模块224基于提取的定时信息来计算文件偏移。在一个实施方式中,处理模块224通过检查本地索引文件来找到最接近于相对开始时间的time_stamp值,而将相对开始时间映射到其相应的文件偏移。备选地,流式传输服务器250还可以将来自于请求的相对开始时间值转换到相对于当前时钟时间的绝对开始时间值,在该情况中,处理模块224将该绝对开始时间值映射到其相应的文件偏移。这里,流式传输服务器250通过从由流式传输服务器250使用的当前始终时间中减去相对开始时间,来计算绝对时间值。处理模块224基于计算的绝对时间值来检查本地索引文件以找到time_stamp值。流式传输服务器250在最接近time_stamp的文件偏移处获取内帧,并且向客户端120发送内帧的数据分组。
[0054] 例如,流处理器220的请求处理模块224从视频流式传输服务器250接收URL中的流式传输请求,该URL如“http://www.hostserver.com/play?id=Stream12&time=600000”。该请求包含相对开始时间信息,即“time=600000”。请求的开始时间是相对开始时间值600,000毫秒(即,距视频的开始10分钟)。处理模块224检查本地索引数据库240并且找到具有最接近匹配时间值的索引记录,例如(Stream12,900,600000)。这里的“900”值指示相对于视频流的开始、对应于时间值600,000毫秒的内帧的字节偏移。备选地,流式传输服务器250将相对开始时间值6000,000的相对开始时间值转换到相对于当前时钟时间的绝对时间值。假设视频流之前广播了1,800,000毫秒(即,30分钟),则流式传输服务器250确定从当前时钟时间倒回到的绝对时间是1,200,000毫秒(20分钟)。
处理模块224检查本地索引数据库240,并且找到具有最接近匹配时间值的索引记录,例如(Stream12,900,600000)。流式传输服务器250获取起始于归档流的文件偏移900的内帧数据分组并且开始从该文件偏移向客户端120发送数据分组。
[0055] 在另一实施方式中,客户端110将用户请求中的定时信息转换到绝对time_stamp,并且向流式传输服务器250发送该time_stamp连同流标识。处理模块224检查本地索引文件来找到最接近接收的绝对time_stamp值的time_stamp值。处理模块224在最接近该time_stamp的文件偏移处获取内帧并且发送该内帧的数据分组。
[0056] 图5是用于处理直播流的流式传输数据中心200的操作的流程图。初始,流式传输数据中心200的传入流式传输服务器210从直播源接收510视频流。传入流式传输服务器210通过协议解释模块212解释512视频流中的流式传输协议、并且通过数据提取模块214从视频流提取514音频/视频数据。传入流式传输服务器210还标识516流处理器220以进一步处理视频流,并且向流处理器220分发518提取的流数据以便归档和编索引。
[0057] 图6是供应来自于客户端设备的服务流式传输请求的流式传输数据中心的操作的流程图。初始,流式传输数据中心200的流式传输服务器250中的一个从用户的客户端设备接收610流式传输请求。该流式传输请求至少包括标识由用户请求的视频流的流ID。响应于请求不包含定时信息,流式传输服务器250通过针对本地索引数据库240检查流ID,来标识612哪个流处理器220具有请求的视频流,并且获取从当前时间开始的所请求流的数据分组。响应于请求包含定时信息,流处理器220确定该请求是否针对倒回视频流。如果该请求是倒回请求,则流式传输服务器250从该请求提取614定时信息,并且处理模块224计算616对应于该定时信息的文件偏移。流式传输服务器250获取618所请求的流,并且向客户端120发送620从获得的文件偏移开始的视频流。
[0058] 分发视频流式传输系统的典型实现将包括如图1所述的多个流式传输数据中心。在图6中进一步示出了对正在广播流时的视频流无缝倒回的服务器侧支持、和跨多个流式传输数据中心200的可伸缩系统性能。图7是用于跨多个流式传输数据中心200供应视频流式传输请求,因此提供增强的伸缩性的操作的流程图。初始,数据中心分配器114从客户端接收710流式传输请求。分配器114基于一个或多个确定因素(诸如可用流式传输数据中心200的业务负载)向流式传输数据中心200中的一个分配712请求。选择的流式传输数据中心200基于请求的流ID检查本地索引数据库。响应于在选择的数据中心230的本地归档数据库230中可获得请求的数据,流式传输数据中心200如结合图2至图4描述在上面描述的那样处理720流式传输请求。响应于请求的数据不可本地获得,流式传输数据中心200检查本地索引数据库240,该本地索引数据库240包含由所有流式传输数据中心共享的全局编索引文件的副本。基于全局编索引文件,流式传输数据中心200标识716其他哪个流式传输数据中心200具有请求的流。如果流式传输请求是倒回请求,则流式传输数据中心200获得所请求流的副本并且存储在本地高速缓存中718。流式传输数据中心200继续处理720该流式传输请求。对该流式传输请求的处理包括图6中描述的处理步骤,诸如标识612流处理器、提取614倒回时间需求、计算616归档文件偏移和流式传输618请求的视频流。如果流式传输请求是订阅请求,则流式传输数据中心200将该请求重定向到标识的流式传输数据中心。该标识的流式传输数据中心检查其本地索引数据库240以找到哪个流处理器220将处理所请求流的数据分组,并且发送来自于该标识的流处理器220的所请求流的数据分组。
[0059] 包括上面的描述用于示出优选实施方式的操作并且不意味着限制本发明的范围。本发明的范围仅由以下权利要求书限制。根据上面的讨论,相关领域中技术人员将明白很多变型,这些变型仍旧由本发明的精神和范围包含。
[0060] 已经关于一个可能的实施方式特别详细地描述了本发明。本领域技术人员将理解本发明可以在其他实施方式中实现。首先,组件的特别命名、大写形式、属性、数据结构或任何其他编程或结构方面不是强制或重要的,并且实现本发明或其特征的机制可以具有不同的名称、形式或协议。而且,可以经由如上所述的硬件和软件的组合或全部以硬件元素来实现系统。而且,在此描述的各种系统组件之间的功能的特定划分仅是示例性的而不是强制的;单个系统组件执行的功能可以替代地由多个组件执行,并且由多个组件执行的功能可以替代地由单个组件执行。
[0061] 上面描述的某些部分呈现了按照对信息的操作算法和的符号化表示的本发明的特征。这些算法描述和表示是数据处理领域中技术人员用于向本领域中其他技术人员最有效地传递其工作实质的手段。这些操作虽然被功能地或逻辑地进行了描述,但是应该被理解为由计算机程序实现。此外,还已经多次证明了将操作的这些布置表示为模块或按照功能名称描述而不失一般性的方便性。
[0062] 除非特别指出,否则根据上面的讨论明显得出,应该理解,贯穿描述,利用术语诸如“处理”或“计算”或“确定”或“显示”等的讨论表示计算机系统或类似电子计算设备的动作,该动作操纵并变换该计算机系统存储器或寄存器或其他此类信息存储设备、传输或显示设备内表示为物理(电子)量得数据。
[0063] 本发明的某些方面包括以算法形式在此描述的处理步骤和指令。应该指出,本发明的处理步骤和指令可以以软件、固件或硬件实现,并且当以软件实现时,可以被下载以驻留在由实时网络操作系统使用的不同平台上并且从其操纵。
[0064] 本发明还涉及用于执行此处操纵的装置。该装置可以针对所需目的而具体构建,或其可以包括通用计算机,该通用计算机由存储在可由计算机访问的计算机可读介质上的计算机程序选择性激活或重新配置。此类计算机程序可以存储在计算机可读存储介质上,计算机可读存储介质诸如但不限于任何类型的盘,包括软盘、光盘、CD-ROM、磁光盘、只读存储器(ROM)、随机访问存储器(RAM)、EPROM、EEPROM、磁或光卡、专用集成电路(ASIC)、或适合存储电子指令的任何类型的介质,并且每个介质耦合至计算机系统总线。此外,在本说明书中提及的计算机可以包括单个处理器或可以是采用多处理器涉及来增加计算能力的架构。
[0065] 在此提供的算法和操纵并不固有地涉及任何特定计算机或其他装置。根据此处的教导,各种通用系统还可以与程序一起使用,或构建更专用的装置来执行所需的方法步骤被证明是方便的。各种这些系统所需的结构连同等同物变型对于本领域技术人员而言是明显的。此外,没有参考任何特定的编程语言来描述本发明。应该理解,各种编程语言可以用于实现如上所述的本发明的教导,并且为了本发明的实施和最佳模式的公开而提供对具体语言的任何参考。
[0066] 本发明通多个拓扑将很好地适应各种计算机网络系统。在该领域内,大型网络的配置和管理包括存储设备和计算机,它们通过诸如因特网之类的网络通信地耦合至不相似的计算机和存储设备。
[0067] 最终,应该指出,已经出于易读性和指导性目的在大体上选择了说明书中所使用的语言,并且该语言可能没有被选择用于记述或限制本发明的主题。因而,本发明的公开旨在示出但不限制本发明的范围,本发明的范围记载在以下的权利要求书中。