技术领域
[0001] 本发明涉及视频流传送,具体而言,其中所述流传送是在具有不确定的带宽可用性的网络上进行的。本发明特别地但不是排他地,适用于对已在多个不同的恒定质量等级上编码的视频进行的传送。
相关背景技术
[0002] 传统上,视频点播服务如申请人的BT视觉服务,是以恒定比特率对视频进行编码并将其以相同的恒定比特率通过网络传送来得到支持的。这通常需要在网络上预留带宽,提供这些带宽可能是昂贵的。
[0003] 使用压缩技术进行编码的视频天然地具有可变的比特率,这是因为在编码图片时所产生的比特数取决于图片的内容:与先前编码的图片的相似程度以及所包含的细节多少。某些视频场景可被编码为具有较少比特数的给定质量,而相反地,其它场景会需要显著更多的比特以获得相同的质量。当使用恒定比特速率编码时,视频必须以随时间变化的质量被编码以满足比特率限制。对于更喜欢观看恒定质量的用户来说,这已经被证明是次优的。而且,通过固定独立于所述视频内容类型的比特率,某些类型的内容诸如新闻和戏剧可被很好地编码,而其他例如快速移动的体育和音乐视频以及音乐只能被编码地很差。利用可变比特速率编码的自适应视频传送可以用来克服这些问题。
[0004] 自适应传送系统中,由于视频传送系统适应了根据可用的网络吞吐量而传送的视频的比特率,所以对带宽预留的需求被取消。内容可以以对应于多个质量等级的多个比特速率进行编码,并通过网络传送而无需预留带宽。通常,视频数据会被尽可能快地传送,而质量等级(编码比特速率)适于根据达到的网络吞吐量而改变,以便使所传送的视频的质量最大化,同时确保所有视频数据在网络上及时传送从而使其被解码和显示时不中断。
[0005] 国际专利申请WO2009/112801描述了一种保持恒定的感知质量的可变比特速率编码方法。在视频编码器中使用感知质量度量(其通过考虑掩蔽效应获得与实际观看者的感知之间良好的相关性)来进行具有恒定感知质量的编码。在每一帧内基于相对对比度考虑掩蔽效应为每一帧单独地设置编码参数,特别是量化参数。所得到的编码比特流具有可变的比特速率。
[0006] 国际专利申请WO2005/093995描述了一种具有视频服务器的网络,该视频服务器通过共享回程与多个客户机装置相连。在多个恒定质量等级上对视频内容进行编码且所编码的比特流存储在基于网络的服务器上。响应于来自客户机的请求,服务器选择已编码的比特流并将其通过共享网络传送到客户机。不同的比特流从而不同的质量之间的切换取决于实际的网络吞吐量,目标是使流的质量最大化。
[0007] 然而,当对以两个或更多个质量等级进行编码的视频内容进行传送时,需要确定每个可用质量等级上传送视频内容的剩余部分所需的最小比特速率,从而可以根据实际网络传送速率来确定是否要切换到一个不同质量的比特流。
[0008] 对于给定的视频流确定最小传送比特速率的一种方式是在开始传递之前分析已编码视频流的统计资料。因此,对于每一个视频流内的多个位置中,成对的数据可以被预计算,每对都包含传送比特速率和在传送速率被用于及时传送给定视频流的剩余部分的情况下所需的最小启动延迟。然后该数据用于随后的流传送过程中,基于接收机已经缓存的数据量及网络实际传送速率确定是否可以切换到一个不同质量的流。优选地,所选择的流的质量与可支持的网络传送速率同样高。
具体实施方式
[0053] 这里参照特定的示例对本发明进行说明。然而,本发明不限于这些示例。
[0054] 网络包含通过共享网络与一个或多个视频接收机相连接的一个或多个基于网络的视频服务器。多个视频内容中的每一个在多个恒定质量等级上进行编码并存储在一个或多个所述基于网络的服务器上。响应于来自接收机的请求,视频内容在服务器上被选择并被通过共享网络被传送到接收机。系统根据当前正在传送的视频流的特性、已缓存在视频接收器中的比特数和可用网络吞吐量来选择要传送的流的质量等级。其目的在于根据可用的网络吞吐量选择将要传送的视频质量,从而使质量最大化,同时确保所有视频数据在网络上及时传送从而使其被解码且显示时不中断。
[0055] 如图1所示,服务器100包括接收非压缩形式的数字编码视频信号104的视频输入接口102。处理器106在本地存储器108如硬盘中存储的程序模块的控制下进行操作,并且可以访问存储器110和经由电信网络与多个客户机设备连接的视频输出接口112。视频输出接口112可以包括缓冲器,其用于在输出编码比特流114之前临时存储视频处理器106所编码的视频。所述存储器包括用于存储已编码的视频和与已编码的视频有关的参数的存储区域150。
[0056] 程序模块包括通用操作系统120和执行将在稍后进行说明的一个或多个视频编码方法的多个视频编码软件模块。所述软件模块包括几个程序类型,即:
[0057] -控制模块122;
[0058] -压缩模块124:在本例中,压缩软件执行符合ITUH.264标准的编码算法;
[0059] -感知质量评估模块126;
[0060] -比特流评估模块128;
[0061] 应该理解的是,所述多个视频流可被接收、编码和存储在存储器110中,以便随后经由输出接口112进行流传送。
[0062] 服务器100将已编码的视频传输至包括视频解码器的接收机。图2示出了示例性的接收机200。接收机200通过适当的网络连接到所述视频服务器100,并能够接收和解码由服务器100传输的已编码的视频流。
[0063] 具体地,接收机200包括视频输入接口202,视频输入接口202可接收已编码的视频信号204,如由服务器100传输的已编码比特流。处理器206在本地存储器208如硬盘中存储的程序模块的控制下进行操作,并且可以访问存储器210和用于连接到适当的输出装置如监视器或电视的视频输出接口212。视频输入接口202包括缓冲器203,其可暂时存储接收到的已编码视频直到所述已编码视频已准备好由所述处理器206进行解码为止。
[0064] 所述程序模块包括通用操作系统220和执行对所接收的已编码视频数据流进行解码的方法的各种视频解码软件模块。所述软件模块包括几个程序类型,即:
[0065] -控制模块222;
[0066] -解码模块224:在本实施例中,所述解码软件执行符合ITUH.264标准的解码算法;
[0067] -插值模块226;
[0068] -比特流切换模块228;
[0069] 以可变比特速率进行编码的视频序列可以以每一段单调递减的分段恒定比特速率在网络上进行传送。这是Mohammed Ghanbari教授首先注意到的。他将所得到的比特率曲线称为“下楼”函数。
[0070] 本申请人的国际专利申请WO2004/047455描述了一种对以可变比特速率编码的视频序列进行分析以确定视频传送调度的方法,其中所述序列由一个或更多个单调递减的恒定比特速率传送周期组成。
[0071] 在一个可选择的显示中,在所述已编码视频序列中的累积比特数是相对于对时间进行绘制的。所述的累积比特曲线的一个示例如图3所示。图3示出了累积比特曲线,其是一个已编码视频序列中的总比特数关于日期和时间的曲线。该流的初始传送所需的“下楼”传送速率是通过原点的最低斜率的线的斜率,且从不到累积比特曲线的右侧,也即,确保所有的比特在它们需要被解码前被传送。这样一种传送线(或传送调度)将在一个或多个位置接触累积比特曲线,但通常仅一次。当视频序列传送到那一点(或这些点的最后)时,所有被传送的视频比特将被解码并且没有比特将被缓冲等待后续解码。从这点向前,新的最低斜率线可被计算,并且下一个已编码的视频比特将以该较低的速率进行传送。
[0072] 以恒定比特速率编码的视频具有接近于一条直线的累积比特曲线。那些不是以恒定比特率编码的视频,例如,具有恒定量化索引或具有恒定感知质量的已编码视频具有通常不是一条直线的累积比特曲线。这种视频可以以类似于累积比特曲线的传送调度通过网络进行传送,因而在接收机中几乎不需要缓冲,或者若接收机具有无限的缓冲,该视频可以对于正在接收的每一个比特需要被解码之前以任何的传送调度进行传送。在绘图时,时间沿着水平轴且累积比特在垂直轴上,这一要求可以表示为传送调度绝对不能到累积比特曲线的右侧。当接收机中具有无限制的缓冲时,总是能够在任何恒定速率上使用恒定比特速率传送任何比特流:这对于以确保解码被充分延迟以保持传送调度位于累积比特曲线的左侧是必需的。在极端情况下,整个视频序列可被传送得非常缓慢,且只有在传送接近完成时才开始解码。
[0073] 在这里所考虑的例子中,我们考虑离散“块”中的每一个包括一个或多个帧。块的选择是服从于如下考虑:为了使块间质量的相互依赖保持在最小值,一个块可以是独立于任何其它的块被编码的一个或多个帧,通常从I帧开始(编码时不从任何其它帧进行预测)。在这里的所有实施例中,所选择的块是IBBP格式的图片组(GOP),并且示出的所有图表是按照图片组索引进行绘制的关于每个图片组的累积比特,∑b,其中b是图片组中的比特数。
[0074] 在设想的流传送系统中,每个视频序列都由视频服务器100进行多次编码,每次使用不同等级的感知质量。以固定等级的感知质量进行编码优先地按照申请人的国际申请WO2009/112801所描述的那样执行。然而,也可以使用其它编码方法,如具有恒定的量化索引的编码。
[0075] 我们假定接收机具有足够的缓冲能够存储完整的视频流。如果我们确保数据在其被解码之前被传送,这允许传送视频数据的时序与解码视频数据之间是解耦的。
[0076] 及时传送视频流所需的传送比特速率取决于有多少数据已缓存于接收机处以及将要被解码的比特的比特速率曲线。通过分析传送之前的视频服务器100上的已编码视频流,并通过监视由服务器100传送之后缓存在接收机200上的数据量,我们可以确定对于每个可以被传送的可能的质量等级、及时传送所需的最小比特速率。
[0077] 在图4的流程图中对视频服务器100执行的编码和预计算进行了概述。在图4的步骤400中,服务器100接收视频序列。在步骤402中,服务器100中的压缩模块124以多个固定质量等级Lq(其中q=1...Q)来编码所述视频序列。为每个图片组g(其中g=1...G)产生的数据量(比特)bqg也被比特流评估模块确定,并连同每个已编码的比特流一起存储在存储器150中。质量等级例如可以被如下设置:为编码过程选择适当的量化参数。
[0078] 在步骤404中,比特流评估模块128对每个已编码的比特流进行分析,以针对每个图片组中对内容进行编码的每个质量创建给出如下信息的预计算的数据文件。
[0079] 1)首先我们计算如果没有视频在解码器中被初始缓存且接收机200不发生解码器缓冲器下溢时,传送(传输)图片组和所有后续的图片组所需的最小传送速率Dqg。对于给定的图片组,这个速率可以称为零启动延迟传送速率或零预载传送速率。术语“预载”和启动延迟将可互换使用,指的是视频被缓存在接收机中为回放做好准备的时长。
[0080] 因此,我们使用先前计算的比特数量bqg从图片组g至图片组K计算传送质量a所需的传送速率aqgk:
[0081]
[0082] 最小传送速率Dqg可被计算为aqgk的最大值,所有的k满足g≤k≤G:
[0083]
[0084] 对序列中的每个图片组g和对在每个质量Lq上编码的所有序列计算该最小传送速率Dqg。
[0085] 2)其次,我们计算为传送(传输)图片组和在一组传送速率Dqr(r=1...rmax)的每一个中不发生解码器缓冲器下溢的所有后续图片组必须在接收机中进行缓存的最小时间量,或预载Tqgr,其中传送速率的测量单位为比特每图片组周期。为了方便起见,并且使得每个序列将具有相同范围的相对的传送速率,所述速率Dqr可以定义为在该质量的平均编码比特速率的固定倍数Cr:
[0086]
[0087] 该时间Tqgr可以显现为通过对图片组g-1基于所述累积比特曲线在图5上画具有原点X和斜率Dqr的线而获得。对于每个后续图片组,测量该直线与累积比特曲线之间的垂直距离,并且确定该直线在累积比特曲线下方的最大距离Pqgr。这表示以速率Dqr开始传送具有索引g的图片组的比特所需的预载。该最大距离Pqgr除以斜率Dqr以获得预载Tqgr。
[0088] 因此
[0089]
[0090] 以及
[0091]
[0092] 注意,如果图5中的线总是在累积比特曲线上方并且所有距离都是负的,则所需预载为零。
[0093] 因此,公式5可以重写为:
[0094]
[0095] 在图4的步骤406,在步骤404中预计算的参数可以在存储器150中被存储为适当的文件。因此,我们有效地具有关于每个已编码视频流(在每个质量Lq)的数据表,每GOP g具有如下数据——零启动延迟所需的传送速率,和多个传输速率中的每一个所需的预载(基于整个流的平均比特速率的固定倍数Cr)。
[0096] 图6示出了一个10GOP视频序列的预计算数据的示例表,其在两个不同的质量等级Lq=2.7和3.7下被编码。在该示例中使用的速率倍数Cr=0.6、0.8、1.0和1.2。
[0097] 所述预计算的数据可用于确定在接收机处给定预载量时将要传输的每个质量流所需的速率。例如,如果在接收机处预载量被测定为10秒,或10000ms,并且下一个要传送的GOP是g=6,则我们可以从图6看出在Lq=2.7下传送所需的速率在Cr=1.0和1.2之间。类似地,对于Lq=3.7,所需的速率在Cr=0.8和1.0之间。因此,(Cr=)1.2倍于Lq=2.7时的平均比特率的实际流速率将足以支持Lq=2.7流。然而,(Cr=)1.0倍于Lq=2.7时的平均比特率的实际流速率将不足以支持Lq=2.7流。类似地,(Cr=)1.0倍于Lq=3.7时的平均比特率的实际流速率将足以支持Lq=3.7流。然而,(Cr=)0.8倍于Lq=3.7时的平均比特率的实际流速率将不足以支持Lq=3.7流。
[0098] 实际被预计算的数据量是有限的,因此对于预载的所有可能值来说,都具有预计算数据是不可能的。因此,在接收机中特定预载存在时,为了更准确地确定支持给定质量等级的视频所需的流速率,提出一种如下所描述的插值方法。
[0099] 现在,一旦服务器已经完成如前所述的数据的预计算,服务器100就可以开始传输已编码视频到接收机200。图7示出了当从服务器100请求视频内容的接收机200中的处理过程。从步骤700开始,接收机200向服务器100请求某些视频内容。服务器100向接收机200传输与所请求的视频相关联的预计算的数据,此数据在步骤702中由接收机200接收。接收机200将该预计算的数据存储在存储器210中。然后,服务器100通过选择合适的质量Lq比特流,开始将所请求的视频流传输到接收器200。因此,在步骤704中,接收机200开始接收以质量Lq编码的视频流。
[0100] 要被传输到接收机200的比特流的初始质量的选择可以根据任何适当的方法由服务器100或由接收机200确定,例如以最低可用质量启动,或者选择对于当时的可用网络带宽最合适的质量。
[0101] 一旦接收机200已经开始接收已编码的视频流,所述接收机就可以使用所存储的预计算的数据来执行图8所示的步骤。
[0102] 在图8的步骤800,待传送的下一组图片具有索引g。接收机按照时间计算有多少数据τg被缓存在接收机的缓冲器203中。τg是预载或换一种说法,要被传送的下一数据的启动延迟。它是所接收的图片组的数量减去视频用尽的时长的简单计数(假定时间的单位是图片组周期)。
[0103] 然后,对于每个视频质量等级Lq,在步骤802开始于最高质量并逐步向下,在步骤804,使用插值模块226用插值法以及基于存储在接收机处的预计算的数据,如下计算足够传送具有索引g的图片组以及在没有发生解码器缓冲下溢时所有有此质量的后续图片组的传送速率Aqg。
[0104] 我们需要知道已经被缓冲在接收机中的给定数据量所需的传送速率,而如果该传送速率是按照它表示的用尽时间进行测量的,则对应于所述预载或下一个将要传送数据的启动延迟的。因为对启动延迟的所有可能值都生成预计算的数据是不可行的,所以我们可以使用我们预计算的信息通过插值法来估计所需的传送速率。
[0105] 图9示出了当给定量的数据已缓存于客户机时所需的传送速率可以如何由两组预计算的数据安全地估计得出:一个对于较小的传送速度给出了所需的预载,另一个对于较大的传送速率给出了所需的预载。
[0106] 图9示出了对于三个传送比特率A1、A2和A3的累积比特曲线和传送调度。预计算了预载所需要的最小数量,其对于传送速率A1和A3分别表示为要传送的下一数据的启动延迟S1和S3。存在于接收机的实际启动延迟S2的最佳速率(测量为τg)将会是A2,并以点划线示出,其中S2介于S1和S3之间。然而,对于预载S2和因此所需的传送速率A2我们没有任何预计算的数据。这产生的问题是为启动延迟S2所需的传送速率A2提供一个安全的估计值A2′,即A2′≥A2。解决的办法是选择我们确实具有的预计算数据,特别是大于S2的预载S1,以及小于S2和它们各自的传送速率A1和A3的预载S3,且应用列于下面的插值方法。
[0107] 为了确保比特的及时传送,传送调度A2′必须位于累积比特曲线之上或左侧。如果传送调度A2′经过传送调度A1和A3在时间T的交叉处,这是被确保的。由每个传送调度传送的总比特数B相等时(考虑相应的预载),发生传送调度A1和A3的交叉。因此,我们可以说:
[0108] A1.(T+S1)=A3.(T+S3) [7]
[0109] 公式7可以重写为下面给出了交叉时间T的公式8。
[0110]
[0111] 对于启动延迟S2可接受的传送速率是穿过这一点的斜率为A2′的直线`,由下面的公式9给出。如图9所示,这可能不是最佳的。
[0112]
[0113] 因此,公式9给出了最小传送速率Aqg的安全的估计,即该速率足够传送具有索引g的图片组和在接收器200处没有解码器缓冲下溢的后续所有的图片组,但使用比该速率更大的速率可能是完全必要的。
[0114] 参考与图6相关的上述说明的示例,其中下一个GOP g=6,并且所测量的预载为10000ms。假定对于Lq=2.7的平均比特率为262kbps。对于Lq=2.7流,设定S1=11799ms,S3=1127ms,A1=262(1.0×262),A3=314.4(1.2×262)。因此,应用公式8,我们得到T=52233。现在,使用公式9,该计算的值T和S2=10000ms,我们得到A2′=
269.6kbps。因此,最小传送速率Aqg=269.6kbps。如果网络吞吐量为至少269.6kbps,则Lq=2.7流可以由GOP g=6向前来支持。
[0115] 在步骤806中,可以比较Aqg与实际的网络吞吐量D,以确定是否满足所要求的最小速率。如果D至少等于Aqg,那么所考虑的质量为Lq的流可以由所述网络来流传送。因此,在步骤810中,可以确定是切换还是保持该Lq质量等级的流。可以基于其他因素来判定到底何时切换,如相对于所计算的最小Aqg的公差和阈值。如果D至少不是Aqg,则处理转到步骤808,可以分析对于下一个最低Lq流的预计算数据,并且向前重复步骤804来确定下一个流Lq所需的最小传送速率Aqg。
[0116] 如果需要获得每个质量等级流所需的速率的图片,则可以对全部质量等级重复步骤804和806。
[0117] 从图9中可以看出,当传送调度A1和A3的交点在所述累积比特曲线之上时,所述插值方法将提供精确的所需速率,否则将提供高估的所需速率。
[0118] 现在考虑在传送所述具有索引g的图片组以及零个或更多后续的图片组之后,重复计算所需的传送速率。如果所实现的传送速率恰好达到Aqg,则传送调度跟随线A2′,并且每次重复插值时,会计算出相同的截距时间T和相同的所需传送速率Aqg。如果所实现的传送速率不同于Aqg,则传送调度将偏离线A2′。但在传送调度保持在线A1和A3之间的时段,从图9中可以看出,每次重复插值时,将计算出相同的截距时间T,并且将计算出不同的但一致的所需传送速率Aqg。
[0119] 现在考虑如下情况:A3是已执行了预计算的最高传送速率,当前传送点位于线A3的右侧,并且位于累计比特曲线的左侧,否则将呈现无效的传送点,这是因为比特无法被及时传送而解码。这种情况下,使用速率A3和相关的预计算启动延迟S3作为一组数据,预计算的零启动延迟速率作为另一组数据来执行插值。图10示出了这样一个传送调度,其以计算的速率进行传送,并且在传送了每一图片组之后计算一个新的速率。图11示出了计算出的传送速率如何随时间而变化。
[0120] 图11示出了即使当传送是以由插值计算的速率(对于产生一个大于或等于实际所需速率而言是已知的)进行时,在传送一个图片组之后再次进行计算时该速率可能会更高。并且当该更高的速率用于传送下一图片组时,下一个计算的速率仍然会更高。这种永远增加速率的计算情况并不是无限地持续的,而是在对于以零启动延迟传送的预计算速率相对于其先前的值减少时停止。这出现在图10中的累计比特曲线的尖顶。当到达第一个这样的点时,新计算的速率实际上低于初次计算的速率,如图11所示,由于该时间的平均传送速率比所需要的高,因此从该时间开始的较低速率是可能的。但是由于更多的图片组被传送,该计算的传送速率由于以零启动延迟传送的预计算速率的增加而再一次增加。
[0121] 将插值与有限数量的传送速率的所需的启动延迟的预计算进行组合是一个问题。虽然对于具有零启动延迟的传送来说使用预计算的传送速率是有用的,因为它允许对于低值的启动延迟计算传送速率,然而速率可以从一个图片组到另一个迅速地改变的事实,将在基础所需速率实际上没有变化时导致计算的传送速率快速变化的问题。在实际的视频传送系统中,这种所计算的传送速率的变化可能导致在以不同的质量编码的视频流之间不必要的切换。这将给观众带来不必要的视频质量的变化,以及为执行上述切换给视频传送系统带来的不必要的影响。我们可以通过以以下方式采用我们的插值方法来克服这一问题。
[0122] 当使用具有最高比特率的预计算的数据和零启动延迟所需的预计算的数据利用公式8和9执行插值计算时,按照如下的公式10还计算了要在相交点T传送的比特数量B:
[0123] B=(S3+T)·A3=(S1+T)·A1 [10]
[0124] 随着下一个和后续图片组被传送,对被传送的后续比特数b进行计数,对经过的时间t进行测量。计算二者之间的比率,以给出所达到的实际传送速率r。当该值大于或等于以前计算的插值的所需的传送速率A2’时,随着所需的速率从当前传送点(t,b)到达先前计算的相交点(T,B),我们可以计算足够的传送速率a,如公式(10)中所示。
[0125]
[0126] 由于B已经被算出,所以这种计算可以被重复施加直到B个比特已经被传送为止,而r被计算为大于或等于插值的所需的传送速率A2′。另外,在传送每个图片组后,可以使用具有最高比特率的预计算的数据和零启动延迟所需的预计算速率进行插值计算,以给出一个新的插值的所需的传送速率A2′,并使用如下公式计算出两个计算出的所需传送速率中较低的A2″:
[0127] A2″=Min(a,A2′) [12]
[0128] 在该改进的插值方法中,公式10、11和12作为一部分被包含在步骤804中以确定A2″,这是所需的最小传送速率Aqg的更精确的测量。这种在图8的步骤804的基础上有效扩展的改进的方法也在图12中展示。
[0129] 在图12的步骤1200中,根据较早的方法使用公式8和9估计所需的最小传送速率。在步骤1202中,使用公式10和11估计足够的传送速率。在步骤1204中,使用公式12估计最小传送速率。
[0130] 图13中示出了一个例子,其中累积比特曲线如图10所示。以恒定的速率1.4兆比特每图片组周期进行实际传送,如标记为“r”的线所示。标记为“A2′”的曲线示出了使用具有最高比特率的预计算的数据和零启动延迟所需的预计算速率利用公式7和8进行插值而计算出的所需的传送速率。该曲线不同于图11,原因在于在这种情况下是以固定速率进行实际传送,而在早先的情况下是以所计算的所需传送速率进行实际传送。标记为“A2″”的曲线示出了使用公式10和11时所需的传送速率。可以看出这是一个平滑的曲线,精确地反映出传送是在一个快于所必需的速率上持续进行的。其还总是低于实际传送速率r,因此表明所需的速率总是小于实际传送速率,因此不需要切换到较低比特率、较低质量的视频流。而如果所需的速率被简单地从插值而导出,其结果是A2’,将可推断有时实际传送速率r不足以传送该流,并且将执行到较低比特率、较低质量的视频流的切换。这样的切换不是必需的,可以使用改进的计算公式11和12来避免。
[0131] 需要注意的是,当所计算的速率落到等级A3(预计算启动延迟值的最高速率)时,图13中标记为A2′和A2″的曲线停止。在实践中,对于一些较低速率A1,启动延迟值被预计算,并且从这点向前,插值在所述预计算的速率数据A3和A1之间执行,而不会使用零启动延迟的传送速率。
[0132] 用于计算最小所需的传送速率方法可总结如下。首先我们如步骤402所示在多个质量等级下对视频序列进行编码。然后在步骤404中,我们为每个图片组预计算传送速率,这是及时传送图片组和没有时间被最初缓冲在解码器中的情况下所有随后的图片组所需要的。还是在步骤404中,我们选择一组传送比特速率,并且对于每个速率我们预计算为了及时传送图片组和后续图片组而必须在解码器中缓存的最小时间量(预载)。预计算的数据在步骤702被提供给解码器。然后,在视频传送期间,按照公式8或9利用预计算的数据执行插值,且在适用时使用公式11和12计算图8和12所示的最小所需的传送速率的安全估计值。
[0133] 在为每个视频质量的视频编码计算最小所需的传送速率后,视频流系统(在优选的实施例中,接收机)会考虑预期的网络吞吐量,确定下一个要传输的视频的质量。预期的网络吞吐量可以从实际吞吐量的过去测量结果或通过其他手段来估计。也可以在确定下一个要传输的视频的质量时考虑其它因素,如接收机所缓冲的数据量。例如,如果接收机中缓存的数据小于一个数据阈值,例如将花费5秒进行播放,则可以确定不切换到更高质量,或者不论预期的网络吞吐量与对每个质量的编码视频所需的传送速率相比如何,只要接收机中缓存的数据小于一个阈值就可以确定切换到较低质量。由于在每个图片组的开始在不同的编码之间切换是可能的,所以可以对每个图片组确定要切换到何种质量的视频。
[0134] 通过比特流切换模块228做出切换到不同质量的流的确定。接收机200能够传输一个请求到服务器100请求其开始传输所选择的不同质量的视频流(接收机所选择的)。服务器可以立即切换和传输新的流,其可以被延迟直到一个合适的切换点例如在新GOP的开始。然后,服务器能够传输数据到所述接收机,以指示已经进行了切换,并且开始传送新的视频流。
[0135] 上述实施例描述了接收机200所执行的确定所需的最小比特率的计算和何时切换流,但是服务器也可以执行相同的操作。这要求服务器获知接收机缓存器的预载以便执行所需的计算。
[0136] 此外,虽然参照是以GOP为间隔确定所述预计算的数据,并在各种GOP位置确定所需的最小比特速率需要,但是本发明同样可以基于流内的任何时间位置而不是GOP位置,例如一些其他适合的帧间隔。
[0137] 本发明的示例性实施例至少部分地由可执行计算机程序代码来实现,其可以包含在服务器和接收机的程序模块中提供的应用程序数据。当这种计算机程序代码被加载到服务器或接收机的存储器,用于由对应处理器执行,它提供了一种计算机程序代码结构,其能够根据上述本发明的示例性实施例执行至少部分的方法。
[0138] 此外,本领域技术人员将会理解,所述计算机程序结构可以对应于图4、图7、图8和图12所示的处理流程图,其中流程图的每个步骤可以对应于至少一条计算机程序代码,并且与置于各个服务器或接收机中的处理器相结合,提供了一种用于实现所描述的过程的设备。
[0139] 一般来说,应当注意到,虽然上面描述了本发明的实施例,还存在可对所描述的示例作出的多种变化和修改而不偏离由所附权利要求限定的本发明的范围。例如,本发明也可以应用于音频流或其它媒体流而不是视频。本领域技术人员将能够辨别对所描述的示例的修改。