实时视频检测器转让专利

申请号 : CN201280025814.X

文献号 : CN103583040A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : E·R·斯文森N·布汉达里J·海尔伯恩R·奥伯霍费尔J·汉森

申请人 : 天火实验室公司

摘要 :

视频检测器截获来自客户端设备的对取回数据的请求。视频检测器确定请求是否针对取回视频文件。如果请求针对视频文件并且视频文件被视为被码转换以显示于客户端设备上,则视频检测器将请求与编码参数一起向视频优化器转发。视频检测器基于客户端设备的属性、客户端设备可访问的网络、那些网络的状况、请求的视频的属性和请求的视频的类型选择编码参数。编码参数也包括请求的视频将被码转换成的文件格式类型。

权利要求 :

1.一种用于检测视频请求的方法,所述方法包括:

截获对从服务器取回内容的请求,所述请求源于客户端设备并且从网络被截获;

基于与所述请求关联的信息确定所述对取回内容的请求是否是针对取回视频;

基于所述客户端设备的属性确定码转换所述视频;以及

响应于所述视频被标识用于码转换,将所述视频请求向用于码转换所述视频的优化器重定向。

2.根据权利要求1所述的方法,其中基于在对于视频的请求中的文件名扩展检测所述请求,所述文件名扩展在所述请求的净荷中被标识。

3.根据权利要求1所述的方法,其中基于用户代理和对于视频的请求的引用者头部检测所述请求。

4.根据权利要求1所述的方法,还包括针对被标识用于码转换的视频生成编码简档,所述编码简档生成基于可用于所述客户端设备的网络连接的属性、所述客户端设备的属性、请求的所述视频的属性和请求的视频文件的类型中的至少一项。

5.根据权利要求4所述的方法,还包括基于针对所述视频请求生成的所述编码简档确定码转换所述视频。

6.根据权利要求1所述的方法,还包括基于请求的所述视频的音频和视频属性确定请求的所述视频的码转换视频大小。

7.根据权利要求6所述的方法,其中请求的所述视频的所述音频和视频属性包括请求的所述视频的比特率。

8.根据权利要求1所述的方法,其中将所述视频请求向优化器重定向包括生成具有向所述优化器的重定向请求的统一资源定位符(URL)。

9.一种用于检测视频请求的方法,所述方法包括:

截获对从服务器取回内容的请求,所述请求在实时消息接发协议(RTMP)中被提出,所述请求源于客户端设备并且从网络被截获;

基于截获的所述对取回内容的请求生成超文本传送协议(HTTP)POST/PUT请求;

向视频优化器发送所述HTTP POST/PUT请求;

基于发送的所述HTTP POST/PUT请求从所述视频优化器接收优化的视频;以及向所述客户端发送所述优化的视频。

10.根据权利要求9所述的方法,还包括自适应地限制可用于所述客户端设备的比特范围。

11.一种存储用于检测视频请求的可执行计算机程序指令的计算机可读存储介质,所述计算机程序指令包括用于以下操作的指令:截获对从服务器取回内容的请求,所述请求源于客户端设备并且从网络被截获;

基于与所述请求关联的信息确定所述对取回内容的请求是否是针对取回视频;

基于所述客户端设备的属性确定码转换所述视频;以及

响应于所述视频被标识用于码转换,将所述视频请求向用于码转换所述视频的优化器重定向。

12.根据权利要求11所述的计算机可读存储介质,其中基于在对于视频的请求中的文件名扩展检测所述请求,所述文件名扩展在所述请求的净荷中被标识。

13.根据权利要求11所述的计算机可读存储介质,其中基于用户代理和对于视频的请求的引用者头部检测所述请求。

14.根据权利要求11所述的计算机可读存储介质,还包括用于以下操作的指令:针对被标识用于码转换的视频生成编码简档,所述编码简档生成基于可用于所述客户端设备的网络连接的属性、所述客户端设备的属性、请求的所述视频的属性和请求的视频文件的类型中的至少一项。

15.根据权利要求14所述的计算机可读存储介质,还包括用于以下操作的指令:基于针对所述视频请求生成的所述编码简档确定码转换所述视频。

16.根据权利要求11所述的计算机可读存储介质,还包括用于以下操作的指令:基于请求的所述视频的音频和视频属性确定请求的所述视频的码转换视频大小。

17.根据权利要求16所述的计算机可读存储介质,其中请求的所述视频的所述音频和视频属性包括请求的所述视频的比特率。

18.根据权利要求11所述的计算机可读存储介质,其中将所述视频请求向优化器重定向包括生成具有向所述优化器的重定向请求的统一资源定位符(URL)。

19.一种存储用于检测视频请求的可执行计算机程序指令的计算机可读存储介质,所述计算机程序指令包括用于以下操作的指令:截获对从服务器取回内容的请求,所述请求是在实时消息接发协议(RTMP)中被提出,所述请求源于客户端设备并且从网络被截获;

基于截获的所述对取回内容的请求生成超文本传送协议(HTTP)POST/PUT请求;

向视频优化器发送所述HTTP POST/PUT请求;

基于发送的所述HTTP POST/PUT请求从所述视频优化器接收优化的视频;以及向所述客户端发送所述优化的视频。

20.根据权利要求19所述的计算机可读存储介质,还包括用于以下操作的指令:自适应地限制可用于所述客户端设备的比特范围。

说明书 :

实时视频检测器

[0001] 相关申请的交叉引用
[0002] 本申请要求对通过完全引用而结合于此、于2011年4月15日提交的第61/476,214号美国临时申请的权益和优先权。

技术领域

[0003] 本公开内容总体上涉及对视频编码领域,并且更具体地涉及在向计算设备用流传输视频时基本上实时地对视频进行编码。

背景技术

[0004] 计算设备的用户普遍在他们的计算设备上查看视频。常规地,用户在他们的计算设备上下载视频文件并且执行文件以查看视频。这些查看内容的常规方法有缺点,因为它
们要求用户在用户可以查看文件之前等待文件下载。另外,预计用户下载每个文件、在计算设备上对它进行定位并且执行它可能并不合理。
[0005] 为了克服这些不足,一些系统让用户能够从托管服务器用流传输视频文件。然而,在客户端设备上执行的应用可能不能用流传输某些格式的视频流。此外,在视频流内的视频帧可能太大而无法用有限计算资源或者欠佳网络连接向移动计算设备提供无间断回放。
这对于具有欠佳网络连接的移动计算设备尤为如此。这样,移动计算设备的用户通常必须
等待在他们的设备上用流传输视频。用流传输的视频通常定期地冻结或者缓冲,从而妨碍
用户享用视频流的无间断回放。
[0006] 一些服务器可以对视频流进行编码以向移动计算设备递送更低分辨率视频。然而,这样的系统也引起在用户的请求与流传输过程之间的延迟。例如,这样的系统不能在向用户用流传输码转换的视频之时实时码转换视频流。此外,这样的系统通常不能为用户保
留视频控制功能,比如暂停、查找和视频分辨率改变。这样,希望在他们的移动计算设备上用流传输视频文件的用户通常必须为了加载和缓冲视频而等待不合理时间量或者他们必
须忍受不提供无间断回放的视频。

附图说明

[0007] 公开的实施例具有将从具体实施方式、所附权利要求和附图更容易清楚的其他优点和特征。以下是附图的简要介绍。
[0008] 图1是根据一个实施例的计算环境的高级框图。
[0009] 图2是图示根据一个实施例的用于作为在图1的环境中所图示的实体之一使用的典型计算机系统的功能视图的高级框图。
[0010] 图3图示用于对视频文件进行编码的视频检测器的高级框图的一个实施例。
[0011] 图4图示用于对视频文件进行编码的视频优化器的高级框图的一个实施例。
[0012] 图5是图示根据一个实施例的在计算环境中的各种单元之间的过程流程的交互图。
[0013] 图6是图示根据一个实施例的用于码转换MP4文件的过程流程的交互图。
[0014] 图7是图示根据一个实施例的用于处置查找操作的过程步骤的示图。
[0015] 图8是图示根据一个实施例的用于码转换RTMP文件的过程流程的交互图。

具体实施方式

[0016] 附图和以下描述仅通过例示涉及优选实施例。应当注意,从以下讨论这里公开的结构和方法的备选实施例将容易地被认识作为可以在不脱离要求保护的内容的原理时运
用的可行备选。
[0017] 现在将具体参照若干实施例,在附图中图示这些实施例的示例。注意,无论何处可行都可以在图中使用相似或者相同标号并且这些标号可以指示相似或者相同功能。附图仅出于例示的目的而描绘公开的系统(或者方法)的实施例。本领域技术人员将从以下描述中容易地认识到可以运用这里所示的结构和方法的备选实施例而未脱离这里描述的原理。
[0018] 配置概述
[0019] 公开了一种用于检测视频请求的系统、方法和计算机可读介质。它包括截获对从服务器取回视频的请求,其中请求源于客户端设备并且从网络被截获。此外,分析请求以基于与请求关联的信息确定请求是否针对取回视频。如果请求是针对视频,则基于视频的属
性为视频选择简档。此外,分析请求以确定是否码转换视频以用于在客户端设备上回放,其中基于在视频简档中提供的值进行确定。如果视频被标记用于码转换,则将视频与码转换
参数一起向优化器重定向。基于选择的视频简档和网络连接属性选择码转换参数。向请求
视频的客户端设备发送优化的视频以在客户端设备中实现回放。
[0020] 系统架构
[0021] 图1是根据一个实施例的计算环境的高级框图。它包括客户端计算设备102(客户端计算设备102包括客户端应用112和解码器114)、视频检测器104、视频优化器106、始发服务器108以及连接客户端计算设备102、检测器104和始发服务器108的网络110。在
一个实施例中,视频优化器经由网络被连接到视频检测器104和始发服务器108。
[0022] 在高级别,响应于用户请求,在客户端计算设备102上执行的客户端应用112请求通过网络110取回内容。视频检测器104截获请求并且确定请求是否针对视频。如果请求
不是针对视频,则视频检测器104向适当托管服务器转发请求。在另一方面,如果请求是针对视频,则视频检测器104标记视频以用于码转换并且将标记的请求重定向回到客户端计
算设备102。客户端计算设备102通过网络110发送标记的请求,其中向视频优化器106路
由请求。视频优化器106请求来自始发服务器108的视频并且优化从始发服务器计算设备
108接收的视频。向视频检测器104发送优化的视频,其中通过网络110向客户端计算设备
102转发回它。在客户端计算设备102上执行的解码器114可以对接收的视频流进行解码
以针对查看客户端计算设备102的用户回放流。
[0023] 网络110代表在客户端计算设备102、视频检测器104和始发服务器108之间的通信途径。虽然在图1中未示出,但是视频优化器也可以经由网络110被连接到视频检测
器104和始发服务器108。网络110也可以利用未必是因特网的部分的专用或者专有通信
链路。在一个实施例中,网络110使用标准通信技术和/或协议。因此,网络110可以包
括使用诸如以太网、Wi-Fi(802.11)、综合业务数字网络(ISDN)、数字用户线(DSL)、异步传输模式(ATM)等技术的链路。类似地,在网络110上使用的联网协议可以包括多协议标签
切换(MPLS)、传输控制协议/网际协议(TCP/IP)、超文本传送协议(HTTP)、简单邮件传送协议(SMTP)、文件传送协议(FTP)等。在一个实施例中,链路中的至少一些链路使用包括通用分组无线电服务(GPRS)、增强数据GSM环境(EDGE)、码分多址2000(CDMA2000)和/或宽带CDMA(WCDMA)的移动联网技术。可以使用包括超文本标记语言(HTML)、可扩展标记语言(XML)、无线接入协议(WAP)、短消息服务(SMS)等的技术和/或格式来表示通过网络110交换的数据。此外,可以使用常规加密技术(比如安全套接字层(SSL)、安全HTTP和/或虚拟专有网络(VPN))来加密链路中的所有或者一些链路。在另一实施例中,实体可以使用定制和/或专用数据通信技术取代或者附加于以上描述的数据通信技术。
[0024] 客户端计算设备102代表由通过网络110接收视频流的用户操作的任何实体。客户端计算设备102有时也被称为“移动设备”或者“显示设备”。在一个实施例中,客户端计算设备102包括由终端用户用来与网络110上的其他计算机通信以便用流传输视频文件的
计算机系统。在其他实施例中,客户端计算设备102包括除了计算机系统之外的有网络能
力的设备,比如个人数字助理(PDA)、蜂窝电话、智能电话、寻呼机、电视“机顶盒”等。虽然图
1仅图示了一个客户端计算设备102,但是本发明的实施例可以具有连接到网络110的数千
个或者数百万个客户端设备。客户端应用112可以在客户端计算设备102上执行。客户端
应用可以包括能够在客户端设备上执行并且与网络112对接的任何应用。客户端应用的示
例包括但不限于web浏览器,比如SKYFIRE、FIREFOX、INTERNET EXPLORER、CHROME等。客户端应用112可以与用户对接并且接收对回放视频流的用户请求。响应于用户请求,客户端
应用112发送对通过网络110用流传输视频的请求。可以如在本说明书中描述的那样在向
客户端计算设备102用流传输之前在视频优化器上对视频进行编码。在一个实施例中,解
码器114对传入的编码的视频流进行解码并且向客户端应用112提供它。客户端应用112
可以在与客户端计算设备102关联的显示器上回放解码的视频流。在另一实例中,可以在
客户端102存储从视频优化器106接收的编码的视频以用于以后查看。在其中客户端是高
速缓存或者如本领域中已知的相似设备的实施例中也可以在客户端102存储编码的视频。
[0025] 视频检测器104截获由客户端计算设备102提出的请求。在一个实施例中,视频检测器104是经由网络110连接到客户端计算设备102的内联网络装置。在另一实施例中,视
频检测器104可以在客户端计算设备102上执行。作为内联网络装置,视频检测器104接
收由客户端计算设备102发送和接收的所有流量中的全部或者子集,该流量包括超文本传
送协议(HTTP)、实时消息接发协议(RTMP)流量。在这样的实施例中,视频检测器作为网络代理而服务。在一个实施例中,视频检测器104高度地可用(HA)和可伸缩以便每秒处置许多吉比特的流量。在这样的实施例中,视频检测器104由网络代理过程(比如SQUID)构成
而视频检测器104通过本地网络接口(比如因特网内容适配协议(ICAP))由SQUID调用。在一个实施例中,视频检测器104通过使用向视频检测器104中集成的另一过程来处置RTMP
流量。在一个实施例中,另一装置可以是经由应用编程接口(API)调用视频检测器104的
网络代理。这样的实施例允许视频检测器104与现有网络基础设置集成。这样,视频检测
器104可以与负荷平衡器、路由器和内容导引装置(content steering appliance)集成。
[0026] 在一个实施例中,在客户端计算设备102上实施视频检测器104。这样,使客户端或者软件提供者能够具有视频优化服务而无需网络部件。视频检测器104可以作为在设备
上运行的代理执行以通过视频检测过程截获待馈送的HTTP(和其他)协议。在这样的实施
例中,可以从客户端计算设备102直接将请求和/或响应向视频码转换器106或者文件高
速缓存重定向。在一个实施例中,客户端软件可以调用用于确定是否启用优化的服务从而
使优化成为可用于用户的服务。
[0027] 视频优化器106码转换由视频检测器104标识的视频。视频优化器106经由网络110与视频检测器104和始发服务器计算设备108通信。视频优化器接收来自客户端计算
设备102并且由视频检测器104路由的对优化视频的请求。视频优化器106可以调用始发
服务器计算设备108以取回请求的视频并且码转换它。可以经由视频检测器104向客户端
计算设备102用流传输码转换的视频。在一个实施例中,视频优化器106通过网络110与
客户端计算设备102对接。始发服务器计算设备108是向客户端计算设备102提供网页、
音频/视频文件和/或其他电子文档的实体。web始发服务器计算设备108可以例如是由
国家媒体出口运营的大型因特网网站、在由独立个体运营的web服务器上的个人博客和/
或网页的另一发布者。尽管在图1中仅示出一个web托管服务器108,但是系统的实施例可
以具有数千个或者数百万个不同托管服务器。为了清楚的目的仅示出一个始发服务器计算
设备108。这一描述使用术语“视频”以指代由始发服务器计算设备108供应的任何电子文
件,例如,文档、音频或者视频文件等,而无论文档是否在技术上是视频文件。
[0028] 示例计算机器架构
[0029] 图2是图示典型计算机器的一个实施例的高级框图。注意,计算机器200可以是系统或者系统的部分,例如,一起操作的两个或者更多机器或者利用一个或者多个其他设备
操作的一个或者多个机器。图1的环境中所示的计算实体(例如,102、104、106和108)与计算机器200构造相似并且可以被进一步定制以用于如这里进一步描述的特定功能配置(例
如,操作)。
[0030] 图2图示能够从机器可读介质读取指令并且在一个或者多个处理器和/或控制器中执行它们的示例机器的部件。具体而言,图2示出示例形式为计算机系统200的机器的
图解表示,在该计算机系统200内可以执行用于使机器(例如,具有一个或者多个处理器和/或控制器)执行这里讨论的方法中的任何一种或者多种方法的指令224(例如,软件代码)。
在备选实施例中,机器作为独立设备操作或者可以被连接(例如,联网)到其他机器。在联网部署中,机器可以在服务器-客户端网络环境中的服务器机器或者客户端机器的能力内或
者作为对等(或者分布式)网络环境中的对等机器操作。
[0031] 机器可以是服务器计算机、客户端计算机、个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、智能电话、web装置、网络路由器、交换机或者桥接器或者能够执行指令224(依序或者以其他方式)的任何机器,这些指令指定机器将采取的动作。另外,尽管仅图示了单个机器,但是术语“机器”也应当被解读为包括如下机器的任何汇集,这些机器个别或者共同执行指令224以执行这里讨论的方法中的任何一种或者多
种方法。
[0032] 示例计算机机器200包括被配置用于经由总线108相互通信的处理器202(例如,中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)、一个或者多个专用集成电路(ASIC)、一个或者多个射频集成电路(RFIC)或者这些各项的任何组合)、主存储器204和静态存储器206。计算机系统200还可以包括图形显示单元210(例如,等离子体显示板
(PDP)、液晶显示器(LCD)、投影仪或者阴极射线管(CRT))。计算机系统200也可以包括也被配置用于经由总线208通信的字母数字输入设备212(例如,键盘)、光标控制设备214(例如,鼠标、跟踪球、操纵杆、运动传感器或者其他指点仪器)、存储单元216、信号生成设备218(例如,扬声器)和网络接口设备220。
[0033] 存储单元216包括机器可读介质222,在该机器可读介质222上存储体现这里描述的方法或者功能中的任何一种或者多种方法或者功能的指令224(例如,软件)。指令224
(例如软件)也可以完全或者至少部分驻留于主存储器204内或者在计算机系统200执行这
些指令期间驻留于处理器202内(例如,处理器的高速缓冲存储器),主存储器204和处理器
202也构成机器可读介质。可以经由网络接口设备220通过网络110传输或者接收指令224
(例如,软件)。
[0034] 尽管在一个示例实施例中将机器可读介质222示出为单个介质,但是术语“机器可读介质”应当被解读为包括能够存储指令(例如,指令224)的单个介质或者多个介质(例如,集中式或者分布式数据库或者关联的高速缓存和服务器)。术语“机器可读介质”也应当被解读包括能够存储指令(例如,指令224)的任何介质,这些指令用于由机器执行并且使机器执行这里公开的方法中的任何一种或者多种方法。术语“机器可读介质”包括但不限
于形式为固态存储器、光介质和磁介质的数据贮存库。
[0035] 用于对数据进行编码的配置
[0036] 现在参照图3,其图示了根据一个实施例的视频检测器104的一个实施例。如先前所言,视频检测器104在结构上与计算机器200配置相似并且如这里所言被进一步配置。
视频检测器104被图示为模块的高级框图,这些模块被配置用于检测对用流传输视频文件
的请求并且如果适合则向视频优化器106路由视频请求。在一个实施例中,视频检测器104
包括标识引擎302、选择引擎304、码转换确定引擎306、URL生成器308、自适应比特率引擎
310、动态比特率调整器312和健康检查引擎314。模块被配置用于如这里描述的那样工作
和互操作。
[0037] 标识引擎302确定请求是否由客户端计算设备102生成或者对客户端计算设备102的响应是否为视频流。在一个实施例中,标识引擎302查看文件名扩展或者其他已知
URL方案(例如,YOUTUBE视频取读)以确定是否请求视频馈送。在响应路径中,标识引擎302查看mime类型或者其他头部信息和/或实际净荷数据以确定请求是否针对视频馈送。例
如,FLASH视频(FLV)和MPEG-4(MP4)视频通过分别查看净荷的4或者8字节而可标识。
FLV文件始于‘F’、‘L’、‘V’,并且MP4视频在字节5到8中具有‘f’、‘t’、‘y’、‘p’。在一个实施例中,选择引擎304标识用户代理和引用者头部以确定视频请求的类型。如果引用
者头部例如是http://.swf,则标识引擎302假设它被FLASH播放器请求。一
些浏览器并不插入用于插件的引用者头部,因此标识引擎可以寻找这一头部的不存在以标
识视频请求。这样,标识引擎302确定取读请求是否针对视频流。在一个实施例中,标识引擎302向对于视频的客户端请求添加视频重定向到优化器标志。
[0038] 在一个实施例中,虽然文件或者请求可以针对视频,但是如果用未码转换标志标记请求,则标识引擎302不将请求标识为视频。例如,如果视频检测器不能处理视频或者文件,则视频优化器106可以添加这样的标志,从而使得视频检测器104不向视频优化器106
发送回相同视频。
[0039] 选择引擎304选择用于每个标识的视频取读请求的编码简档。编码简档可以基于与请求客户端计算设备102关联的若干参数,这些参数包括但不限于用户-代理、播放器版
本、包括用户的数据计划等的用户/预订信息、网络类型(WiFi、第三代移动电信协议(3G)、第四代移动电信协议(4G)等)、当前网络状态和网络拥塞。选择的简档包括以下各项中的至少一项:启用或者禁用码转换或者视频压缩的标志、视频宽度/高度、视频比特率、视频帧速率除数、音频采样率和声道数目、音频比特率和其他编码信息如CODEC和CODEC简档、
比如H.264主要等以及视频容器目的地如FLV、MP4等。在一个实施例中,向确定是否码转
换视频文件的码转换确定引擎306提供选择的简档信息。
[0040] 在一个实施例中,选择引擎304选择用于优化在客户端的回放的编码简档。视频优化器106可以能够在码转换过程中改变视频的容器格式。例如,FLASH播放器可以回放
多种编码的视频,因此可以将MP4转换成FLV而未引起错误。由于FLV文件未预先指定所
有帧大小,所以它有益地允许自适应码转换。此外,由于视频优化器106可以码转换成有益于客户端情形的格式,所以选择引擎304可以选择编码简档以利用硬件加速的解码和其他
客户端属性。
[0041] 码转换确定引擎306确定是否码转换与取读请求关联的视频并且确定用于视频优化器106的比特率。在一个实施例中,码转换确定引擎306基于由选择引擎304提供的
编码简档进行这样的确定。例如,可以基于如在编码简档中提供的速率计划等为特定用户
启用或者禁用视频压缩。在一个实施例中,码转换确定引擎306将这一信息与当前网络条
件信息一起用来确定是否码转换视频。通过与网络中的拥塞检测单元通信,可以基于拥塞
将个别流适配到变化的程度。
[0042] 在一个实施例中,一旦选择引擎304选择简档,则码转换确定引擎306估计源比特流。例如,简档参数(比如持续时间)可以与文件的大小一起用来计算源比特流。比较从选择引擎304接收的估计的比特流与源比特率,其中如果估计的压缩增益不足或者为负,则
视频被标记为被视频优化器106忽略并且向客户端传递视频。在一个实施例中,简档选择
引擎304被配置用于最小压缩增益。
[0043] 在另一实施例中,如果源视频的尺度少于简档的尺度,则码转换确定引擎306可以使用面积之差计算更小比特率以考虑更小视频尺度。由于视频优化器106未使视频的尺
度更大,所以码转换确定引擎306相应地减少比特率。在一个实施例中,使用面积的平方根之比来计算减少量。
[0044] 如果视频被码转换确定引擎306视为被码转换,则URL生成器308生成具有域/主机的URL从而提供向视频优化器106的重定向请求。在一个实施例中,URL可以包含以下各
项中的至少一项:视频宽度/高度、视频比特率、视频帧速率除数、音频采样率和声道数目、音频比特率、源URL、客户端的用户代理、源域cookie和视频优化器106的任何其他认证数
据。在一个实施例中,URL生成器利用HTTP重定向重写原始响应并且将位置头部设置为新
URL。这使客户端向视频优化器106发出新请求。视频检测器104也具有用于寻找传入URL
的逻辑,其中URL由视频检测器生成从而使得它们未被再次截获。
[0045] 自适应比特率引擎310调节可用于客户端的比特范围。在一个实施例中,自适应比特率引擎限制比特率以迫使播放器适应某些比特率范围而不是消耗尽可能多的带宽。自
适应比特率(ABR)播放器310测量网络吞吐量以便判决使用哪个比特率简档。自适应比特
率引擎310可以运用速率限制以迫使播放器认为网络被拥塞或者速度比现实更慢。在一个
实施例中,比特率引擎130将对于请求的视频段的速率限制应用于由简档选择所指定的限
制。相似地,自适应比特率引擎310在渐进下载中使用用于文件的用户简档。自适应比特
率引擎也可以与执行速率限制的另一网元结合工作。在这样的实例中,ABR引擎向网元通
知用于在速率限制器中使用的目标比特率。
[0046] 在另一实施例中,自适应比特率引擎执行清单文件操纵以限制向客户端通报的可用比特率。为了基本上实时码转换,自适应比特率引擎310为先前不存在的比特率范围创
建清单文件简档。对于ABR协议,清单文件向客户端计算设备102通报服务器具有的可用
比特率。通过截获和重写清单文件,自适应比特率引擎310可以消除某些带宽简档,并且因此让客户端‘无视’这些简档的存在。这样,客户端计算设备102向新的通报的简档切换,从而使自适应比特率引擎310能够调节视频比特率。如果ABR会话未包含对于给定的网络/
用户状态可接受的比特率,则自适应比特率引擎截获清单文件并且基于选择的用户简档插
入附加比特率简档和/或删除更高比特率简档。在一个实施例中,视频检测器向视频优化
器106发送信息,或者它可以等待直至请求未存在的速率段。视频优化器106可以从始发
服务器取读更高比特率段并且开始码转换成新比特率。视频优化器106然后向视频检测器
104转发段,视频检测器104然后向客户端计算设备102上继续转发它。
[0047] 动态比特率调整器312改变流中间编码比特率。例如,对于FLV文件格式,例如由于未预先指示帧大小,所以动态比特率调整器312可以改变流中间编码大小或者比特率。
随着条件在网络110中改变,动态比特率调整器312将视频优化器106更新成新条件。为
了有助于这一操作,动态比特率调整器312向每个视频流指派会话ID。在一个实施例中,负荷平衡器可以控制码转换器。在这样的系统中,可以向适当码转换器发送更新请求,因为负荷平衡器可以基于这一会话ID向特定码转换器导引流量。
[0048] 备选地,动态比特率调整器312可以向视频优化器106发送广播消息。如果广播消息包含个别流或者会话ID,则在视频优化器内的码转换器仍然可以在每流基础上作用。
如果不是,则比特率调整跨越所有流为全局。比特率调整消息可以采用两个形式。第一形
式是直接编码器调整。在这一形式中,动态比特率调整器312向码转换器发送新比特率(以及可能发送宽度、高度等)。在视频优化器106上的码转换器遵循这些指令,其中有一些可能的例外处置。第二形式是间接调整。在这一形式中,动态比特率调整器312传达拥塞水
平或者编码激进性。码转换器截获这一信息并且响应于由动态比特率调整器312发送的水
平标识压缩设置。
[0049] 健康检查模块314定期地查询视频优化器106以标识码转换容量。知道码转换容量可以帮助防止其中用于进一步码转换的资源不足或者停用的情况。如果有不活跃的时
段,则健康检查模块314定期地查询视频优化器106以保证资源在需要时可用。在客户端
计算设备102上执行的视频检测器104可以在对会话重定向时监视码转换器响应并且在故
障时重定向回到原有URL,或者健康检查模块314可以在进行重定向之前执行健康检查。
[0050] 图4图示根据一个实施例的视频优化器106的一个实施例。如先前所言,视频优化器106在结构上与计算机器200配置相似并且如这里所言被进一步配置。视频优化器106
被图示为模块的高级框图,这些模块被配置用于对从始发服务器计算设备108并且响应于
客户端计算设备102请求而接收的视频进行编码。在一个实施例中,视频优化器106包括会
话跟踪器402、性能估计器404、HTTP服务器406、FLASH HTTP处置器408、查找处置器410、元数据处置器412和码转换引擎414。模块被配置用于如这里描述地工作和互操作。
[0051] 会话跟踪器402通过使用由视频检测器104提供的会话ID和/或URL来跟踪在视频优化器106上执行的所有会话。会话跟踪器402可以保持会话的跟踪以用于动态调整
和用于查找操作。在一个实施例中,如果系统想要解决流专属带宽,则会话跟踪器402可以提供码转换器的适当实例。在另一实施例中,会话跟踪器402跟踪会话以保持与查找请求
关联的请求的跟踪。例如,在查找操作(比如快进)出现时,在客户端计算设备102上的客户端应用112放弃文件下载请求并且用新起点开始新下载。
[0052] 在一个实施例中,视频检测器104向被引向视频优化器106的每个会话指派唯一ID。也可以基于会话的关联的URL存储会话。在另一实施例中,会话的URL和/或流标识
(比如src/dest IP以及src/dest端口和协议的IP4/5元组)可以用来跟踪每个会话。
[0053] 在一个实施例中,向码转换器发送的每个新会话具有它的在会话跟踪器402中的表中存储的会话ID或者URL。只要码转换器414仍然向用户生成数据,会话ID就可以保持
存储于表中。如果连接掉线(在它们的播放器进行查找时或者出于某个其他原因),则将会话置于待命状态,其中将它保持一段时间以查看对于相同会话的新请求是否进来。在定时
器到期之后,从会话表去除会话。
[0054] 在一个实施例中,会话跟踪器402也保持用于码转换器414的统计的跟踪。在服务器中的每个运行实例(HTTP、码转换器等)在新连接开始处理时向会话跟踪器402注册其本身。会话跟踪器402为每个连接指派ID(并不与会话ID相同)。由于存在视频优化器106
可以处理的多个请求类型,所以每个唯一类型被存储于分离的状态表中或者被组合成一个
大表。运行会话可以调回到会话跟踪器402中以在周期性基础上更新它的统计。会话跟踪
器402使这一数据通过web接口和/或简单网络管理协议(SNMP)等可用。会话跟踪器402
也基于来自每个实例的统计更新累计长期统计。这些统计采用实时会话(活跃会话)和使
用已完成会话的长期会话的形式。这些统计也跟踪用于每个统计的最小、最大和平均统计。
在进程完成时,它向会话跟踪器402取消注册其本身,会话跟踪器402然后可以回收与该会
话关联的资源。
[0055] 性能估计器404监督视频优化器106以确定它是否接近最大容量。由于源和目的地CODEC的组合除了源视频的复杂性之外也对于每个流潜在地不同,所以性能估计器404
不能将全部连接视为“忙碌”的指标。查看中央处理单元(CPU)利用也是不够的,因为即使码转换器仍然具有用于处置更多会话的余地,CPU利用仍然可能在码转换过程期间由于各
种原因而峰化至100%。使服务器限于少于百分之一百的值因而在表上留下容量。
[0056] 性能估计器404与负荷平衡器对接以允许个别服务器在它们认为它们接近容量时使其本身退出负荷平衡池。这将让当前会话(和由于查找而恢复的会话)无间断,但是直至一些容量释放才向服务器发送新连接。在一个实施例中,负荷平衡器定期地查询服务器
以获得它的状态。服务器可以返回以下结果之一:拖延模式,该模式指示服务器已经达到容量并且应当向服务器发送新会话。继续向服务器发送并且处理现有会话。关停模式指示服
务器在关停过程中并且现在不应向它发送新会话。这可以归因于内部服务器错误或者被迫
(舒缓)关停。在舒缓关停期间,继续向服务器发送并且处理现有会话直至它们在实际关停可以继续时都被完成。无拖延模式或者关停模式可以指示系统正在恰当运行并且可以接受
新连接。如果服务器未响应或者响应错误,则负荷平衡器认为它停机并且从池去除它。将
不向服务器发送新的或者现有会话。
[0057] 在一个实施例中,应用的算法由性能估计器404用来估计服务器的性能。算法可以被体现为可存储于计算机可读存储介质(例如,存储器或者盘)上并且由一个或者多个处理器(或者控制器)执行的指令。在一个实施例中,性能估计器404假设给定的处理器核可以每秒处置某个数量的宏块(或者像素)。因此,可以凭经验测量可以对每秒多少宏块进行解码。性能估计器404然后测量可以每秒对多少宏块进行编码。在新会话启动时,性能估
计器404查看待解码的文件和输出配置。通过查看视频尺度和帧速率,性能估计器可以获
得需要每秒解码和编码多少宏块的估计。用于计算利用的(一阶)等式如下继续:
[0058] decode Macro Block Capacity=decode Capacity Per Core×number Of Cores
[0059] encode Macro Block Capacity=encode Capacity Per Core×number Of Cores
[0060]
[0061]
[0062]
[0063] 这样,性能估计器计算服务器的当前利用的合理一阶近似。也可以运用附加因子以考虑CODEC类型。一些CODEC可以比其他CODEC更计算简单。此外,还可以存在可以影
响利用率的其他非线性效果,比如资源匮乏。服务器可以具有存储器带宽或者其他硬件限
制,这些限制可以防止它达到全容量。这些可以简单地被作为因子向以上提供的等式添加。
[0064] 在一个实施例中,性能估计器404考虑处理器超线程化(HT)。HT允许一个处理器核充当多个虚拟核。然而,HT核不是全核,并且它们共享资源。这可能引起更高分辨率视频的问题。例如,一些英特尔XEON处理器不能对共享相同物理核的两个HT核执行两个1080P解码操作。如果尝试这一点则性能急剧下降。为了处置这一点,允许1080P视频使用偶数
编号的核来解码。这意味着1080P会话的总数为处理器核数目的一半。
[0065] 在一个实施例中,在性能估计器404计算服务器的利用之后,它比较利用与阈值以查看是否应当确立拖延标志。这一阈值为百分比并且如果希望则可以在100%以上。注
意,在一个实施例中,如果服务器可以在高于100%容量运行,则码转换操作可以不实时跟
上。
[0066] 在一个实施例中,HTTP服务器406标识请求类型并且关联用于处置事务的适当媒体处置器。大多数码转换会话作为HTTP会话来到视频优化器106。在一个实施例中,将
RTMP会话作为FLV渐进下载来处置。如果需要则可以使用其他网络接口。在一个实施例
中,HTTP服务器解析传入请求以提取从视频检测器104传递的包括比特率、分辨率等的设
置。传入请求也可以包含原有的请求的URL和cookie或者RTMP连接消息净荷。
[0067] 一旦HTTP服务器406已经确定请求类型,它就关联用于处置事务的媒体处置器。媒体处置器负责处置大多数网络协议专属通信。媒体处置器的输出是以视频检测器104请
求的形式的二进制数据,该形式例如包括FLASH FLV。HTTP服务器406向恰当HTTP响应中
封装这一数据。
[0068] FLASH视频的一种复杂状态是FLASH播放器不接受组块编码的数据。这意味着使用内容-长度编码或者连接关闭。连接关闭允许编码器略去预先指定由于实时执行码转换
而通常未知的内容长度。这一点的结果是FLASH播放器通常不允许查找操作。备选地,可
以提供猜测。这个值可以大于实际值,并且如果在完成传送时关闭连接,则大多数浏览器恰当处置这一点。
[0069] HTTP服务器406基于源文件进行对于内容长度的有根据猜测。作为估计,HTTP服务器406可以使用原有内容长度。HTTP服务器也查看与比特率目标比较的源比特率。可以
使用这二者之比作为用于输出内容长度的起点。HTTP服务器可以填充帧从而保证未超过
目标。如果源文件为MP4格式,则HTTP服务器406通过使用以下描述的MP4算法来获得估
计。
[0070] FLASH媒体处置器408处置FLASH HTTP渐进下载。在一个实施例中,FLASH媒体处置器408使用由视频检测器104提供的信息从始发服务器计算设备108取读源文件。例
如,FLASH媒体处理器408从视频检测器104接收URL、用户-代理和cookie信息并且向码
转换引擎414传递信息。在一个实施例中,在码转换引擎414码转换源文件时,FLASH媒体
处置器408读取码转换的输出数据并且向FLV或者MP4容器中封装输出数据。在其他实施
例中,码转换引擎414封装码转换的输出数据。此外,FLASH媒体处置器408也能够恢复由
于用户在客户端计算设备102上执行查找操作而停止的码转换会话。
[0071] 查找处置器410以这里描述的三种方式之一处置用户在客户端计算设备102上执行的查找操作。注意,在用户执行查找操作时,中止当前码转换操作并且发起新文件下载和码转换操作。在第一实施例中,查找处置器410下载与查找操作关联的新文件。下载操作
包括元数据头部,这些元数据头部包括CODEC头部、持续时间等。在这样的实例中,向码转换引擎414发送新文件以被码转换而并不知道先前会话。
[0072] 在第二实施例中,新文件下载操作可以仅有部分头部信息,但是没有其他元数据,码转换引擎414可以使用该元数据以标识源文件的属性。在这样的实例中,通过标识视频的时间戳来确定视频的开始时间或者查找时间。查找处置器410从先前中止的码转换操
作取回元数据并且向码转换引擎414提供元数据和时间戳数据以在与时间戳关联的时间
发起码转换过程。在第三实施例中,新文件下载是范围-偏移。范围-偏移是可以是向源
文件中的原始偏移。在这样的实例中,元数据头部不可用,然而,如果可用则可以包括帧头部。在这样的实施例中,重用并且向码转换引擎414提供中止的会话的元数据以码转换新
文件。在其中使用先前或者中止的会话的元数据的实施例中,查找处置器410通过制作中
止的会话的元数据的副本并且向新会话的处置器传递它来执行会话转移。在一个实施例
中,在由媒体封装器(比如FLASH媒体处置器408)形成文件输出时创建元数据。在这样的
实例中,在在文件码转换过程期间需要的文件和帧头部的开头创建FLV或者MP4头部和。
[0073] 元数据处置器412向码转换引擎414提供与视频关联的元数据。对于FLV视频,向码转换引擎414传递以下元数据字段中的至少一个元数据字段:例如由GOOGLE视频用
来跟踪视频文件的源的sourcedata元标签;通知FLASH播放器可以执行准时查找操作的
canseekontime元标签;用来指示视频的开始时间的aktimeoffset参数;向FLASH播放器
提供视频的查找点的keyframe元标签,在一个实施例中,向码转换引擎传递源帧的关键帧
而未传递码转换的文件的关键帧,因为FLASH播放器使用这一数据以基于原有文件的属性
向原有服务器发送查找请求;也向播放器提供查找点的cuepoints元标签;haskeyframe和
canseektoend元标签。此外,如果元文件不具有元数据字段,则元数据处置器412生成它
们。例如,元数据处置器412可以针对待码转换的视频创建starttime和duration字段。
[0074] 在其中将码转换MP4源文件的实施例中,如果需要重新用容器装MP4源文件,则元数据处置器412将MP4元数据字段转换成FLV元数据字段。在其中MP4是输出格式的实施
例中,元数据处置器412在输出文件中保存MP4元数据字段。以下是元数据字段的列表。在
NamePairs中的第一条目是MP4名称,第二条目是FLV名称,并且第三个是缩放因子:
[0075]
[0076] 在一个实施例中,码转换引擎414基于由视频检测器提供的参数和由适当媒体处置器提供的元数据码转换输入视频。在一个实施例中,码转换速率可以如由视频检测器104或者由媒体处置器提供的那样被预定。然而,如果预定速率小于可能的码转换速率,则码转换引擎414使用输出视频的帧速率以调制码转换速率。在这样的实例中,码转换器414在
码转换会话期间以视频的标称帧速率码转换。例如,如果输出文件是15帧每秒(fps),则码转换器不可以比15fps更快运行。在一个实例中,码转换引擎414可以在更块速率码转换
以防止在客户端的媒体播放器中延误。
[0077] 在一个实施例中,码转换器44通过与在码转换会话期间以视频的标称帧速率码转换结合使用快速开始机制来在‘turbo模式’中操作。例如,在新会话开始或者执行查找操作时,码转换引擎414对于多个帧以块速率码转换视频以刺激(prime)网络和播放器的
接收缓冲器。在一个实施例中,码转换引擎414对于视频的前150帧以高速率码转换。
[0078] 在一个实施例中,码转换引擎414将第三方库用于码转换。在这样的实例中,码转换引擎414在与主要服务器进程分离的进程中运行码转换操作,因为第三方库可能不稳
定。因此,如果码转换操作引起崩溃或者存储器破坏,则损坏限于该会话而其他用户和服务器本身未受影响。为了实现这一点,视频优化器106创建用于在视频优化器106与码转换引
擎414之间传递数据的共享存储器对象。通过共享存储器向码转换引擎414写入源文件。
这可以是原始数据,或者视频优化器106可以向盘写入并且然后通过共享存储器向码转换
引擎414告知当前状态。码转换引擎414向共享存储器写入由码转换引擎创建的数据。视
频优化器106然后读取这一数据并且通过网络向客户端计算设备102发送它。
[0079] 在一个实施例中,码转换引擎414在自适应速率码转换视频文件。如在说明书中描述的那样,码转换引擎414使用简档来开始码转换。在码转换运行时,码转换引擎414可
以基于网络条件更改音频和/或视频码速率。在网络中可以存在可以向码转换器用信号发
送拥塞或者目标比特率的设备,或者码转换引擎414可以自行进行判决。在任一情况下,码转换引擎414可以基于这一反馈改变它的编码设置。例如,码转换引擎414每数秒挑选新
目标比特率并且可以用新值对将来帧进行编码。
[0080] 为了监视网络以用于自适应码转换,码转换引擎414在通过网络向客户端发送数据时确定网络110栈是否填满。如果网络填满,则可以降低比特率。网络检查的示例是查
看网络写入请求是否倒退。如果视频优化器106使用TCP,则TCP发送缓冲器将填满,并且
将必须推迟附加网络发送直至在缓冲器中有空间。在一个实施例中,码转换引擎414使用
这一属性以增加向客户端计算设备102递送的比特率。例如,如果网络未表现被拥塞,则可以在检查倒退之时逐渐增加比特率。在一个实施例中,码转换引擎414在比特率增加之前
或者与比特率增加结合使用以上描述的turbo模式以快速生成若干帧。如果那些帧无问题
通过网络,则可以增加比特率。
[0081] 在一个实施例中,可以通过向网络上的设备发送未更改的视频流来确定网络条件。例如,视频检测器104或者在网络110上的另一设备可以请求视频优化器106转发未
更改的视频流。在这样的实例中,码转换引擎414可以监视网络吞吐量而未码转换以标识
任何网络拥塞。在一个实施例中,码转换引擎414对网络吞吐量进行采样以确定网络拥塞
或者容量。在一个实施例中,视频检测器104可以对未更改的视频吞吐量进行采样以确定
网络条件。
[0082] 用于码转换视频的示例过程
[0083] 图5是图示在客户端计算设备102、视频检测器104、视频优化器106和始发服务器计算设备108之间的过程流程的交互图。在一个实施例中,客户端计算设备102发起对
从始发服务器计算设备108取回内容的HTTP获得(GET)请求502。视频检测器104截获客
户端计算设备102生成的所有请求。在一个实施例中,视频检测器104标识HTTP获得请求
是否为视频。在另一实施例中,视频检测器向既定始发服务器计算设备108转发HTTP获得
请求502并且从始发服务器接收响应(RESPONSE)504。视频检测器104解析响应504以确
定响应504是否为视频。如果响应504是视频,则视频检测器104将响应504重写为HTTP
重定向(REDIRECT)响应506,从而使客户端102请求来自视频优化器106的文件。在一个
实施例中,视频检测器向客户端计算设备102发送HTTP重定向请求506。如果响应不是视
频或者视频检测器104确定不应码转换请求,则视频检测器104向客户端计算设备102转
发响应。
[0084] 如果客户端接收HTTP重定向请求506,则客户端通过网络发送请求。向视频优化器106路由HTTP重定向请求506。在一个实施例中,视频检测器104可以在向视频优化器
106路由HTTP重定向请求506时监视来自客户端设备的流量和/或请求。在这样的配置
中,视频优化器106仅看见对于需要被码转换并且与HTTP重定向请求506关联的视频文件
的请求。这样,视频优化器106没有由客户端计算设备102生成的所有请求的负担。
[0085] 视频优化器106向始发服务器计算设备108转发视频HTTP获得请求508并且从始发服务器计算设备108接收视频文件510。视频优化器106将视频文件码转换成客户端
设备可使用的并且以用于向客户端发送优化的视频512的网络条件为基础的格式。在一个
实施例中,视频检测器104截获优化的视频512并且向客户端转发512。这样,客户端接收
优化的视频512以用于在客户端计算设备102上执行的应用上基本上实时回放。
[0086] 在一个实施例中,响应于到始发服务器计算设备108的HTTP获得请求508,视频优化器从始发服务器计算设备108接收HTTP404错误而不是视频文件。在这样的实例中,视
频优化器106向从客户端计算设备102接收的HTTP重定向请求追加未码转换标志。向客
户端计算设备102发送具有未码转换标志的HTTP重定向请求,其中客户端通过网络重新发
送出具有未码转换标志的请求。由于未码转换标志,在这样的实例中,视频检测器104和视频优化器106未截获请求,并且向始发服务器计算设备108传播它,其中始发服务器计算设
备108对请求适当响应。在另一实施例中,视频检测器104从视频优化器106的响应中的
HTTP响应头部检测存在未码转换标志。它然后将这存储于状态高速缓存中,该状态高速缓
存用来记住视频优化器106不能优化视频。在客户端计算设备102重新请求原有文件时,
视频检测器104查阅它的状态高速缓存并且检测未优化状态(基于URL)。这样,防止视频检测器104向视频优化器106发送回请求。在状态高速缓存中的条目在视频的持续时间或者
与恒定倍率(例如2.0)相乘的该持续时间之后超时。
[0087] 图6是图示根据一个实施例的用于码转换MP4文件的过程流程的交互图。在一个实施例中,客户端计算设备102可以仅发送对从始发服务器计算设备108取回内容的获得
2字节(GET2BYTES)602请求。视频检测器104截获客户端生成的所有请求并且向始发服
务器转发获得2字节请求602。作为响应,视频检测器104接收2字节(2BYTES)604、重写
它为HTTP重定向(REDIRECT)请求606并且向客户端计算设备102转发它606。
[0088] 客户端设备通过网络发送接收的HTTP重定向请求606,其中向视频优化器106路由HTTP重定向请求606。在一个实施例中,视频检测器监视来自客户端102的包括HTTP重
定向请求606的网络流量。视频优化器106生成全请求(FULL REQUEST)并且向始发服务
器计算设备108转发它608。响应于全请求,视频优化器106从始发服务器计算设备108接
收响应(RESPONSE)610。视频优化器106对接收的响应610执行简档检查612以确定响应
610是否为视频。如果响应不是视频,则视频优化器106向响应610追加始发服务器标志并
且向客户端计算设备102转发它。
[0089] 在其中简档检查612确定响应是视频的一个实施例中,视频优化器码转换视频并且通过网络向客户端发送优化的视频614。在一个实施例中,视频优化器106可以包括用于
随着码转换过程在视频优化器106上开始而存储码转换的文件的导出高速缓存613。如果
来自客户端102的新请求针对文件的已经被码转换的一部分而到来,则可以从导出高速缓
存613直接满足请求而无需再次重新码转换视频。在其中查找请求由客户端提供的一个实
施例中,简档检查612确定在查找请求中请求的字节范围是否存在于导出高速缓存613中。
如果字节范围未存在于导出高速缓存613中,则可以如在说明书中描述的那样在查找点之
前或者在查找点码转换视频。在一个实施例中,从查找点或者之前码转换视频直至它达到
在另一码转换会话的导出高速缓存613中提供的字节范围。这样,简档检查612防止两个
码转换会话码转换文件的相同部分。在一个实施例中,即使客户端断开仍然填充导出高速
缓存613,从而使对于相同文件的新请求能够被导出高速缓存613满足。例如,如果在用户
断开时的字节范围停止码转换,则码转换的文件可能对可以在以后的点查看码转换的文件
的另一用户无用。在一个实施例中,导入高速缓存611维护从始发服务器计算设备108下
载的文件。因此,如果从客户端计算设备接收对于相同文件的另一请求,则从导入高速缓存
611而不是从始发服务器计算设备108取回文件。
[0090] 图7是图示用于处置查找操作的过程步骤的示图。当在客户端计算设备102上发起查找请求时,客户端发送具有时间或者字节偏移的查找请求,该偏移指示用于视频回放
的新位置。视频检测器向视频优化器106转发具有时间或者字节偏移的查找请求,其中视
频优化器106向始发服务器计算设备108转发它。响应于请求,始发服务器106向视频优
化器106提供偏移数据。视频优化器接收偏移数据并且将它视为新请求702并且从由始发
服务器计算设备108提供的时间或者字节偏移开始下载新文件。
[0091] 该过程通过确定新请求是否与现有会话704关联或者是否为现有会话的查找功能来继续。如果新请求不与现有会话704关联,则视频优化器106如参照图4在说明书中描
述的那样码转换706新请求。如果新请求与现有会话704关联,则该过程传送708来自现
有会话的元数据信息。如果新请求702针对FLV文件,该文件包括指示文件为FLV文件的
头部、但是不含任何其他元数据,则该过程向与查找操作关联的码转换的文件追加元数据。
[0092] 图8是图示根据一个实施例的用于码转换RTMP文件的过程流程的交互图。实时消息接发协议(RTMP)不允许HTTP式重定向。因而,在RTMP服务器从客户端获得RTMP连
接请求时,它未如同它将在说明书中讨论的HTTP实施例中那样向始发服务器代送请求。作
为替代,RTMP服务器向视频优化器106重新路由请求。请求是HTTP POST/PUT,这包含与
如在说明书中讨论的HTTP重定向请求相同的数据而且也在POST数据中携带RTMP连接消
息净荷。响应于HTTP POST,视频优化器经由RTMP Dump打开与始发服务器的RTMP会话并
且以FLV文件的形式返回码转换的视频。在一个实施例中,RTMP服务器将这一数据变换成
RTMP流并且向客户端返回它。如果RTMP服务器判决不码转换请求,则它转发原有RTMP数
据流或者拒绝来自客户端的原有请求。RTMP服务器以代理方式向RTMP Dump转发控制消
息。这些控制消息包括暂停、查找、停止、恢复、播放和对从始发服务器发出的数据的控制有影响的任何其他控制消息。
[0093] 如图8中所示,在一个实施例中,客户端计算设备102向RTMP服务器101发送TCP1935请求802。RTMP服务器将请求转换成HTTP POST/PUT请求804并且向视频优化器
106发送它。视频优化器使用HTTP POST/PUT请求以在始发服务器计算设备108上生成
RTMP请求。在这样的实例中,视频优化器模仿客户端计算设备102。响应于RTMP请求,视
频优化器106从始发服务器接收响应808。在接收响应时,视频优化器基于响应创建文件并
且码转换响应数据808。向RTMP服务器101发送812优化的视频,其中RTMP服务器认为它
正在从基于文件的接口而不是基于流的接口接收优化的数据。RTMP服务器101向客户端转
发优化的视频812以用于在客户端上用流传输RTMP视频。
[0094] 附加配置考虑
[0095] 贯穿本说明书,多个实例可以实施被描述为单个实例的部件、操作或者结构。虽然将一种或者多种方法的个别操作图示和描述为分离的操作,但是可以并行执行个别操作中的一个或者多个操作并且未要求按照所示顺序执行操作。可以将在示例配置中作为分离的
部件而呈现的结构和功能实施为组合的结构或者部件。类似地,可以将作为单个部件而呈
现的结果和功能实施为单独部件。这些和其他变化、修改、添加以及改进落入这里的主题内容的范围内。
[0096] 这里将某些实施例描述为例如如图3和图6中描述的包括逻辑或者多个部件、模块或者机制。模块可以构成软件模块(例如,在机器可读介质上或者在传输信号中体现的代码)或者硬件模块。硬件模块是能够执行某些操作的有形单元并且可以用某种方式来配置
或者布置。在示例实施例中,一个或者多个计算机系统(例如,独立、客户端或者服务器计算机系统)或者计算机系统的一个或者多个硬件模块(例如,处理器或者处理器组)可以由软件(例如,应用或者应用部分)配置为操作用于执行如这里描述的某些操作的硬件模块。
[0097] 在各种实施例中,可以机械地或者电子地实施硬件模块。例如,硬件模块可以包括被持久地配置(例如,作为专用处理器,比如现场可编程门阵列(FPGA)或者专用集成电路(ASIC))以执行某些操作的专用电路装置或者逻辑。硬件模块也可以包括被软件暂时配置以执行某些操作的可编程逻辑或者电路装置(例如,如包含于通用处理器或者其他可编程
处理器内)。将领会到,用于机械地、在专用和持久配置的电路装置中或者在暂时配置的电路装置(例如,由软件配置)中实施硬件模块的判决可以由成本和时间考虑驱动。
[0098] 因而,术语“硬件模块”应当被理解为包含有形实体,即被物理上构造、被持久配置(例如,硬接线)或者被暂时配置(例如,编程)以按照某种方式操作或者执行这里描述的某些操作的实体。如这里所用,“硬件实施的模块”是指硬件模块。考虑其中暂时配置(例如,编程)硬件模块的实施例,无需在任何一个时间实例配置或者实例化硬件模块中的每个硬件模块。例如,在硬件模块包括使用软件来配置的通用处理器时,通用处理器可以在不同时间被配置为相应不同硬件模块。软件可以相应地配置处理器以例如在一个时间实例构成特定
硬件模块并且在不同时间实例构成不同硬件模块。
[0099] 硬件模块可以向其他硬件模块提供信息和从其他硬件模块接收信息。因而,描述的硬件模块可以被视为被通信地耦合。在多个这样的硬件模块同时存在时,可以通过连接
硬件模块的信号传输(例如,通过适当电路和总线)实现通信。在其中在不同时间配置或者实例化多个硬件模块的实施例中,可以例如通过在多个硬件模块有权访问的存储器结构中
存储和取回信息来实现在这样的硬件模块之间的通信。例如,一个硬件模块可以执行操作
并且在它通信地耦合到的存储器设备中存储该操作的输出。又一硬件模块然后可以在以后
时间访问存储器设备以取回和处理存储的输出。硬件模块也可以发起与输入或者输出设备
的通信,并且可以对资源(例如,信息的汇集)操作。
[0100] 这里描述的示例方法的各种操作可以至少部分由被(例如,软件)暂时配置或者被持久配置以执行相关操作的一个或者多个处理器执行。无论是暂时还是持久配置,这样的处理器可以构成操作用于执行一个或者多个操作或者功能的由处理器实施的模块。这里所
称模块可以在一些示例实施例中包括处理器实施的模块。
[0101] 类似地,这里描述的方法可以至少部分由处理器实施。例如,方法的操作中的至少一些操作可以由一个或者多个处理器或者由处理器实施的硬件模块执行。操作中的某些操作的执行可以分布于一个或者多个处理器之中,并非仅驻留于单个机器内,而是跨越多个
机器来部署。在一些示例实施例中,一个或者多个处理器可以位于单个位置(例如,家用环境、办公室环境内或者作为服务器群)中,而在其他实施例中,可以跨越多个位置分布处理器。
[0102] 一个或者多个处理器也可以操作用于支持在“云计算”环境中或者作为“软件即服务”(SaaS)执行相关操作。例如,操作中的至少一些操作可以由计算机组(作为包括处理器的机器的示例)执行,经由网络(例如,因特网)和经由一个或者多个适当接口(例如,应用程序接口(API))可访问这些操作。
[0103] 操作中的某些操作的执行可以被分布于一个或者多个处理器202之中而不是仅驻留于单个机器内,而是跨越多个机器来部署。在一些示例实施例中,一个或者多个处理器或者处理器实施的模块可以位于单个地理位置(例如,家庭环境、办公室环境或者服务器群内)中。在其他示例实施例中,可以跨越多个地理位置分布一个或者多个处理器或者处理器实施的模块。
[0104] 在对作为位或者二进制数字信号存储于机器存储器(例如,计算机存储器204或者存储装置216)内的数据的、如用图4、7描述的操作的算法或者符号表示方面呈现本说明书的一些部分。这些算法或者符号表示是数据处理领域普通技术人员用来向本领域其他
技术人员传达他们的工作实质的技术的示例。如这里所用,“算法”是促成所需结果的操作自一致序列或者相似处理。在本文中,算法和操作涉及到对物理数量的物理操控。通常但
是并非必需,这样的数量可以采用能够由机器存储、访问、传送、组合、比较或者以别的方式操控的电、磁或者光学信号的形式。主要出于普遍用法的原因而使用诸如“数据”、“内容”、“位”、“值”、“元素”、“符号”、“字符”、“项”、“数”、“数值”等单词来指代此类信号有时是便利的。然而,这些单词仅为便利标记并且将与适当物理数量关联。
[0105] 除非另有具体陈述,否则这里使用诸如“处理”、“计算”、“运算”、“确定”、“呈现”、“显示”等单词的讨论可以指代如下机器(例如,计算机)的动作或者过程,该机器操控或者变换在一个或者多个存储器(例如,易失性存储器、非易失性存储器或者其组合)、寄存器或者接收、存储、传输或者显示信息的其他机器部件内被表示为物理(例如,电子、磁或者光学)数量的数据。
[0106] 如这里所用,对“一个实施例”或者“实施例”的任何引用意味着结合该实施例描述的特定元素、特征、结构或者特性包含于至少一个实施例中。短语“在一个实施例中”出现于说明书中的各处未必都指代相同实施例。
[0107] 可以使用表达“耦合”和“连接”及其派生表达来描述一些实施例。例如,可以使用术语“耦合”来描述一些实施例以指示两个或者更多元素相互直接物理或者电接触。然而,术语“耦合”也可以意味着两个或者更多元素未相互直接接触,但是仍然相互配合或者交互。实施例在本文中不受限制。
[0108] 如这里所用,术语“包括”、“具有”或者其任何其他变化旨在于覆盖非穷举包括。例如,包括元素的列表的过程、方法、物品或者装置未必仅限于那些元素,而是可以包括未明确列举的或者这样的过程、方法、物品或者装置固有的其他元素。另外,除非相反明示,“或者”指代包括意义的或者而不是穷举意义的或者。例如,以下各项中的任一项满足条件A或者B:A为真(或者存在)并且B为假(或者不存在)、A为假(或者不存在)并且B为真以及A和B均为真(或者存在)。
[0109] 此外,对“一个/一种”的使用用来描述这里的实施例的元素和部件。这样做仅为了方便并且给出本发明的一般意义。这一描述应当被解读为包括一个或者至少一个,并且单数除非明显的另有含义则也包括多个。
[0110] 在阅读本公开内容时,本领域技术人员将领会到用于如下系统和过程的更多附加备选结构和功能设计,该系统和过程用于通过这里公开的原理向客户端计算设备102提供
流传输优化的视频并且由此向用户提供无间断视频回放会话。例如,服务器对文字和图像
数据进行编码,从而使得文字数据未损失任何分辨率并且可以在客户端设备上在任何缩放
水平被完美地渲染。然而,图像数据在作为低分辨率图像数据来递送时被视为对浏览体验
而言更不重要,该低分辨率图像数据可能在放大之后并且在取回并且向客户端设备递送高
分辨率图像之前的中间阶段期间表现块状和伸展。因此,尽管已经图示和描述了特定实施
例和应用,但是将理解公开的实施例不限于这里公开的精确构造和部件。可以在这里公开
的方法和装置的布置、操作和细节上做出本领域技术人员将清楚的各种修改、改变和变化
而未脱离在所附权利要求中定义的精神实质和范围。