用于控制流媒体数据的编码比特率的系统和过程的制作方法

文档序号:7627267阅读:190来源:国知局
专利名称:用于控制流媒体数据的编码比特率的系统和过程的制作方法
技术领域
本发明涉及控制流媒体的编码比特率,尤其涉及一种用于控制流媒体数据的编码比特率的系统和过程,它可在整个流会话期间提供快速启动、连续重放、以及最高的质量和平滑度。
背景技术
通过因特网按需流传送媒体中的主要技术问题也许是需要适应变化的网络条件。随着具有竞争性的通信过程的开始和结束,可用带宽、数据包丢失和数据包延迟都会发生波动。可以并且确实发生持续许多秒的网络停歇期。资源保留和服务质量支持可以有所帮助,但即使它们也无法保证网络资源将会保持稳定。例如,如果网络通路包含无线链路,那么其容量可能会偶尔因干扰而减少。这样,商业级流媒体系统有必要对敌对的网络条件具有健壮性。此外,这类健壮性无法由攻击性(惰性)传输来独自实现。即使具有关于每个数据包丢失的重发的恒定比特率传输也无法实现比通道容量更高的吞吐量。所以,要求对网络的某种程度的自适应性。
最终用户期望良好的流媒体系统将显示出以下行为按需重放的内容将以低延迟开始;一旦开始,它就将连续不断地(不停止)重放,除非被用户中断;并且,假设平均通信带宽可用,则它将进行可能的最高质量的重放。面对变化的网络条件,为了满足这些期望,要求在解码和重放之前对客户机处的内容进行缓冲。
客户机处的缓冲用于几个截然不同但同时存在的目的。首先,它允许客户机补偿数据包传输延迟中的短期变更(即“抖动”)。其次,如果需要的话,它给客户时间来执行数据包丢失恢复。再次,它允许客户机在网络带宽内的流逝期间继续重放内容。最后,它允许用可变的比特率来为内容编码,这可以显著地提高总体质量。注意,即使所谓的恒定比特率(CBR)编码的内容实际上也是在给定大小的解码缓冲区的各个约束内用可变的比特率来加以编码的。解码缓冲区的大小越大,质量就越好。所要求的解码缓冲是较大的客户机缓冲区的一部分。
客户机缓冲区的大小可以被表达为缓冲区内内容的秒数——被称作“缓冲区持续时间”。当内容进入缓冲区时,缓冲区持续时间趋向于增加;当内容离开缓冲区时,缓冲区持续时间趋向于减少。当播放内容时,内容按每秒实时v秒的内容的速率离开缓冲区,其中的v是重放速度(通常1用于标准重放,但大于1可能用于高速重放,或小于1用于低速重放)。当内容通过网络到达客户机时,内容按每秒实时ra/rc秒的内容的速率进入缓冲区,其中,ra是到达速率或每秒实时到达客户机的平均比特数,rc是编码比特率或编码一秒的内容所需要的平均比特数。这样,通过增加ra、减少rc和/或减少v,可以增加缓冲区持续时间(反之亦然,用于减少缓冲区持续时间)。虽然缓冲区持续时间可以一时通过改变ra或改变v来控制,但是这些数量通常不可能长时间自由地控制。平均到达速率ra由网络容量来确定,而平均重放速度v由用户偏好来确定。这样,如果网络容量在一段持续的时间内显著下降,那么降低编码比特率rc以防止再缓冲事件是唯一适当的方法,在再缓冲事件中,在缓冲区再装满的同时重放停止(v=0)。
这样,对变化的网络条件的自适应性不仅需要缓冲区,而且需要用于调整内容的编码比特率rc的某种装置。这可通过结合多比特率(MBR)编码或粗粒或细粒可伸缩编码的流交换来完成。如今的商业流媒体系统[1]依赖于MBR编码以及稀释(thinning),这是一种粗粒可伸缩性的形式。在MBR编码中,语义上相同的内容按不同的编码比特率被编码成替换比特流,并被存储在服务器处的同一媒体文件中,从而允许内容按对应于这些编码比特率rc的不同质量等级流传送,可能使用比特流交换[2]。在粗粒可伸缩编码(例如,MPEG-2/4时间的或SNR可伸缩性)中,内容被编码成若干子流或层,以便通过每次添加或丢弃(在可能受限制的时间)一个内容层以大增量更改编码比特率rc。稀释是粗粒可伸缩性的特殊情况,其中,相关视频帧(P和B帧)在独立视频帧(I帧)前面丢弃,这些独立视频帧(I帧)又在音频帧前面丢弃。未来的商业系统也可以支持细粒可伸缩性(FGS)。细粒可伸缩编码(例如,3D SPIHT[6]、MPEG-4 FGS[7]或EAC[8])允许编码比特率rc任何时候以增量更改,有时如同每次演示一个字节那么小。FGS编码在适应可变的网络条件方面提供了很大的灵活性,并可以在这类条件下确然提高质量。
调整内容的编码比特率rc以便试图适应变化的网络条件的现有技术的一些例子包括de Cuetos和Ross[9],它可去耦传输速率和编码比特率。它们假设传输速率由网络传输协议(TCP或TFRC)来确定。基于这一点,它们开发关于自适应编码比特率控制的启发式实时算法,并且如果在流传送之前给出传输速率,则将其性能与最优脱机编码比特率控制策略进行比较。Rejaie、Handley和Estrin[4]的作品提议了一种用于在单点传送拥塞控制中传送分层视频的方案,它基本上包括两种机制。一种机制是用于添加和丢弃层(更改总体编码比特率和质量)的粗粒机制。另一种机制是细粒层间带宽分配机制,用于管理接收器缓冲区(不更改总体编码比特率或质量)。对于这个方法的潜在问题是它通过每次添加或丢弃一个(假定是粗糙的)层来更改编码比特率。如果如同在FGS编码媒体的情况中那样这些层是细粒的,那么每次添加或丢弃一个(细粒)层通常无法提供编码比特率中的足够迅速的更改。而且,由于添加与丢弃机制相当以经验为根据,因此,该机制可能不适合FGS媒体。Q.Zhang、Zhu和Y-Q[5]的作品提议了一种资源分配方案,用于使编码比特率适应估算的网络带宽。其方法的新颖性是他们考虑最小化所有应用程序(例如,除音频/视频流以外还有文件传送和web浏览)的失真(或等效地最大化其质量)。但是,其优化过程不包括单独的流的平滑度,并可能导致潜在的质量波动。
然而,即使利用缓冲和调整编码比特率的能力,关于通过因特网的按需流媒体的现有技术仍然深受以下两个问题的困扰1.重放经常在网络拥塞期间停止。即,在高比特率内容的重放期间,如果网络比特率降低到内容比特率以下,那么客户机缓冲区用完内容,重放停止,同时,客户机再缓冲(被称作“再缓冲”事件)。
2.启动延迟经常太长(大约5秒)。
对于这两个问题,有现存的解决方案,但它们并非总是起作用。对于第一个问题的一种解决方案是流传送按相对于通过网络传送的平均比特率(传输比特率)而言较低的编码比特率编码的内容。这允许缓冲区随时间的推移而增大。利用客户机上未播放信息的这种大量储备,临时的网络拥塞不会影响重放。但是,这个解决方案有两个问题。首先,内容的编码比特率没有网络的平均传输比特率那样高,因此,质量比可以有的低。其次,缓冲区可以增长成几乎象流传送的文件本身那样大。这可能需要客户机设备上的太多资源。
对于第一个问题的另一种解决方案是试图按恒定等级(通常是大约10秒)维持客户机缓冲区,同时,在关于相同内容的不同编码比特率之间切换,并试图匹配网络的传输比特率。但是,通常在实践中仍然可观察到再缓冲事件,这是因为难以选择正确的时间来切换流。造成这个困难的一个原因是即使在所谓的恒定比特率编码中,在内容的瞬间编码比特率中也有自然变更,这会扰乱客户机缓冲区管理算法。
以上第二个问题(长启动延迟)也有多种解决方案。一种解决方案是用快速的初始传输速率脉冲串迅速填满客户缓冲区。若客户机缓冲区充满了,重放可以安全地开始。但是,这个解决方案有几个问题。首先,当网络中有足够的“预留空间”而在数秒内提高传输比特率时,它才是适用的。这样,例如,它通常不可适用于调制解调器连接。其次,它加压力于网络,从而使网络中的其他应用程序后退。已表明在脉冲串期间会有多达80%的数据包丢失,从而使共享同一瓶颈的所有TCP连接后退。再次,含蓄地说,如果网络中有预留空间用于丛发脉冲串,那么,流传送应用程序可能不是在该文件的剩余部分期间使用它可用的完全带宽,从而意味着质量低于应该有的质量。
对于第二个问题的另一种解决方案是以比实时慢的速度重放内容,从而允许在客户机缓冲区增大的同时开始重放。这是一种创新的解决方案,但有明显的时间失真。
对于第二个问题的最后一种解决方案是将内容的编码比特率临时降低到网络的传输比特率以下,从而允许在客户机缓冲区增大的同时开始重放。这是Chou等人在[13]中提议的解决方案。
本发明的系统和过程解决了现有技术的各种问题,并在整个流会话期间提供快速启动、连续重放以及最高的质量和平滑度。
注意,在前述各段以及本说明书的剩余部分中,描述涉及由一对括号内所包含的数字标志符标识的各种单独的出版物。例如,可以通过列举“参考文献[1]”或仅仅“[1]”来标识这些参考文献。可以在“具体实施方式
”一节的末尾找到包括对应于每个标志符的这些出版物的参考文献清单。

发明内容
本发明针对一种用于控制正通过计算机网络从服务器发送到客户机的流媒体数据的编码比特率的系统和过程。一般而言,该编码比特率控制涉及动态地调整流媒体数据的编码比特率来控制客户机缓冲区持续时间。其目的是防止客户机缓冲区下溢,同时使平均编码比特率保持接近于网络的平均传输比特率(这样,使数据的重放质量最大化)。编码比特率控制的问题被公式化为线性二次公式最优控制中的标准问题,其中,客户机缓冲区持续时间被控制得尽可能接近于目标级。当决定是否更改编码比特率作为最优控制过程的一部分时,也考虑连续帧上的平均编码比特率的平滑度。当网络条件更改时,这会产生更高、更稳定的质量。此外,明确考虑发生于给定的平均编码比特率的瞬间编码比特率中的自然变更。这是通过将漏桶模型结合到控制回路中来实现的,以便因瞬间编码比特率中的自然变更而发生的缓冲区持续时间中的变化不被误认为因网络拥塞而发生的缓冲区持续时间中的变化。注意,在本系统和过程中,不是控制客户机缓冲区的实际充满度,而是关于比特进入客户机缓冲区的到达时间的上限被控制到目标级。该上限基于编码比特率的漏桶模型。
通过防止客户机缓冲区下溢,同时使平均编码比特率保持接近于网络的平均传输比特率,可满足前述的两个用户期望。即,如果缓冲区从未下溢,那么它允许连续重放。此外,使平均编码比特率保持接近于网络的平均传输比特率意味着假设平均通信带宽可用,则用可能的最高质量对数据进行重放。这留下启动延迟的剩余问题。在本系统和过程中,该问题是通过随时间的推移而控制客户机缓冲区的大小来解决的。更具体地说,前述客户机缓冲区目标级被调整为开始小,然后随时间的推移慢慢地增长。如果缓冲区最初很小,那么它允许较短的启动延迟。此外,由于缓冲区最后被允许增大,因此,它增强系统的健壮性并且创建几乎恒定的高质量。这样,客户机缓冲区管理是影响流媒体系统的性能的关键元素。
更具体地说,本系统和过程涉及生成流媒体数据流的服务器,该流媒体数据流显示出该服务器所支持的多个编码比特率之一。最初,服务器选择启动期间的编码比特率。但是,在该启动时期之后,客户机向服务器提供编码比特率请求。作为响应,服务器按最接近于客户机所请求的速率的最适当的支持的编码比特率来传送流媒体数据。客户机所请求的编码比特率是被估算成提供流媒体数据的高质量重放同时仍然保持客户机的解码器缓冲区被用于从服务器那里接收被填充到所需持续时间等级的流媒体数据。
客户机使用前述线性二次公式最优控制技术来计算编码比特率,该编码比特率将在进行的基础上提供所需的结果。该编码比特率计算涉及在逐帧的基础上确定编码比特率,该编码比特率可减少考虑中的帧的估算的最近预期到达时间与规定的目标到达时间之差,而同时减少编码比特率中达规定程度的变化。在涉及前述漏桶模型的一个实施例中,编码比特率计算基于指示服务器的编码器缓冲区的状态的参数。这些参数由服务器来计算,并连同流媒体数据一起被提供给客户机。
更具体地说,服务器首先计算定义编码器缓冲区的初始状态的一组参数,因为如果数据流对应于从那里流传送的所支持的编码比特率,则该组参数将会存在。为所支持的编码比特率中的每一个计算单独的一组参数,并且在流媒体数据的前同步信号中将该组参数提供给客户机。这些参数包括与数据流关联的编码比特率、用于数据流的编码比特率的编码器缓冲区大小、以及指示按数据流的编码比特率来展示的初始编码器缓冲区充满度的值。注意,用于每个所支持的编码比特率的编码器缓冲区大小改变并被选择,以便成为最小尺寸缓冲区;假设编码比特率和最初编码器缓冲区充满度,该最小尺寸缓冲区将仍然包含流传送过程中的任何点处的数据流。
除这些初始编码器缓冲区参数以外,服务器也对为服务器所支持的每个编码比特率而生成的流媒体数据的每个帧计算上限差距。这个上限差距被定义为服务器的编码器缓冲区能够包含的数据比特多于在刚刚生成的帧被完全输入缓冲区之后其中当前所包含的比特的数量。更具体地说,对于每个帧的上限差距被计算为编码器缓冲区大小与在插入刚刚生成的帧之后对编码器缓冲区充满度最后一次计算的值之差。在插入刚刚生成的帧之后的编码器缓冲区充满度值被计算为在插入刚刚生成的帧之前对编码器缓冲区充满度值最后一次计算的值和该刚刚生成的帧的大小的总和。在插入刚刚生成的帧之前的编码器缓冲区充满度值被计算为零、或在插入紧靠刚刚生成的帧之前生成的那个帧之后对编码器缓冲区充满度计算的值与关联于前一帧的编码比特率除以关联于所述前一帧的瞬间帧速率之差,取决于哪个更大。瞬间帧速率等于以下时间的倒数下一个帧被安排加以编码的时间减去刚刚生成的帧被编码的时间。在一个实施例中,服务器向客户机提供对编码速率更改之后所生成的帧序列中的第一个帧计算的上限差距、以及与该帧序列相关联的编码比特率的指示,作为与该序列的第一个帧相关联的数据的一部分。在另一个实施例中,服务器提供所生成的每个帧的差距值。
客户机使用编码器缓冲区参数和上限差距值以在逐帧的基础上确定编码比特率,该编码比特率将减少考虑中的帧的估算的最近预期的到达时间与该帧的规定目标到达时间之差,以便将客户机缓冲区保持在在近似所需的持续时间等级。在只提供编码比特率变化之后的第一个帧的上限差距的情况下,客户机为不包括差距值的帧估算上限差距。也要注意,给定上述初始编码器缓冲区条件,则客户机可以为每个所接收的帧估算上限差距值。这样,在服务器没有被配置成在进行的基础上计算和提供差距值的替换实施例中,客户计算机仍然可以自己计算它们。
当具有新的平均编码比特率的帧到达客户机时,上限差距中有位移。这个位移可以是几秒的数量级,因此会对控制器造成混淆,而不是可以忽略的。对此的一种解决方案是在控制目标时间表中引入同时位移。为此,服务器也为表示编码比特率变化之后的第一个帧的每个帧计算位移值。这个位移值表示如果按新的编码比特率编码则将会与紧靠第一个帧之前生成的帧相关联的上限差距和实际上与如按先前的编码比特率编码的帧相关联的上限差距之差。该位移值连同编码比特率变化之后的第一个帧一起被提供给客户机。客户机将与刚刚接收到的“第一个”帧相关联的当前调度的目标到达时间移位所提供的位移值,并且移位关于未来帧的当前调度的目标到达时间,以便它们在一段时间内共同接近关于那些帧的先前的目标到达时间并最后与其相符。利用这个方法,当更改编码比特率时的上限差距移位的不利效果得到减缓,并且目标到达时间值最后恢复秩序。
关于每个帧的目标到达时间,选择这些到达时间以便使帧的目标时间与其重放时间之间的时间量足够大,在启动时期之后,可能会使该帧的实际到达时间在其目标到达时间后面的网络抖动、延迟和吞吐量变化不会导致该帧在其调度的重放时间之后到达。在启动期间,选择目标到达时间,以便使目标到达时间更接近于重放时间,来帮助减少启动延迟。在一个实施例中,这是通过使用对数目标时间表为每个帧设置目标到达时间来实现的。在另一个实施例中,这是通过使用两段线性目标时间表为每个帧设置目标到达时间来实现的,其中,目标到达时间与在启动期间到达的帧的重放时间之差线性地增加到足够大以解决网络抖动、延迟和吞吐量变化的规定的时间量,其后,该差基本上保持恒定。
注意,当客户机的解码器缓冲区在其中具有确保按初始编码比特率不会发生下溢情况所需的最少数据量时,通过开始流媒体数据的第一个帧的重放,启动延迟可以被进一步最小化。另外,初始编码比特率可以被设置为小于客户机处的流媒体数据的预期到达速率的等级,因为随着到达速率相对于编码比特率的增加,确保不会发生下溢情况所需的最少的数据量减少。这样,在客户机请求编码比特率变化之前的启动时期内,服务器按初始编码比特率来提供流媒体数据。在一个实施例中,初始编码比特率被设置为近似预期到达速率的一般,其中,预期到达速率被估算为按网络上可用的当前带宽来自服务器的预期传输速率。注意,启动时期可以被定义为考虑中的帧的估算的最近到达时间的第一个实例之前的那段时间,该估算的最近的到达时间是为比该帧的目标到达时间更早的初始编码比特率计算的。
对于为每个帧标识编码比特率(也减少编码比特率中达规定程度的编码)的客户机,注意,该规定程度可以根据编码比特率是否提高而改变。如果它提高,那么,与编码比特率的最后变化降低速率的情况下的规定程度相比,编码比特率的任何将来变化被最小化所达的规定程度会更大。另外,也需要最小化因对编码比特率的大的或频繁的更改而产生的质量变更。为了使编码比特率变化稳定,可以采取以下动作。首先,在客户机标识表示增加的新编码比特率的情况下,只有当新速率不超过帧的当前移动平均到达速率的时候,才会向服务器请求新的编码比特率。在另一个实施例中,如果当前客户缓冲区持续时间超过所需持续时间等级一个量,估算该量在规定的时期(例如,60秒)经过之前将不会按较高的编码比特率来花费,那么,即使它超过这些帧的当前移动平均到达速率,也会只向服务器请求表示增加的新的编码比特率。但是,在客户机标识表示减少的新的编码比特率的情况下,即使它表示与直接前一编码比特率的重大偏差,也会向服务器请求新的编码比特率。这是因为当降低编码速率时,客户机缓冲区下溢中没有什么风险。
对于帧的上述移动平均到达速率,利用本系统和过程来使用用于计算这个速率的新程序。更具体地说,在逐个数据包的基础上计算移动平均到达速率,这是通过计算为直接在当前接收到的数据包前面的数据包而计算的移动平均到达速率和分数加权因数的乘积,加到当前接收到的数据包的瞬间到达速率和一减去该分数加权因数的乘积来计算的。在这个计算中,分数加权因数不象过去那样是常数,而是基于接收到的数据包之间的交互到达差距。更具体地说,对于当前接收到的数据包k的分数加权因数β(k)被计算为e-α[t(k)-t(k-1)]-e-α[t(k)-t(0)]1-e-α[t(k)-t(0)]]]>,其中,a是规定时间常数的倒数,t(k)是当前数据包的实际到达时间,t(k-1)是直接在当前数据包之前接收到的数据包的实际到达时间,t(0)是流媒体数据的第一个数据包的到达时间。在此情况下,当前数据包k的瞬间到达速率ra(k)被计算为b(k)ta(k)-ta(k-1)]]>,其中,b(k)是当前数据包的大小。如果b(k)用比特来表示,ta(k)-ta(k-1)用秒来表示,那么,移动平均到达速率表示流媒体数据比特的到达速率,以比特每秒为单位。注意,类似的过程可以用于流媒体的任何任意的速率单位。
如前所述,服务器生成显示出服务器所支持的多个编码比特率之一的数据流,并按最接近于客户机所请求的速率的最适当的支持的编码比特率来传送数据流。可用编码比特率的数量将取决于数据的编码方式。例如,如果使用细粒可伸缩编码方案,那么,理论上会有大量的速率可用(尽管由于实际的原因,该数量更有可能较低,例如,50)。但是,如果使用粗粒可伸缩编码方案或多比特率编码方案,那么,会有可从服务器那里获得的更受限制的数量的编码比特率。这样,在一些情况下,由客户机识别的最优编码比特率可能无法从服务器那里获得。此外,即使有匹配的编码比特率可用,上限差距也可能使得对该速率的切换将会冒客户机缓冲区下溢的风险。假设这一点,本系统和过程包括用于鉴于客户机所识别的最优编码比特率来从可用速率中确定最适当编码比特率的技术。注意,在对流媒体数据的前同步信号中,这些可用速率可以从服务器提供给客户机。在这种情况下,客户机本身将会执行分析,并向服务器请求最后得到的所支持的编码比特率。但是,在替换实施例中,客户机将会请求它所识别的最优编码比特率,并且服务器将会执行分析以确定哪个支持的速率是最适当的。然后,服务器将会提供显示出所选择的编码比特率的数据流。不论发生哪种状况,分析涉及找出等于客户机所识别的最优编码比特率的所支持的编码比特率,或者如果没有一个是相等的,则找出最接近于客户机所识别的最优编码比特率的较小速率的所支持的编码比特率。只要所找出的支持的编码比特率低于与流媒体数据的最后生成的帧相关联的编码比特率,所有未来帧(或以客户机所指定的帧开始的那些帧)都按那个所支持的速率生成。但是,当所找出的支持的编码比特率高于与最后生成的帧相关联的编码比特率时,确定如果按所找出的支持的编码比特率编码则与最后生成的帧相关联的上限差距和与按当前编码比特率编码的那个帧相关联的上限差距之差是否小于等于允许的最大差值。如果该差小于允许的最大差值,那么按所找出的支持的速率来生成受到影响的未来帧。但是,如果该差不小于允许的最大差值,那么找出下一个较低的支持的编码比特率,并重复前述动作,来最终识别适当的速率。
允许的最大差值由客户机来计算,并且如果服务器正在进行分析,那么客户机按新的编码比特率来提供该值以及数据请求。客户机选择允许的最大差值,以便如果它按所请求的编码比特率来编码,则与直接在客户机所考虑的帧之前由服务器提供的帧相关联的最近预期的到达时间只是从那个帧的目标到达时间到其重放截止时间的路途的规定分数(例如,该路途的1/3)。
除了刚刚描述的各种益处以外,通过阅读下文详细描述并结合附图,本发明的其他优点将变得一目了然。


通过阅读以下的描述、所附权利要求书和附图,本发明的具体特征、方面和优点将获得更好的理解。在这些附图中图1是描绘构成用于实现本发明的示例性系统的通用计算设备的示图。
图2是简化的流媒体通信管道的框图。
图3是按照比特与媒体时间的关系示出时间表的图,其中,编码比特流中的比特通过图2的通信管道中的点A、B、C和D。
图4是按照比特与媒体时间的关系示出编码时间表的缓冲管的示图。
图5是以客户机时间与媒体时间的关系示出到达时间表及其上限的示图,其中,上限被控制到目标时间表,该目标时间表逐渐超过重放截止时间,以便随时间的推移而提供更大的健壮性。
图6是示出目标到达时间表设计的示图。
图7(a)-(b)是示出两个不同的目标到达时间表的示图。图7(a)示出了对数时间表,图7(b)示出了两段线性时间表。
图8是示出关于各种传输速率的缓冲管的示图。
图9是示出指数平均的示图。
图10是示出缓冲管变化和控制目标调整的示图。
图11A-C示出了流程图,它用图表示根据本发明的编码比特率控制过程的实施例。
图12是示出用于保守的编码比特率向上转换过程中的保守限制的时间线。
具体实施例方式
在本发明的较佳实施例的以下描述中参考附图,附图构成本发明的一部分并通过举例说明示出了可以在其中实践本发明的具体实施例。可以理解,在不脱离本发明的范围的前提下,可以利用其他实施例,并可以进行结构上的更改。
I.计算环境在描述本发明的较佳实施例之前,将简要概括地描述可以在其中实现本发明的各个部分的合适的计算环境。图1示出了合适的计算系统环境100的例子。计算系统环境100只是合适的计算环境的一个例子,它并不意在对本发明的使用范围或功能性提出任何限制。也不应该将计算环境100解释为具有涉及示例性操作环境100中所展示的任何一个组件或组件组合的任何依赖或要求。
本发明可利用众多其他的通用或专用计算系统环境或配置来操作。适用于本发明的众所周知的计算系统、环境和/或配置的例子包括(但不局限于)个人计算机、服务器计算机、手持设备或便携式设备、多处理器系统、基于微处理器的系统、机顶盒、可编程的消费者电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等。
可以在由计算机执行的计算机可执行指令(例如,程序模块)的一般上下文中描述本发明。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括记忆存储设备的本地和远程计算机存储介质中。
参照图1,用于实现本发明的示例性系统包括采取计算机110形式的通用计算设备。计算机110的组件可以包括(但不局限于)处理单元120、系统存储器130和系统总线121,系统总线121将包括该系统存储器的各种系统组件耦合到处理单元120。系统总线121可以是几种类型的总线结构中的任一种,包括存储总线或存储控制器、外围总线和使用各种总线体系结构中的任一种的局部总线。举例来讲(不作限制),这类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线(也被称作夹层(Mezzanine)总线)。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是可由计算机110存取的任何可用介质,它包括易失性和非易失性介质、可移动和不可移动介质。举例来讲(不作限制),计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括易失性和非易失性、可移动和不可移动介质,该介质用关于诸如计算机可读指令、数据结构、程序模块或其他数据等信息的存储的任何方法或技术来实现。计算机存储介质包括(但不局限于)RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、盒式磁带、磁带、磁盘存储或其他磁性存储设备、或可以被用来存储所需信息并可以由计算机110进行存取的其他任何介质。通信介质通常具体化为已调制数据信号(例如,载波或其他传送机制)中的计算机可读指令、数据结构、程序模块或其他数据,它包括任何信息传递介质。术语“已调制数据信号”意味着这样一种信号,其一个或多个特征按为该信号中的信息编码的方式来加以设置或更改。举例来讲(不作限制),通信介质包括有线介质(例如,有线网络或直线连接)和无线介质(例如,声学、RF、红外线和其他无线介质)。以上任何内容的组合也应该被包括在计算机可读介质的范围以内。
系统存储器130包括采取易失性和/或非易失性存储器的形式的计算机存储介质。例如,只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS)通常被存储在ROM 131中,该基本输入/输出系统包含有助于在计算机110内的各个元件之间传送信息(例如,在启动期间)的基本例程。RAM 132通常包含可立即由处理单元120存取和/或目前正由处理单元120进行操作的数据和/或程序模块。举例来讲(不作限制),图1示出了操作系统134、应用程序135、其他程序模块136和程序数据137。
计算机110也可以包括其他可移动/不可移动、易失性/非易失性计算机存储介质。只举例来讲,图1示出了从不可移动、非易失性磁性介质读取或对其写入的硬盘驱动器141,从可移动、非易失性磁盘152读取或对其写入的磁盘驱动器151,以及从可移动、非易失性光盘156(例如,CD ROM或其他光学介质)读取或对其写入的光盘驱动器155。可以用于该示例性操作环境中的其他可移动/不可移动、易失性/非易失性计算机存储介质包括(但不局限于)卡型盒式磁带机、闪卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器141通常通过不可移动存储接口(例如,接口140)而被连接到系统总线121,磁盘驱动器151和光盘驱动器155通常由可移动存储接口(例如,接口150)连接到系统总线121。
以上所讨论的和图1中所示的这些驱动器及其相关联的计算机存储介质为计算机110提供计算机可读指令、数据结构、程序模块和其他数据的存储。例如,在图1中,硬盘驱动器141被示为存储操作系统144、应用程序145、其他程序模块146和程序数据147。注意,这些组件可以等同于或不同于操作系统134、应用程序135、其他程序模块136和程序数据137。这里为操作系统144、应用程序145、其他程序模块146和程序数据147提供不同的标号以说明它们至少是不同的副本。用户可以通过输入设备(例如,键盘162和通常被称作鼠标、跟踪球或触垫的定点设备161)来将命令和信息输入计算机110。其他输入设备(未示出)可以包括话筒、操纵杆、游戏垫、圆盘式卫星电视天线、扫描仪或类似的输入设备。这些和其他的输入设备经常通过被耦合到系统总线121的用户输入接口160而被连接到处理单元120,但也可能由其他接口和总线结构(例如,并行端口、游戏端口或通用串行总线(USB))来连接。监视器191或其他类型的显示设备也经由接口(例如,视频接口190)而被连接到系统总线121。除监视器以外,计算机也可以包括其他外围输出设备(例如,扬声器197和打印机196),这些外围输出设备可以通过输出外围接口195来连接。能够捕捉图像序列193的照相机192(例如,数码/电子静止照相机或摄像机、或胶片/照片扫描仪)也可以被包括在内,作为个人计算机110的输入设备。另外,尽管只描绘了一个照相机,但可以包括多个照相机,作为个人计算机110的输入设备。来自这一个或多个照相机的图像193经由适当的照相机接口194而被输入计算机110。接口194被连接到系统总线121,从而允许图像被发送到RAM 132或与计算机110关联的其他数据存储设备之一并被存储于其中。但是,注意,图像数据也可以从任何上述计算机可读介质被输入计算机110,而不要求使用照相机192。
计算机110可以使用与一台或多台远程计算机(例如,远程计算机180)的逻辑连接而在网络化环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其他普通网络节点,它通常包括以上相对于计算机110而描述的许多或所有元件,尽管图1中只示出了记忆存储设备181。图1中所描绘的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可以包括其他网络。这类网络环境在办公室、企业范围计算机网络、内联网和因特网中很普遍。
当被用于LAN网络环境中时,计算机110通过网络接口或适配器170而被连接到LAN 171。当被用于WAN网络环境中时,计算机110通常包括调制解调器172或用于通过WAN 173(例如,因特网)建立通信的其他装置。调制解调器172(可以是内置的,也可以是外置的)可以经由用户输入接口160或其他适当的机制而被连接到系统总线121。在网络化环境中,相对于计算机110或其各个部分而描绘的程序模块可以被存储在远程记忆存储设备中。举例来讲(不作限制),图1将远程应用程序185示为驻留在存储设备181上。将会理解,所示的网络连接起示例性的作用,可以使用在计算机之间建立通信链路的其他手段。
现在已讨论了示例性操作环境,本说明书章节的剩余部分将致力于描述实施本发明的程序模块。
II.问题公式化A.时间坐标系统在用来表达时间的各个时间坐标系统或时钟之间进行区分是值得的。这里,媒体时间指在用来捕捉原始内容并为其加时间戳的设备上运行的时钟,而客户机时间指在用来重放该内容的客户机上运行的时钟。假设媒体时间在媒体捕捉时是实时的(即,一秒的媒体时间在一秒的实时中过去),而客户机时间在媒体重放时是实时的。符号τ用来表示媒体时间,符号t用来表示客户机时间,下标和其他自变量指出对应的事件。例如,τd(0),τd(1),τd(2),...用来表示媒体时间中帧0、1、2、……的重放截止时间,而td(0),td(1),td(2),...用来表示客户机处的帧0、1、2、……的重放截止时间。可以按v倍实时的速率来重放内容。这样,从媒体时间到客户机时间的转换可以被表达为t=t0+τ-τ0v,---(1)]]>其中,t0和τ0分别表示共同的初始事件的时间,例如,媒体和客户机坐标系中的帧0的重放(或者查找或再缓冲事件之后第一个帧的重放)。
B.漏桶模型暂时想像一种情形,其中,编码器200和解码器202在网络204的等时信道上实时地运行。在此情况下,如图2所示,为了使瞬间编码比特率与瞬间信道速率匹配,在编码器200与网络204之间需要编码器缓冲区206,且在网络204与解码器202之间需要解码器缓冲区208。时间表是时间序列,在该时间序列中,编码比特流中的接连的比特通过通信管道中给定的点。图3中的图表示出了通过图2中的点A、B、C和D的比特的时间表。时间表A是捕捉到的帧被瞬时编码并被放入编码器缓冲区的时间表。这个时间表是第n个梯级在时间τ(n)处上升b(n)个比特的阶梯,其中,τ(n)是帧n被编码的时间,b(n)是最后得到的编码中的比特数。时间表B和C是比特分别进入和离开信道的时间表。这些时间表的斜率是R比特/秒,其中,R是信道的通信速率。时间表D是帧从解码器缓冲区中移除并瞬时被解码用于呈现的时间表。注意,时间表D只是时间表A的移位。也要注意,时间表B是时间表A的下限,而时间表C是时间表D的上限。实际上,时间表A与时间表B之间的差距标识任何时间点处编码器缓冲区的大小,以比特为单位,而时间表C与时间表D之间的差距同样表示解码器缓冲区的大小。编码器缓冲区大小和解码器缓冲区大小是互补的。这样,如图4中的图表所示,编码时间表(A或D)可以被包含在缓冲管内,具有斜率R、高度B、以及离管顶的初始偏移量Fd(或离管底的等效初始偏移量Fe=B-Fd)。可见,D=Fd/R是第一个比特到达接收器的时间与第一个帧被解码的时间之间的启动延迟。这样,为给定的R最小化Fd是令人感兴趣的。
漏桶是对编码器缓冲区的隐喻。编码器在时间τ(n)处将b(n)个比特转储到漏桶,并且,这些比特按速率R泄漏。一般而言,泄漏速率R可以足够高,以便该桶偶尔为空。这样,直接在帧n之前的编码器缓冲区充满度Fe(n)被添加到该桶,直接在帧n之后的编码器缓冲区充满度Be(n)被添加到该桶,这是根据动力系统从初始编码器缓冲区充满度Fe(0)=Fe发展而来,Be(n)=Fe(n)+b(n), (2)Fe(n+1)=max{0,Be(n)-R/f(n)}, (3)其中,f(n)=1τ(n+1)-τ(n)---(4)]]>是瞬间帧速率,n=0,1,2,...。如果R足够低,那么,桶将永远不会干枯(下溢),但如果R太低,那么,桶最终将会过溢。使桶永远不会干枯的最大的R被用作比特流的平均编码比特率rc。这一点在以下两段中会变得更加精确。
如果对于所有n而言Be(n)≤B,则具有大小B、速率R和初始充满度Fe的漏桶被认为是包含具有由梯级{(b(n),τ(n))}特征化的时间表的流。给定泄漏速率R和初始充满度Fe,包含该流所需要的最小桶大小被定义为Bmine(R,Fe)=minnBe(n),---(5)]]>而对应的初始解码器缓冲区充满度被定义为Fmind(R,Fe)=Bmine(R,Fe)-Fe.---(6)]]>Fe上的这些中的每一个的最小值被表示为Bmine(R)=minFeBmine(R,Fe),---(7)]]>Fmind(R)=minFeFmind(R,Fe).---(8)]]>它在[10,提议2]中被显著地示出;这些的每一个被同一Fe值最小化,因此,它等于Fmine(R)=Bmine(R)-Fmind(R).---(9)]]>这样,比特流具有时间表{(b(n),τ(n))},对于每个比特率R,有唯一的漏桶,该漏桶包含流并具有最小的缓冲区大小B以及最小的启动延迟D=Fd/R。这些参数可以利用以上的公式来计算。
对于足够低的泄漏速率R,当以初始充满度Fe=Fmine(R)]]>开始时,漏桶不会下溢。该最大速率R可以用作具有编码时间表{(b(n),τ(n))}的比特流的平均编码比特率rc。
也可以使用比rc大的泄漏速率R。在[10]中示出 和 在R中是渐减的、分段线性的和凸的。因此,如果传输速率R大于平均编码比特率rc,那么,与D=Fmind(rc)/R]]>相比,可以减少启动延迟D=Fmind(R)/R]]>。将在章节IV-A中使用这个事实。
这样,具有泄漏速率R=rc、大小B=Bmine(rc)]]>和初始解码器缓冲区充满度Fd=Fmind(rc)]]>的漏桶对应于限制如图4中的编码时间表的直缓冲管。媒体文件中的每个流具有编码时间表;这样,每个流对应于其斜率等于该流的平均编码比特率rc的直缓冲管。该缓冲管的大小B和它相对于编码时间表的偏移量Fe(或Fd)可以由关于可变比特率(VBR)流(例如,可伸缩流的恒定质量子流)的以上公式来计算,或者如果它是恒定比特率(CBR)流,则从被用来为该流编码的实际编码器缓冲区的大小B和初始状态Fe中获得。
在下文中,如图4中所描绘的,考虑缓冲管上限与编码时间表之间的帧,n处的差距g(n)。注意,解码器缓冲区充满度,Fd(n)=B-Fe(n)也可以被表示为Fd(n)=b(n)+g(n)=g(n-1)+rc(n)f(n),---(10)]]>其中,rc(n)是缓冲管的编码比特率,现在考虑当应用编码比特率控制并转换流时,不同的帧可能位于具有不同的编码比特率的不同缓冲管中。
C.速率控制模型暂时假设比特是按恒定速率ra到达客户机的。然后,帧n(具有大小b(n))在帧n-1之后的b(n)/ra秒到达客户机。实际上,比特的索引与其到达时间成比例。如图5中的图所示,通过将图4中的时间表的纵坐标除以ra,按照客户机时间(而不是比特)来获得这些时间表。编码时间表除以ra成为到达时间表,这为每个n提供帧n到达客户机的时间ta(n)。缓冲管上限(用比特表示)除以ra成为缓冲管上限(用时间表示),这为每个n提供保证帧n到达的时间tb(n)。在相同的曲线图中示出重放截止时间,它是调度播放帧,n的时间td(n)(在瞬间解码之后)。这样,帧的到达时间与它的重放截止时间之间的差距是在帧到达的时候的客户机缓冲区持续时间。这必须是非负的,以允许连续不断的重放。
实际上,到达速率不是恒定的。如果ta(n-1)和ta(n)分别是帧n和n-1的到达时间,那么,ra(n)=b(n)ta(n)-ta(n-1)---(11)]]>可以被定义为帧,n处的瞬间到达速率。在实践中,帧n处的平均到达速率由ra(n)的前一值的移动平均 来估算,这会在章节IV-C中详述。因此,通过使用公式(11),帧n的到达时间可以按照帧n-1的到达时间而被表示为ta(n)=ta(n-1)+b(n)ra(n)---(12)]]>
=ta(n-1)+b(n)r~a(n)+v(n)---(13)]]>其中,v(n)项是误差项,它捕捉使用缓慢移动平均 的效果。但是,从公式(10)中,可见,b(n)=rc(n)f(n)+g(n-1)-g(n),---(14)]]>由此(将公式(14)代入公式(13))产生ta(n)=ta(n-1)+rc(n)f(n)r~a(n)+g(n-1)r~a(n)-g(n)r~a(n)+v(n).---(15)]]>现在,将帧n的缓冲管上限(用时间表示)定义为tb(n)=ta(n)+g(n)r~a(n),---(16)]]>使得tb(n)-tb(n-1)=ta(n)-ta(n-1)+g(n)r~a-g(n-1)r~a(n-1),---(17)]]>获得以下更新公式tb(n)=tb(n-1)+rc(n)f(n)r~a(n)+w(n-1),---(18)]]>其中,w(n-1)=g(n-1)r~a(n)-g(n-1)r~a(n-1)+v(n).---(19)]]>也是误差项,它捕捉本地恒定到达速率周围的变更。
通过使用公式(16),客户机可以从测得的到达时间ta(n-1)、估算的到达速率 和g(n-1)(如章节V-E中所述,它可以连同帧n-1中的数据一起被发送到客户机,或者在客户机处计算)中计算tb(n-1)。然后,假设帧速率和到达速率粗略地保持恒定,那么,通过使用公式(18),客户机可以控制编码比特率rc(n),以使tb(n)达到所需的值。从这个观点来看,公式(18)可以被视作反馈控制系统的状态转移公式,这样,可以使用控制-理论方法来调节编码比特率。
D.控制目标利用公式(18)中所定义的状态转移公式,可以通过调节编码比特率以使客户机缓冲区不会下溢来实现不间断重放。如图5所示,为了引入随时间的推移而增加的安全限度,可引入目标时间表,它与重放截止时间的距离随时间的推移而缓慢增长。通过调节编码比特率,试图控制缓冲管上限,以便它跟踪该目标时间表。如果缓冲管上限接近于目标时间表,那么,所有帧的到达时间将一定比其重放截止时间更早,这样,将确保不间断重放。注意,将实际到达时间(而不是其上限)控制到目标将会导致每帧近似恒定的比特数,这又将会导致总体上非常差的质量。通过考虑漏桶模型,可以在先前为给定的平均编码比特率建立的界限内建立控制,该控制允许瞬间编码比特率根据内容的编码复杂性而自然地波动。
虽然将上限控制到目标时间表是主要目标,但是,也需要最小化因对编码比特率的大的或频繁的更改而产生的质量变更。这是通过将对于相对编码比特率差的损失引入费用函数来实现的。
设tT(n)表示帧n的目标,以下费用函数用来反映两个关注事项I=Σn=0N((tb(n)-tT(n))2+σ(rc(n+1)-rc(n)r~a(n))2),---(20)]]>其中,第一个项使缓冲管上限与目标时间表的偏差有损失,第二个项使接连的帧之间的相对编码比特率差有损失。N是控制窗口大小,σ是拉格朗日乘子或加权参数,用于平衡这两个项。
III.最优控制解决方案在呈现最优控制解决方案之前,将描述对目标时间表的设计基本原理。
A.目标时间表设计图6是示出说明性目标时间表的示图。重放截止时间与目标时间表之间的差距是所需的客户机缓冲区持续时间(用客户机时间表示)。如果差距在流传送开始时很小,那么,它允许小的启动延迟;而如果差距随时间的推移而缓慢增长,那么,它逐渐增加接收器阻遏抖动、延迟和吞吐量变化的能力。
目标时间表的斜率将平均编码比特率与平均到达速率相关。设tT(n)为帧n的目标。如图6所示,帧n处的目标时间表的斜率是s(n)=tT(n+1)-tT(n)τ(n+1)-τ(n).---(21)]]>如果上限b(n)完全与目标时间表对齐(即tb(n)=tT(n)),且到达速率ra是恒定的(即,w(n-1)项为零),则从公式(18)中,s(n)=tb(n+1)-tb(n)τ(n+1)-τ(n)=rc(n)ra.---(22)]]>这样,最初,当斜率低(即,小于1/v)时,ra/rc大于v,并且,每一秒的客户机时间接收多于v秒的内容,从而使客户机缓冲区(它在每一秒的客户机时间只播放v秒的内容)增大。随着时间的推移,当斜率接近1/v时,ra/rc接近v,并且缓冲区保持相对恒定(除了因瞬间编码比特率中的变更而产生的变化以外),因为内容是按相同的速度v来接收和重放的。接下来呈现两个目标时间表函数,它们展示一般的设计理念。
1)对数目标时间表用于选择目标时间表tT的一种方法是让客户机缓冲区持续时间随时间的推移而对数性地增长。具体而言,如果td是重放截止时间,那么对于大于某个启动时间td0的每个td,tT=td-baln(a(td-td0)+1).---(23)]]>由于通过公式(1),d=td0+(τd-τd0)/v,这产生s=dtTdτd=dtTdtddtddτd=1v-ba(τb-τd0)+v,---(24)]]>因此,帧0处的初始斜率(当td=td0时)是s(0)=(1-b)/v。设置b=0.5暗示最初rc/ra=0.5/v,从而使客户机缓冲区最初按两倍的实时增长。进一步设置a=0.15暗示客户机缓冲区持续时间将会是1分钟之后的7.68秒、10分钟之后的15.04秒、以及100分钟以后的22.68秒,而不管v如何。
2)两段线性目标时间表用于选择目标时间表tT的另一种方法是让客户机缓冲区持续时间按每一秒的客户机时间b秒的媒体时间的速率而线性地增长,直到缓冲区持续时间达到a秒的媒体时间为止,其后,它保持恒定。具体而言,对于大于某个启动时间td0的每个td,tT=td-b(td-td0)td≤td0+a/btd-atd≥td0+a/b---(25)]]>初始斜率也是s(0)=(1-b)/v。设置b=0.5暗示最初rc/ra=0.5/v,从而使客户机缓冲区最初按两倍的实时而增长。进一步设置a=10暗示客户机缓冲区持续时间将在20秒的客户机时间之后达到10秒的媒体时间,而不管v如何。
图7(a)和(b)示出了以上两个目标时间表的示图。可见,如果10秒的客户机缓冲区持续时间被认为是防御抖动、延迟和网络波动的安全等级,那么两段线性目标时间表在20秒内达到该安全等级,这比对数目标时间表快得多。另一方面,两段线性目标时间表的斜率保持较低达更久(因此,编码比特率和质量较低达更久),而且当其斜率从0.5/v变成1/v时,在20秒处经历突然的变化。所以,编码比特率将不会象利用对数目标时间表那样平稳地更改,尽管由于控制器设计中的平滑度目标,它将不会象时间表本身那样突然。
B.最优控制器设计从公式(18)中回想基本状态转移公式,它按照编码比特率rc(n)来描述缓冲管上限tb(n)的演变tb(n+1)=tb(n)+rc(n+1)fr~a+w(n).---(26)]]>这里,现在假设帧速率f和平均到达速率 相对恒定。与这个假设的偏差被w(n)捕捉。
需要通过调整编码比特率来控制上限。当每个帧到达客户机时,反馈回路可以将消息发送到服务器,以调整编码比特率。但是,注意,在帧n完全到达客户机的时候,帧n+1已开始从服务器流传送。这样,帧n+1的编码比特率rc(n+1)必须已由时间ta(n)来确定。实际上,在时间ta(n)处,帧n+2是控制器可以确定其编码比特率的最早的帧。因此,在时间ta(n)处,控制器的工作必须是选择rc(n+2)。必须明确地说明该反馈回路中的这个一帧延迟。
为简单起见,围绕帧n到达的时间来对目标时间表进行线性化。线性化相当于使用在特定点与原始目标时间表相切的线作为近似的目标时间表。这样,tT(n+1)-2tT(n)+tT(n-1)=0. (27)不是直接控制上限(它无限度地增长)的演变,而是出于稳定性的目的,使用误差空间公式。将该误差定义为e(n)=tb(n)-tT(n),(28)得到e(n+1)-e(n)---(29)]]>=(tb(n+1)-tT(n+1))-(tb(n)-tT(n))]]>=(tb(n+1)-tb(n))-(tT(n+1)-tT(n))---(30)]]>=rc(n+1)fr~a-(tT(n+1)-tT(n))+w(n),---(31)]]>从中进而
(e(n+1)-e(n))-(e(n)-e(n-1))---(32)]]>=[rc(n+1)-rc(n)]/fr~a]]>-(tT(n+1)-2tT(n)+tT(n-1))]]>+(w(n)-w(n-1))]]>=rc(n+1)-rc(n)fr~a+(w(n)-w(n-1))---(33)]]>然后,控制输入被定义为u(n)=rc(n+2)-r^c(n+1)r~a,---(34)]]>其中, 是rc(n+1)的可能被量化的形式(如章节IV-D中所定义的),并且,干扰被定义为d(n)=r^c(n)-rc(n)fr~a+w(n)-w(n-1).---(35)]]>然后,公式(33)可以被重写e(n+1)=2e(n)-e(n-1)+u(n-1)f+d(n).---(36)]]>所以,定义误差向量e(n)=e(n)e(n-1)u(n-1)=tb(n)tb(n-1)rc(n+1)r~a-tT(n)tT(n-1)r^a(n)r~a---(37)]]>该系统的误差空间表示可以被表示为e(n+1)=2-11f100000e(n)+001u(n)+100d(n),---(38)]]>或对于适当的矩阵Φ、Γ和Гd的e(n+1)=Φe(n)+Γu(n)+Γdd(n)。
假设干扰d(n)是纯白噪声,并假设完美状态测量(即,无须使用估算器就可测量e(n)的所有分量),干扰d(n)不会影响控制器设计。这样,以下公式表示线性控制器由u(n)=-Ge(n) (39)可以被使用,其中G是反馈增益。在完全接收到时间帧n的时候,e(n)的所有元素都在客户机处可用,因而可以计算u(n)。然后,对于帧n+2的理想编码比特率可以被计算为rc(n+2)=r^c(n+1)-Ge(n)r~a.---(40)]]>找出最优线性控制器实际上是找出反馈增益G*,该反馈增益G*最小化章节II-D中所定义的二次费用函数。在继续设计之前,将首先检验系统可控性矩阵CC=[ΓΦΓΦ2Γ]=01f2f001f100---(41)]]>它具有关于任何帧速率f的满秩。这样,该系统是完全可控制的,并且,状态e(n)可以被调节到任何所需的值。现在,回想章节II-D中所定义的费用函数是I=Σn=0N{(tb(n)-tT(n))2+σ(rc(n+1)-rc(n)r~a)2}---(42)]]>=Σn=0N{e(n)TQe(n)+u(n-1)TRu(n-1)},---(43)]]>其中,Q=CTC(C=[100]),并且R=σ。然后,在平滑编码比特率波动(即,最小化费用函数I)的同时跟踪目标时间表的原始控制问题被转换成误差空间中的标准调节器问题。设N→∞,通过应用[11,章节3.3]中的结果在以下两个步骤中获得最佳调节器,可以解决无限水平线最优控制问题1)解离散代数黎卡提方程(DARE)以获得SS=ΦT{S-SΓ[ΓTSΓ+R]-1ΓS}Φ+Q, (44)以及2)计算最优反馈增益G*=[ΓTSΓ+R]-1ΓTSΦ. (45)当Q是非负定并且R是正定的时候,保证S的(进而是G*的)存在和唯一性,在此情况下,这验证起来是直截了当的。
C.帧速率在前一个章节中,假设帧速率是恒定的。当流传送单个媒体(例如,无音频的视频)时,这个假设是合理的。通常通过跳过帧来实现可变帧速率视频,这可以通过设置b(n)=0来适应。但是,通常视频和音频一起被流传送,并且,其合并编码时间表可能没有固定的帧速率。例如,即使有固定的帧速率f,也可能需要按低于f的速率来操作控制器,以降低反馈速率。
为了解决这些问题,在实践中,使用虚拟帧速率的概念。选择虚拟帧速率,例如,f=1帧/秒(fps);媒体时间被划分成大小为1/f的时间间隔;并且,在每个时间间隔内到达的所有(音频和视频)帧被建模为虚拟帧,其解码和重放截止时间是该时间间隔的末端。
这个方法具有几个优点。首先,它允许通用反馈增益的脱机设计,它独立于一个或多个流的实际帧速率。其次,它允许降低从客户机到服务器的反馈速率。最后,由于各个虚拟帧之间的时间间隔通常安全地大于往返旅程时间(RTT),因此,误差空间模型中的一帧延迟(如前一个章节中所描述的)足以为反馈延迟建模。否则,将会有必要利用近似RTT/f额外状态变量来为反馈延迟建模,以便使用长度为RTT/f的移位寄存器来表示网络延迟。
在本说明书的剩余部分中,使用虚拟帧速率f=1fps,并被简称为“帧速率”。同样,虚拟帧被简称为“帧”。
注意,利用本控制器设计基本原理,通过减少σ值,可以减少缓冲管上限与控制目标的偏差。σ值的较小的值暗示费用函数中的偏差项上的相对较大的损失,并且因此迫使该上限更紧密地跟踪目标。但是,这种情况的发生是以牺牲编码比特率平滑度为代价的,因为费用函数中的对应的项将被加权较少。对于σ=500,发现缓冲管上限只稍微偏离控制目标,但编码比特率有不合需要的振荡。另一方面,大的σ值将一定会产生更平滑的编码比特率,但也可能会招致客户机缓冲区下溢,因为缓冲管上限被允许大大偏离控制目标。所以,对σ的良好选择应该考虑这个权衡。在本系统和过程的测试实施例中,当编码比特率向上转换时,选择σ=4000;当它向下转换时,选择σ=2000。注意,在后一种情况中,允许使用稍微更具攻击性的策略,以进一步降低客户缓冲区下溢的机会。
IV.对于流传送的实际问题如前面各章节中所讨论的,启动延迟是从内容首先开始到达客户机的时间到重放开始的时间的时期的长度。在这段时期中,内容累积在接收器缓冲区中,以防御数据包抖动、重发延迟、网络带宽中的变更、以及瞬间编码比特率中的变更。可以想得到,较长的启动延迟将会增加能够在动态网络环境中保持连续不断的重放的机会。另一方面,用户期望启动延迟尽可能小。这样,需要调查可以在保持健壮性的同时减少启动延迟的技术。一种可能的方法是在流传送开始的时候,按比标准速率更快的速率来传送内容。这项丛发技术将一定会在少量时间内增长缓冲区持续时间。但是,通过要求比标准初始带宽更大的带宽(它甚至可能不可用),它会给网络施加额外的压力。
本系统和过程使用一种替换的快速启动技术,它利用自适应媒体的特性。如前面章节中所讨论的,通过选择等于到达速率ra的一半的初始编码比特率rc(如果必要的话,除以重放速度v),客户机缓冲区持续时间可以在重放期间按两倍的实时增长。在重放期间增长客户机缓冲区允许启动延迟为低,因为在缓冲区持续时间仍然很低的同时,可以开始重放。在缓冲区持续时间低的同时开始重放在短期内并不特别冒风险,因为在任何短时间间隔内发生深度拥塞的概率很低。但是,在长时间间隔内发生深度拥塞的概率很高,所以,让缓冲区持续时间在长期内保持高是很重要的。若不能在重放期间增长缓冲区持续时间,启动将必须被延迟,直到缓冲区持续时间高得足以保证长期内连续不断的重放为止。
而且,如果传输速率是编码比特率的两倍,那么,通过利用漏桶模型[10]的特性,可以进一步减少启动延迟。如章节II-B中所详述的,当按速率R来传送流时,对于给定比特流的启动延迟是D=Fmind(R)/R]]>。当按其编码比特率来传送流时,这一般等于Fmind(rc)/rc。但是,当按速率ra>rc(rc=0.5ra/v)来传送流时,启动延迟降低到Fmind(ra)/ra。这样,启动延迟D减少,这既是因为分子减少,也是因为分母增加。
图8中的示图示出了当R从rc变成ra时初始解码器缓冲区充满度Fmind(R)中的减少。特别是,它描绘了对于给定比特流的编码时间表以及上限和下限,它们被表示为管I和管II,分别对应于具有速率rc和ra的两个漏桶,两者都包含该编码时间表。管II比管I小,这是因为包含给定流的漏桶的最小尺寸Bmin(R)正在以泄漏速率R[10]减小。同样,初始解码器缓冲区充满度Fmin(R)正以R[10]减小。因此,关于帧0的重放截止时间可以如客户机时间t0_II=Fmind(ra)/ra]]>(而不是t0_I=Fmind(rc)/ra]]>)那样早开始。从那里,重放截止时间按每秒的媒体时间1/v秒的客户机时间来前进。
B.控制器初始化如图8所示,目标时间表与重放截止时间同时开始,并根据预定义函数而增长。控制器试图将管I的上限控制到目标时间表。最初,管I的上限在目标时间表以上(并且的确在重放截止时间以上,尽管知道这是安全的)。因此,当重放开始时,控制器将会试图通过降低编码比特率来缩短差距。但是,这将是不合需要的,因为当前编码比特率已低于到达速率,以允许客户机缓冲区增长。编码比特率的进一步降低将是不适当的。为了避免这个后果,当管I的上限超过目标时间表(即,在图8中的点B处)时,对控制器进行初始化。可以在分析上找到点B,但在实践中,不需要明确地解出它。管I的上限一超过目标,就可以对控制器进行初始化。
C.到达速率的指数平均使用平均到达速率(而不是瞬间到达速率)有助于减少编码比特率振荡。本章节详述关于到达速率的新的指数平均算法。
当接收数据包k时,设 和r(k)分别是平均到达速率和瞬间到达速率。注意,与控制运算不同的是,可以在每个数据包到达之后,而不是在每个帧到达之后执行速率平均运算。因此,使用离散数据包索引k,而不是帧索引n。更仔细地执行指数平均,而不是使用具有常数β(k)=β的普遍采用的指数加权移动平均数(EWMA)r~a(k)=β(k)r~a(k-1)+(1-β(k))ra(k)---(46)]]>在本算法中,因数β(k)不是恒定的,但根据这些数据包的交互到达差距而改变。这个新的算法拥有胜过具有常数β(k)的EWMA算法的几个优点。首先,平均到达速率 的估算自然地趋零作为差距,因为最后一个数据包趋于无穷大,而不是被 限制在下面。其次,平均到达速率 的估算不趋于无穷大作为差距,因为最后一个数据包趋于零。这尤其重要,因为数据包经常以脉冲串到达,从而导致极高的瞬间到达速率。最后,平均到达速率 的估算不会过加权初始条件,好象它表示无穷的过去。这在早期估算阶段中尤其重要。
如在公式(11)中,数据包k之后的瞬间到达速率被定义为ra(k)=b(k)ta(k)-ta(k-1),---(47)]]>其中,这里的b(k)表示数据包k的大小,ta(k)表示数据包k的到达时间。通过如图9中的示图所示的以下公式,离散时间函数ra(k)扩展到分段恒定连续时间函数ra(t)ra(t)=ra(k)对所有的t∈(ta(k-1),ta(k)),(48)然后,对于某个时间常数1/α,函数ra(t)被指数脉冲响应αe-αt过滤,t≥0r~a(k)=∫t(0)t(k)ra(t′)αe-α(t(k)-t′)dt′∫t(0)t(k)αe-α(t(k)-t′)dt′.---(49)]]>(这里以及在本小节的剩余部分中,从到达时间ta(k)中抑制下标。)注意∫t∞αe-αt′dt′=e-αt]]>,,分母积分可以被表示为1-e-α(t(k)-t(0))。现在,分子积分的范围被分成范围(t(0),t(k-1)]和(t(k-1),t(k)],以便按照 和ra(k)来获得关于 的递归表达式,r~a(k)=1-e-α[t(k-1)-t(0)]1-e-α[t(k)-t(0)]e-α[t(k)-t(k-1)]r~a(k-1)---(50)]]>+1-e-α[t(k)-t(k-1)]1-e-α[t(k)-t(0)]ra(k)]]>=β(k)r~a(k-1)+(1-β(k))ra(k),---(51)]]>其中,β(k)=e-α[t(k)-t(k-1)]-e-α[t(k)-t(0)]1-e-α[t(k)-t(0)].---(52)]]>注意,当k趋于无穷大时,β(k)在数字上是稳定的。但是,当差距δ=t(k)-t(k-1)趋于零时,1-β(k)趋于零,同时,ra(k)趋于无穷大。但是,其乘积性能良好。的确,r~a(k)=1-e-α[t(k-1)-t(0)]1-e-α[δ+t(k-1)-t(0)]e-αδr~a(k-1)---(53)]]>+1-e-αδ1-e-α[t(k)-t(0)]b(k)δ]]>→r~a(k-1)+ab(k)1-e-α[t(k)-t(0)]---(54)]]>当δ→0时,使用罗必塔(I′H_pital)法则。这样,公式(54)是当t(k)=t(k-1)时的更新规则。
D.给定编码比特率时选择流当客户机请求编码比特率rc(n)时,通过选择具有近似地等于rc(n)的编码比特率 的流(或可伸缩流的子流),服务器可顺从。 可能不同于rc(n)有几个原因。第一个原因是即使使用细粒可伸缩编码,媒体文件中也只有有限数量的流(或子流)。这样,媒体文件中可能没有具有正好等于rc(n)的平均编码比特率的流。第二个原因是即使媒体文件中有具有正好等于rc(n)的平均编码比特率的流,关于该流的缓冲管也可能会太大,以致不允许在不冒客户机缓冲区下溢的风险的情况下对该流的转换。实际上,只要该流转换,上限中一般都有中断,它可能是正的或负的。图10中的示图展示了上限中的正位移,它(如果大的话)会使客户机缓冲区立即或最终发生下溢。
这样,服务器必须选择流,该流使上限的上移不会超过客户机提供给它的某个量Δmaxg(n-1)。在客户机时间ta(n-2)之后不久(在帧n-1已开始流传送之后),客户机在其反馈中连同rc(n)一起将Δmaxg(n-1)提供给服务器。一接收到该反馈,服务器就选择具有尽可能高的编码比特率 的流,以使r^c(n)≤rc(n)]]>,并且,如果r^c(n)>r^c(n-1)]]>(即,如果它是速率中的向上转换),那么,gnew(n-1)-gold(n-1)≤Δmaxg(n-1),其中,gnew(n-1)和gold(n-1)在图10中示出。如果它是速率中的向下转换,则不应用Δmaxg(n-1)给出的约束。
即,如果新的编码比特率有效,那么,客户机选择Δmaxg(n-1)来限制上限在时间ta(n-1)处将会是什么(对上限的预测)。
tbnew(n-1)≈tb(n-2)+r^c(n-1)fr~a+Δg(n-1)r~a---(55)]]>≤tT(n-1)+p[td(n-1)-tT(n-1)]. (56)即,客户机选择Δmaxg(n-1)来限制 ,以使它将只是从目标tT(n-1)到重放截止时间td(n-1)的路途的分数p。在本系统和过程的测试实施例中,选择p=1/3。
注意,在替换实施例中,关于服务器支持什么编码比特率的信息可以提早被提供给客户机,并且,客户机会负责执行前述分析。在此情况下,客户机将会只请求服务器支持的编码比特率,并且,将不需要将Δmaxg(n-1)提供给具有该请求的服务器。
E.控制目标调整当具有新的平均编码比特率 的帧在时间ta(n)处到达客户机时,上限中有位移。这个位移可以是几秒的数量级,因此,会对控制器产生混淆,而不是可以忽略的。例如,如果该位移是向上的,那么,控制器将立即试图降低编码比特率rc(n+2)。另一方面,如果该位移是向下的,那么,控制器将立即试图提高编码比特率rc(n+2)。其中的任何一种方法可能都不好意图是保持 ,除非到达速率中有干扰。如图10所示,一种解决方案是在控制目标时间表中引入等于 的同时位移,其中,Δg(n-1)=gnew(n-1)-gold(n-1)是在服务器处计算的帧n-1处的上限中的实际位移(用比特表示)。服务器可以将这个值连同帧n一起发送到客户机。如果没有流变化,则这个值只是零。
如果无论何时编码比特率更改都调整控制目标时间表,那么,将不再遵循设计目标时间表。调整的目标时间表将被称作“控制目标时间表”,以将它和设计目标时间表(或只是目标时间表)区别开来。
当然,控制目标时间表应该具有接近设计目标时间表的趋向。基本理念是当它在设计目标时间表以上时,减少控制目标时间表的斜率;当它在设计目标时间表以下时,增加该斜率。
关于对数目标时间表tT=td-baln(atd+1)]]>(其中,td=td0+(τd-τd0)/v),根据公式(24),媒体时间τd处的斜率是s=dtTdτd=1v-ba(τd-τd0)+v.---(57)]]>如果d被定义为重放截止时间与目标时间表之间的距离,即d=baln(a(τd-τd0v)+1),---(58)]]>那么,斜率可以被表示为d的函数s=1v-bve(a/b)d.---(59)]]>因此,只要d是重放截止时间与控制目标之间的距离,控制目标的斜率都在公式(59)中被设置为s。明确地说,如果 是移位之后的帧n处的控制目标,那么, 被重置为 。然后,使用 和 来代替tT(n)和tT(n-1),以便计算公式(37)中的误差向量e(n)。最后得到的误差向量随后被用来计算公式(40)中的理想编码比特率。
对于两段线性目标时间表,通过使用在其间期望控制目标时间表返回到目标时间表的预定义时期,能容易地计算斜率。控制目标时间表的斜率随后可以从距离d和该时期中计算。在本系统和过程的测试实施例中,该时期被设置为50秒。
V.实现细节本章节突出关于发送器和接收器方的实现细节。
A.虚拟流的生成在本系统和过程的测试实施例中,细粒可伸缩(FGS)流包括一组数据单元,如果数据单元由客户机来接收,则每个数据单元由表示失真中的每比特减少的拉格朗日乘子λ来标记。如果关于数据单元的λ在阈值以上,那么,数据单元被包括在对应于该阈值的虚拟流内。每个阈值对应于总比特数以及(因而)该虚拟流的平均编码比特率。在测试实施例中,生成N=50个虚拟流。为每个流选择阈值,以便最后得到的流具有在下限与上限之间的对数域内被均匀地隔开的编码比特率。
在流传送期间,当服务器从媒体文件读取数据单元时,如果其拉格朗日乘子λ在流的阈值以上,那么,它在当前正被传送的虚拟流中包括数据单元。
B.发送器处的漏桶计算对于每个虚拟流,为R=Ravg和R=Rmax脱机预先计算漏桶参数(R,Bmin(R),Fmind(R)),其中,Ravg=rc是流的平均编码比特率,并且Rmax=2rc。这些漏桶参数在前同步信号中被发送到客户机。
此外,在流传送期间,服务器为每个流执行联机漏桶模拟。明确地说,只要服务器从媒体文件中读取数据单元,它就使用数据单元的拉格朗日乘子和每个流的阈值列表来确定数据单元所属的虚拟流。然后,对于所确定的流,发送器使用公式(2)和(3)来更新具有等于平均编码比特率Ravg的泄漏速率的漏桶的各个状态。一旦从媒体文件读取帧内的所有这些数据单元,发送器就为这些虚拟流中的每个虚拟流计算g(n)=Bmin(Ravg)-Be(n)。在流转换(即,r^c(n)≠r^c(n-1)]]>)时,关于新的流的差距gnew(n)连同如下所述的Δg(n-1)=gnew(n-1)-gold(n-1)一起被传送到客户机。可容易地看到,更新漏桶状态的费用非常低。但是,也可能预先计算这些值并将它们与媒体文件中的每个数据单元存储在一起。
C.初始编码比特率选择在流会话开始时,发送器需要具备关于可用的网络带宽的一些知识,以便它可以选择初始编码比特率(通常是该带宽的一半)。通过使用诸如数据包对[12]、路径线性调频脉冲(path chrp)[3]等方法或基于历史值的反应性近似值,可以从前摄测量中提取带宽估算。初始带宽估算的确切形式超过该作品的范围。
D.编码比特率转换来自客户机的速率控制反馈包含在其处生成反馈的帧号(例如,前一章节中的n-2)、以及用比特表示的上限的最大允许位移(例如,前一章节中的Δmaxg(n-1))。如果发送器发现合适的编码比特率并在帧n处进行转换,那么,它将将以下三个值连同该帧一起传送到客户机新的编码比特率 、与上限的当前差距gnew(n)和位移Δg(n-1)=gnew(n-1)-gold(n-1)。利用该信息,客户机可以适当地调整其控制目标时间表以及其上限。注意,编码比特率转换总是在新帧的开端发生,而从来不会在帧的内部发生。
E.客户机处的最佳速率控制只要新的编码比特率开始,客户机都接收值g(n)以及新的帧。然后,根据编码比特率 和帧大小b(n),客户机本身可以推断出关于接连的帧的g(n)的各个值。客户机记录到达帧时间ta(n),计算缓冲管上限tb(n),然后计算偏差e(n)。如果有编码比特率转换,那么,它也将计算缓冲管位移并相应地调整控制目标时间表。然后,e(n)被馈送到最优速率控制器,该最优速率控制器输出所需的新编码器比特率。只要有返回机会,就将最近的新编码比特率反馈到发送器,该反馈机会可以定时或按需生成。
F.示例性过程现在将提供关于前述系统的实施的示例性过程,以应用于本发明的一个实施例。
参考图11A-C,对于支持的编码比特率中的每个编码比特率,服务器首先计算定义编码器缓冲区的初始状态的一组参数,因为如果从那里流传送对应于所支持的编码比特率的数据流,则它将会存在(过程动作1100)。这些参数(包括与该数据流相关联的编码比特率、用于该数据流的编码比特率的编码器缓冲区大小、以及指示按该数据流的编码比特率来展示的初始编码器缓冲区充满度的值)在对流媒体数据的前同步信号中被提供给客户机(过程动作1102)。然后,在启动期间,服务器按规定的初始编码比特率将媒体数据流传送到客户机(过程动作1104)。当流传送数据时,服务器计算为服务器所支持的每个编码比特率而生成的每个帧的上限差距(过程动作1106)。最初,客户机使用编码器缓冲区参数在逐帧的基础上为未来帧确定新的最优编码比特率(过程动作1108)。此外,客户机为服务器刚刚在该未来帧之前生成的帧计算前述的最大允许差值,即最大位移值(过程动作1110)。一旦客户机的解码器缓冲区在其中具有确保下溢条件不会按初始编码比特率发生所需的最少数量的数据,客户机也就开始重放它已接收的帧,并且,继续重放其后接收到的每个帧(过程动作1112)。此外,一旦前述启动时期结束,客户机就请求在未来帧处开始按对应于确定的最优编码速率的新编码比特率来提供流媒体数据,,并连同该请求一起提供最大位移值(过程动作1114)。
服务器找出所支持的编码比特率,该编码比特率等于客户机所请求的最优编码比特率,或者如果没有一个相等,则是最接近于该最优编码比特率的较小速率(过程动作1116)。接下来,由服务器确定所找出的所支持的编码比特率是低于还是高于与直接在客户机请求中所指定的那个帧之前生成的帧相关联的编码比特率(过程动作1118)。如果它是较低的,那么,服务器为直接在客户机请求中所指定的那个帧之前生成的帧计算前述位移值(过程动作1120),并且按所找出的所支持的速率从客户机所指定的那个帧开始生成所有未来帧,并连同所计算的上限差距和位移值、以及新编码比特率的指示一起将它们流传送到客户机(过程动作1122)。但是,如果所找出的所支持的编码比特率较高,那么,服务器为直接在客户机请求中所指定的那个帧之前生成的帧计算位移值(过程动作1124),然后确定位移值是小于、还是等于客户机请求中所提供的最大位移值(过程动作1126)。如果位移值小于或等于最大位移值,那么,服务器按所找出的所支持的编码比特率从客户机所指定的那个帧开始生成所有未来帧,并连同所计算的上限差距和位移值、以及新编码比特率的指示一起将它们流传送到客户机(过程动作1122)。但是,如果位移值大于最大位移值,那么,找出下一个较低的所支持的编码比特率(过程动作1128),并重复过程动作1118到1128。
客户机按新的编码比特率将与刚刚接收到的第一个帧相关联的当前调度的目标到达时间位移所提供的位移值,并且位移未来帧的当前调度的目标到达时间,以使它们在一段时间内共同接近那些帧的先前的目标到达时间并最后与其相符(过程动作1130)。然后,客户机使用服务器所提供的编码器缓冲区参数和上限差距值,来确定未来帧的新的最优编码比特率,并计算服务器刚刚在该未来帧之前生成的那个帧的最大位移值(过程动作1132)。客户机请求从客户机所指定的未来帧处开始按对应于所确定的最优编码速率的新的编码比特率来提供流媒体数据,并且包括所计算的最大位移值(过程动作1134)。然后,在流媒体数据传输的持续时间内,重复过程动作1116到1134。
VI.多比特率流多比特率(MBR)流是普遍用于商业流媒体系统中的网络自适应技术。在MBR流中,与可伸缩流对比而言,内容按不同的编码比特率而被编码成几个(通常是5-7个)独立的流。经常为普通类型的网络连接(例如,拨号、DSL、电缆)优化每个流。在MBR流会话期间,根据可用网络带宽来动态地选择适当的编码比特率,其目标是在不间断重放的条件下实现可能的最高质量。可容易地看到,MBR流类似于可伸缩流。的确,MBR流可以被视作具有有限数量的可用编码比特率的可伸缩流的特殊情况。因此,前述最优控制方法应该可适用于这种情况。
但是,有几个差异使MBR流变得复杂,它们需要仔细地加以处理。首先,如刚刚提及的,在MBR流中,只有有限数量的编码比特率可用。所需编码比特率的该粗略量化将重大的非线性引入闭循环系统。实际上,可用的编码比特率之间的大差距引入振荡。例如,如果两个邻近的编码比特率跨在恒定的到达速率上,那么,控制器将在这两个编码比特率之间振荡,以试图将客户机缓冲区保持在目标级。
其次,在MBR流中,编码比特率无法在任意时间转换。实际上,在服务器可以转换到新的流之前,它可能必须等候该新的流中的下一个清洁点(例如,I帧),它可以有五或十秒远。这样,在它更改成新的编码比特率之前,老的编码比特率可以继续相当一段时间。从控制器的观点来看,该长随机额外延迟往往会破坏闭循环系统的稳定。
再次并且最后,在MBR流中,服务器性能问题至关紧要。使用MBR流的商业级流媒体系统这样做,因为与可伸缩流相比,它施加给服务器的计算负担最小。这样,对于MBR流,在客户机方上保持几乎所有的计算和状态维持是很重要的。特别是,服务器将不能为每个流更新漏桶信息。而是客户机必须使用用于估算和保持该信息的某一机制。
A.保守的向上转换在这一小节中,描述一种有助于使控制系统稳定并将稳定状态振荡减少到至少一分钟的时期的技术。利用这项技术,准许进行迅速的向下转换。实际上,σ的值从2000减少到500,从而有利于迅速转换响应而改变编码比特率的响应性与平滑度之间的平衡。但是,只准许保守的向上转换。保守的向上转换确保编码比特率中不会发生虚假的变化,并且,编码比特率中的振荡具有低频。特别是,保守的向上转换减少两个邻接但间隔较远的MBR编码比特率(一个在到达速率以上,一个在到达速率以下)之间的振荡。
在一个实施例中,保守的向上转换建立保守界限,该保守界限将编码比特率只局限于到达速率。但是,在另一个实施例中,支持保守的向上转换的方法是对编码比特率可以被提高到到达速率以上多少建立保守界限。如果当前编码比特率在到达速率以下,并且客户机缓冲区持续时间开始增加到其目标级以上,那么,只有当新的编码比特率在该保守界限以下时,编码比特率才可以被向上转换到到达速率以上的新的编码比特率。当客户机缓冲区持续时间在目标级处开始时,保守界限等于到达速率。但是,随着客户机缓冲区持续时间的增加,保守界限也增加。这样,如果当前编码比特率在到达速率以下,并且,下一个较高的编码比特率在到达速率以上,那么,只有在客户机缓冲区持续时间已充分地增加之后,才可能向上转换到下一个较高的编码比特率,以便保守界限升高到较高的编码比特率以上。一旦编码比特率被向上转换到较高的编码比特率,客户机缓冲区就开始排空,因为编码比特率随后在到达速率以上。最后,当缓冲区排空回到其目标级以下时,控制器将迅速把编码比特率向下转换回到到达速率以下的编码比特率。
给定当前客户机缓冲区持续时间,保守界限被设置为一个值,以使如果编码比特率被向上转换到这个值处的新的编码比特率,那么,客户机缓冲区将会花费至少Δt秒的客户机时间来排空回到目标级。这样,该机制确保振荡周期将至少是Δt秒。在本系统和过程的测试实施例中,Δt被设置为60秒。
图12示出了如何计算保守界限。当编码比特率从rcold被向上转换成rcnew时,设Δτ1为客户机缓冲区持续时间(用媒体时间表示)。这样,Δτ1是内容的秒数;在内容开始按新的编码比特率来消耗之前,该内容将按老的编码比特率rcold来消耗。(为简单起见,假设转换时客户机缓冲区中的全部内容按速率rcold来编码。)设Δτ2为内容的秒数;在客户机缓冲区持续时间落到大于目标级ΔτT的某个等级Δτ3秒(用媒体时间表示)之前,该内容按新的编码比特率rcnew来消耗。确定这个阶段的持续时间,以使自从转换以来的总时间确切地是Δt=(Δτ1+Δτ2)/v秒(用客户机时间表示)。现在,本次到达的比特数是raΔt=rcnew(Δt2+Δt3)≥rcnew(Δτ2+ΔτT)=rcnew(vΔt-Δτ1+ΔτT)]]>或rcnew≤raΔtvΔt-Δτ1+vΔtT,---(60)]]>其中,ΔtT是用客户机时间表示的目标缓冲区持续时间。可以调整参数Δt,以产生所需的行为。大的Δt意味着向上转换将更保守,而较小的Δt意味着向上转换将更迅速。在测试实施例中,Δt被设置为60秒,而目标ΔtT通常是大约10秒。
B.缓冲管上限估计在章节V-D中,指定在编码比特率中的每个变化开始时,服务器向客户机发送三个值新的编码比特率 、与上限的当前差距gnew(n)、以及控制目标位移Δg(n-1)=gnew(n-1)-gold(n-1)。服务器通过为每个编码比特率运行漏桶模拟器,来计算后两个值。客户机通过为新的编码比特率运行其自己的漏桶模拟器,来继续为新的编码比特率更新g(n)。即,始于初始条件Fe(n)=B-b(n)-gnew(n),对于每个接连的帧,客户机计算
Be(n)=Fe(n)+b(n) (61)Fe(n+1)=max{0,Be(n)-r^c/f(n)},---(62)]]>其中,f(n)=1τ(n+1)-τ(n)---(63)]]>是瞬间帧速率,如同公式(2)、(3)和(4)中一样。从这一点,客户机可以为每个帧计算g(n)=B-Be(n) (64)但是,如果服务器不能模拟这些漏桶并且无法将gnew(n)发送到客户机,那么,客户机必须为自身估算该信息。在此情况下,建议客户机将gnew(n)估算为上限(例如,g^new(n)=B-b(n)≥gnew(n)]]>)。然后,始于初始条件F^e(n)=B-b(n)-g^new(n)]]>(它在此情况下等于0),对于每个接连的帧,客户机计算B^e(n)=F^e(n)+b(n)---(65)]]>F^e(n+1)=max{0,B^e(n)-r^c/f(n)},---(66)]]>以及g^(n)=B-B^e(n).---(67)]]>通过归纳,可容易地看到F^e(n)≤Fe(n),B^e(n)≤Be(n)]]>和g^(n)≥g(n)]]>。而且,只要δ(n)>0(即,只要Fe(n+1)在公式(66)中消减为0),这些限度每个都通过δ(n)=r^c/f(n)-Be(n)]]>而变得更紧密。实际上,假设给予足够的时间,它们最后可能会变得紧密。
注意,只要限度通过δ(n)>0而变得紧密,控制目标都必须移位 ,其中,Δg(n)=-δ(n)。另外,只要n是新的编码比特率的第一个帧,控制目标都应该移位 ,其中,Δg(n)=g^new(n)-g^old(n)]]>。这里,通过为在一个额外的步骤中运行公式(65)、(66)和(67),即如果n是新的编码比特率的第一个帧,则可以确定 。
F^e(n)=max{0,B^e(n-1)-rc^old/f(n-1)}---(68)]]>B^e(n)=F^e(n)+b(n)---(69)]]>g^old(n)=B-B^e(n).---(70)]]>容易看到,如果g^new(n)=B-b(n)]]>,那么,如公式(68)中所计算的那样Δg(n)=F^e(n)]]>。
VII.发送器驱动流前述讨论已假设用于使流或其比特率适应流行条件的控制过程位于客户机内。这被称作“接收器驱动流”,因为客户机(即接收器)作出决定并通知服务器(即发送器)。但是,应该清楚,发送器驱动流也可能存在,其中,控制过程在发送方进行操作。例如,通过为流媒体数据的传输使用TCP,控制过程可以在服务器处进行操作,从而测量每个帧的传输时间并估算传输速率;而不是控制过程在客户机处进行操作,从而测量每个帧的到达时间并估算到达速率。通过使用TCP,帧的传输时间实质上与其到达时间相同,同样,传输速率实质上与其到达速率相同;因此,可以交换地使用这些。通常,数据包的传输时间或到达时间可以被称作“时间标记”。在发送器驱动流中,通过知道它已传送了什么,并通过知道所传送的帧的播放时间,服务器可以推断出客户机缓冲区的状态。发送器驱动流减少在客户机与服务器之间传达控制信息的管理费用,但它也增加对服务器的计算负担。在一些情况下,这可能是所需的权衡。本领域的技术人员将会理解可以将这里所描述的协议适当地修改成其中控制算法驻留在服务器或另一个位置中(而不是在客户机中)的情况。
VIII.参考文献[1]G.J.Conklin、G.S.Greenbaum、K.O.Lillevold、A.F.Lippman和Y.A.Reznik.Video coding for streaming media delivery on the Internet(关于因特网上的流媒体传递的视频编码),IEEE会报,Circuits and Systems for Video Technology(关于视频技术的电路和系统),11(3)269-281,2001年3月,special issue on Streaming Video(关于流视频的特殊期刊). T.Wiegand和G.Sullivan.Joint video specification(联合视频说明书)rec.h.264& 14496-10 avc,Non-Final Draft of Final Draft International Standard(最后草案国际标准(FDIS))JVT-G050的非最后草案,ITUT & ISO/IEC,Pattaya,泰国,2003年3月. V.J.Ribeiro、R.H.Riedi、J.Navratil、L.Cottrell和R.G.Baraniuk.,pathchirpefficient available bandwidth estimation for network paths(关于网络通路的有效率的可用带宽估算)。Passive and Active Measurement Workshop(PAM)(被动与主动测量专题研究组)会刊,(PAM),La Jolla,CA,2003年4月. R.Rejaie、M.Handley和D.Estrin.,Layered quality adap-tation for Internetstreaming video(关于因特网流视频的分层质量适应),IEEE J.,Selected Areas inCommunications(通信中的选择区域),18(12)2530-2543,2000年12月. Q.Zhang、Y.-Q.Zhang和W.Zhu.,Resource allocation for multimediastreaming over the Internet(关于因特网上的多媒体流的资源分配),IEEE会报,Multimedia(多媒体),3(3)339-355,2001年9月. B.-J.Kim、Z.Xiong和W.A.Pearlman.,Low bit-rate scalable video codingwith 3D set partitioning in hierarchical trees(具有层次树中的3D集合分区(3-DSPIHT)的低比特率可量测视频编码),IEEE会报,Circuits and Systems for VideoTechnology(关于视频技术的电路和系统),10(8)1374-1387,2000年12月. F.Wu、S.Li和Y.-Q.Zhang.,A framework for efficient progressive finegranularity scalable video coding(关于有效率的渐进小颗粒状可量测视频编码的构架),IEEE会报,Circuits and Systems for Video Technology(关于视频技术的电路和系统),11(3)301-317,2001年3月. J.Li.Embedded audio coding(eac)with implicit psychoacoustic masking(具有含蓄的音质掩蔽的嵌入音频编码(eac)),Int’l Conf.Multimedia(国际会议多媒体)会刊,第592-601页,Nice,法国,2002年12月,ACM. P.de Cuetos和K.W.Ross.,Adaptive rate control for streaming storedfine-grained scalable video(关于流存储的细粒可量测视频的自适应速率控制),Int’lWorkshop on Network and Operating Systems Support for Digital Audio and Video(NOSSDAV)(关于数字音频与视频的网络和操作系统支持(NOSSDAV)方面的国际专题研究组)会刊,迈阿密海滩,FL,2002年5月. J.Ribas-Corbera、P.A.Chou和S.Regunathan.,A generalized hypotheticalreference decoder for H.264/AVC(关于H.264/AVC的概括的假定参考解码器),IEEE会报,Circuits and Systems for Video Technology(关于视频技术的电路和系统),13(7),2003年7月. B.D.O.Anderson和J.B.Moore.,Optimal ControlLinear QuadraticMethods(最佳控制线性二次公式方法),Prentice Hall,1990年. S.Keshav.,Packet-pair flow control(数据包对流控制),http//www.cs.cornell.edu/-skeshav/papers.html. P.A.Chou和Z.Miao,Rate-distortion optimized streaming of packetizedmedia(分组媒体的速率失真优化流),Microsoft Research Technical Report(微软研究技术报告)MSR-TR-2001-35,2001年2月.
权利要求
1.一种用于控制正通过计算机网络从服务器发送到客户机的流媒体数据的编码比特率的计算机实现的过程,包括执行以下各个过程动作使用线性二次方程控制技术,在进行的基础上为所述流媒体数据建立当前编码比特率,它被估算以提供所述流媒体数据的高质量重放,同时仍然保持用于从所述服务器接收流媒体数据的客户机的解码器缓冲区被填充到所需的持续时间等级,以便减少下溢情况的机会,所述下溢情况将会导致所述客户机所执行的流媒体数据的重放的中断;使用所建立的每个编码比特率来控制所述流媒体数据的速率。
2.如权利要求1所述的过程,其特征在于,建立当前编码比特率的所述过程动作包括以下各个动作在逐帧的基础上确定所述编码比特率,所述编码比特率被估算以将所述客户机缓冲区等级近似地保持在所需目标等级;以及,只有当确定所述编码比特率估算相对于最后建立的速率的更改不会超过所需程度时,才建立新的编码比特率。
3.如权利要求2所述的过程,其特征在于,所述客户机缓冲区等级是由所述流媒体数据的漏桶模型按所估算的编码比特率来确定的。
4.如权利要求3所述的过程,其特征在于,在逐帧的基础上确定被估算以将所述客户机缓冲区近似地保持在所需等级的编码比特率的所述过程动作包括识别编码比特率的动作,所述编码比特率减少考虑中的帧的估算的最近预期到达时间与规定的目标到达时间之差。
5.如权利要求4所述的过程,其特征在于,在逐帧的基础上确定被估算以所述客户机缓冲区近似地保持在所需等级的编码比特率的所述过程动作包括通过使用二次费用函数将所述编码比特率中的变化减少到规定的程度的动作。
6.如权利要求5所述的过程,其特征在于,估算考虑中的帧的最近预期到达时间的所述过程动作包括以下各个动作如果将要显示出该当前编码比特率,那么,重新估算与直接在考虑中的帧前面的帧相关联的最近预期的到达时间;以及将所述重新估算的时间加到所述当前编码比特率除以当前瞬间帧速率和帧的估算的到达速率的乘积。
7.如权利要求6所述的过程,其特征在于,重新估算与直接在考虑中的帧前面的帧相关联的最近预期到达时间的所述过程动作包括将如所述客户机所测量的所述直接前一帧的实际到达时间加到对于所述直接前一帧的服务器的编码器缓冲区的上限差距除以与所述直接前一帧相关联的估算的到达速率,其中,帧的上限差距被定义为服务器的编码器缓冲区可以在其中所包含的数据比特多于在帧被完全输入编码器缓冲区之后其中当前包含的数据比特的数目。
8.如权利要求7所述的过程,其特征在于,建立当前编码比特率的所述过程动作是由客户机来实现的,并且其中,所述客户机根据从服务器接收的关于所述编码器缓冲区的状态的信息,来估算考虑中的帧的最近预期到达时间。
9.如权利要求8所述的过程,其特征在于,从服务器接收的信息包括正被所述客户机接收的流媒体数据的当前编码比特率,它是作为显示出该编码比特率的帧序列的第一个帧的一部分被接收的。
10.如权利要求9所述的过程,其特征在于,还包括为客户机所接收的每个帧估算上限差距的动作,所述估算包括计算在最后接收到的帧被置于其中之后所述编码器缓冲区充满度值将会是什么,作为在插入最后接收到的帧之前所述编码器缓冲区充满度的最后计算的值与最后接收到的帧的大小的总和,其中,在插入与所述客户机按流媒体的当前编码比特率接收的第一个帧相关联的最后接收到的帧之前所述编码器缓冲区充满度值被假设是零,而不管其实际值如何,并且其中,在插入与所述客户机按所述当前编码比特率接收的每个随后的帧相关联的最后接收到的帧之前所述编码器缓冲区充满度值被认为要么是零,要么是在插入最后接收到的帧之后所述编码器缓冲区充满度的最后计算的值与所述编码比特率除以瞬间帧速率之差,取决于哪一个更大,其中,所述瞬间帧速率等于将要被接收的下一帧的调度重放时间减去最后接收到的帧的调度重放时间的倒数;以及计算与所述最后接收到的帧相关联的上限差距,作为所述编码器缓冲区大小减去在插入最后接收到的帧之后所述编码器缓冲区充满度的最后计算的值。
11.如权利要求10所述的过程,其特征在于,所述编码器缓冲区大小根据所述编码比特率而改变,并由所述客户机从服务器接收,作为可从服务器获得的所有编码比特率的流媒体数据的前同步信号。
12.如权利要求10所述的过程,其特征在于,只要所述客户机接收具有与所述直接前一帧不同的编码比特率的帧,就进一步包括以下各个动作将与刚刚接收到的帧相关联的当前调度目标到达时间移位一位移值,其中,所述位移值表示所述帧的上限差距与如果它按所述直接前一编码比特率来编码则将会与所述帧相关联的上限差距之差;对未来帧的当前调度目标到达时间进行移位,以使它们在一段时间内共同接近关于那些帧的先前的目标到达时间,并最后与其相符;以及将每个移位的帧移位一差值,所述差值是插入最后接收到的帧之后所述编码器缓冲区充满度值与所述当前编码比特率除以帧速率然后除以与最后接收到的帧相关联的估算的到达速率之差。
13.如权利要求12所述的过程,其特征在于,如果帧按所述直接前一编码比特率编码则将会与该帧相关联的上限差距被计算为所述编码器缓冲区大小减去在插入最后接收到的帧之后所述编码器缓冲区充满度值的最后计算的值,其中,在插入最后接收到的帧之后所述编码器缓冲区充满度值被计算为在插入最后接收到的帧之前所述编码器缓冲区充满度值的最后计算的值与该最后接收到的帧的大小的总和,并且其中,在插入最后接收到的帧之前所述编码器缓冲区充满度值被计算为要么是零,要么是在插入在最后接收到的帧之前接收的帧之后为所述编码器缓冲区充满度计算的该值与所述直接前一编码比特率除以与在最后接收到的帧之前接收的帧相关联的瞬间帧速率之差,取决于哪一个更大。
14.如权利要求8所述的过程,其特征在于,从服务器接收的信息包括正优所述客户机接收的流媒体数据的当前编码比特率,它是作为显示出该编码比特率的帧序列的第一个帧的一部分接收的;以及所述当前上限差距,它是作为每个帧的一部分接收的。
15.如权利要求8所述的过程,其特征在于,从服务器接收的信息包括正由所述客户机接收的流媒体数据的当前编码比特率,它是作为显示出该编码比特率的帧序列的第一个帧的一部分接收的;以及,与显示出所述当前编码比特率的帧序列的第一个帧相关联的当前上限差距,所述当前上限差距也是作为所述序列的第一个帧的一部分接收的。
16.如权利要求15所述的过程,其特征在于,从服务器接收的信息还包括一位移值,所述位移值是作为显示出与所述直接前一帧不同的编码比特率的帧序列的第一个帧的一部分接收的,所述位移值表示如果它按当前编码比特率编码则将会与所述客户机所接收的直接前一帧相关联的上限差距和实际上与按前一编码比特率编码的所述直接前一帧相关联的上限差距之差。
17.如权利要求16所述的过程,其特征在于,还包括以下动作只要所述客户机接收具有与所述直接前一帧不同的编码比特率的帧,就将与刚刚接收到的帧相关联的当前调度目标到达时间移位所述位移值,并对未来帧的当前调度目标到达时间进行移位,以使它们在一段时间内共同接近那些帧的先前的目标到达时间,并且最后与其相符,实现目标值的所述移位,以防止客户机试图根据老的编码比特率与新的编码比特率之间的上限差距中的移位,而不是根据帧的到达速率中的变化来建立新的编码比特率。
18.如权利要求15所述的过程,其特征在于,对于由客户机接收的、不是显示出当前编码比特率的帧序列的第一个帧的每个帧,还包括估算所述上限差距的动作。
19.如权利要求6所述的过程,其特征在于,计算所述流媒体数据的帧的估算的到达速率包括在逐个数据包的基础上计算为直接在当前接收到的数据包前面的数据包计算的估算的到达速率与第一分数加权因数的乘积,加到当前接收到的数据包的瞬间到达速率和第二分数加权因数的乘积,其中,所述分数加权因数中的至少一个分数加权因数不是常数,而是基于数据包之间的时间。
20.如权利要求5所述的过程,其特征在于,识别减少考虑中的帧的估算的最近预期的到达时间与规定的目标到达时间之差的编码比特率,同时将所述编码比特率中的变化减少到规定的程度的所述过程动作包括以下动作为考虑中的帧选择规定的目标到达时间,以便成为比该帧的调度重放时间更早的规定的时间量。
21.如权利要求20所述的过程,其特征在于,为考虑中的帧选择规定的目标到达时间的所述过程动作包括以下动作在启动时期之后,使所述规定的时间量足够大,以使可能会引起帧的实际到达时间在其目标到达时间后面的网络抖动、延迟和吞吐量变化不会导致该帧在其调度重放时间之后到达。
22.如权利要求21所述的过程,其特征在于,为考虑中的帧选择规定的目标到达时间的所述过程动作还包括,在启动期间,使所述目标到达时间比在该时期期间以后到达的那些帧更接近所述重放时间,以帮助减少当流媒体数据开始由客户机接收时与当第一个帧被重放时之间的启动延迟。
23.如权利要求22所述的过程,其特征在于,为考虑中的帧选择规定的目标到达时间的所述过程动作还包括使用对数目标时间表来为所述流媒体的每个帧设置目标到达时间。
24.如权利要求22所述的过程,其特征在于,为考虑中的帧选择规定的目标到达时间的所述过程动作还包括使用两段线性目标时间表来为所述流媒体的每个帧设置目标到达时间,其中,所述目标到达时间与在启动期间到达的帧的重放时间之差线性地增加到规定的时间量,所述规定的时间量足够大,以解决所述网络抖动、延迟和吞吐量变化,在变化之后,该差基本上保持恒定。
25.如权利要求22所述的过程,其特征在于,还包括减少所述启动延迟的过程动作,所述减少动作包括当客户机的解码器缓冲区在其中具有最小数据量时就开始重放所述流媒体数据的第一个帧,所述最小数据量是确保下溢情况不会按初始编码比特率发生所需的。
26.如权利要求25所述的过程,其特征在于,当客户机的解码器缓冲区在其中具有最小数据量时就开始重放所述流媒体数据的第一个帧的所述过程动作包括以下各个动作获得与所述第一个帧相关联的初始编码器缓冲区充满度值,其中,所述初始编码缓冲区充满度值被定义为所述编码器缓冲区的大小减去所述第一个帧的大小并减去与所述第一个帧相关联的上限差距;将所述最小数据量建立为与所述初始编码比特率相关联的编码器缓冲区大小减去初始编码器缓冲区充满度。
27.如权利要求26所述的过程,其特征在于,所述初始编码比特率、初始编码器缓冲区充满度和编码器缓冲区大小是从所述服务器接收的,作为对所述流媒体数据的前同步信号。
28.如权利要求26所述的过程,其特征在于,减少启动延迟的所述过程动作还包括将所述初始编码比特率设置为比客户机处的流媒体数据的预期到达速率更小的等级,因为随着所述到达速率相对于所述编码比特率的提高,所述最小数据量会减少,并且,所述启动延迟实质上是所述最小数据量除以所述到达速率,所以,如果所述编码比特率小于所述到达速率,那么,所要求的最小数据量可以更小,并且,所述启动延迟可以更少。
29.如权利要求5所述的过程,其特征在于,建立当前编码比特率的所述过程动作包括只在启动时期之后启动编码比特率的建立的动作,其中,所述启动时期被定义为在为所述初始编码比特率计算的考虑中的帧的估算的最近的到达时间的第一个实例之前的那段时期,它早于该帧的目标到达时间。
30.如权利要求5所述的过程,其特征在于,所述编码比特率中的变化被减少到的规定程度根据所述编码比特率是否提高而改变,在此情况下,与所述编码比特率中的最后变化降低所述速率的情况下的规定程度相比,使所述编码比特率中的任何将来变化被减少到的规定程度更大。
31.如权利要求3所述的过程,其特征在于,为流媒体数据建立当前编码比特率的所述过程动作包括在所确定的编码比特率表示从直接前一编码比特率增加的情况下,只有当所述新速率不超过帧的当前估算的到达速率的时候,才建立新的编码比特率。
32.如权利要求3所述的过程,其特征在于,为流媒体数据建立当前编码比特率的所述过程动作包括在所确定的编码比特率表示从超过帧的当前估算的到达速率的直接前一编码比特率增加的情况下,只有当所述当前客户机缓冲区超过所需等级达一个数量的时候,才建立新的编码比特率,所述客户机估算在规定时期过去之前,该数量将不会按较高的编码比特率来花费。
33.如权利要求3所述的过程,其特征在于,为流媒体数据建立当前编码比特率的所述过程动作包括在所确定的编码比特率表示从直接前一编码比特率减少的情况下,即使新的编码比特率表示与所述直接前一编码比特率的重大偏差,也建立新的编码比特率。
34.一种用于控制正通过计算机网络从服务器发送到客户机的流媒体数据的编码比特率的计算机实现的过程,包括使用所述服务器来执行以下各个过程动作生成流媒体数据,它显示出所述服务器所支持的编码比特率,并且,在初始启动时期之后,它显示出与客户机所请求的速率有关的编码比特率;计算指示所述服务器的编码器缓冲区的状态的参数,所述编码器缓冲区用于在对客户机的传输之前暂存所述流媒体数据的各个部分;以及为客户机提供所述编码器缓冲区状态参数和所述流媒体数据流,由此,所述参数可以被客户机用来在进行的基础上为所述流媒体数据建立当前编码比特率,它被估算以提供所述流媒体数据的高质量重放,同时仍然保持用来从服务器接收流媒体数据的客户机的解码器缓冲区被填充到所需的持续时间等级,以便减少下溢情况的机会,所述下溢条件将会导致所述客户机执行的流媒体数据的重放的中断。
35.如权利要求34所述的过程,其特征在于,计算指示编码器缓冲区的状态的参数的所述过程动作包括以下动作对所述服务器所支持的每个编码比特率,计算定义所述编码器缓冲区的初始状态的一组参数,因为如果数据流对应于从中流传送的编码比特率,则它将会存在,其中,所述编码器缓冲区参数包括与所述数据流相关联的编码比特率、用于所述数据流的编码比特率的编码器缓冲区大小、以及指示按所述数据流的编码比特率展示的初始编码器缓冲区充满度的值。
36.如权利要求35所述的过程,其特征在于,为客户机提供所述编码器缓冲区状态参数和所述流媒体数据流的所述过程动作包括以下动作为客户机提供为显示出所支持的编码比特率之一的每个数据流计算的编码器缓冲区参数,作为在发送所述流媒体数据之前被发送到所述客户机的前同步信号的一部分。
37.如权利要求35所述的过程,其特征在于,选择用于所述数据流的编码比特率的编码器缓冲区大小,以便成为最小尺寸缓冲区,给定所述编码比特率和所述初始编码器缓冲区充满度,所述最小尺寸缓冲区将仍然在流传送过程中的任何点处包含所述数据流。
38.如权利要求35所述的过程,其特征在于,还包括以下过程动作所述服务器为所述流媒体数据的每个帧计算上限差距,所述流媒体数据是为所述服务器所支持的每个编码比特率而生成的,其中,所述上限差距被定义为所述服务器编码器缓冲区能够包含的数据比特多于在刚刚生成的帧被完全输入所述编码器缓冲区之后其中当前所包含的数据比特的数量。
39.如权利要求38所述的过程,其特征在于,还包括以下过程动作为所述客户机提供为显示出编码比特率的帧序列的第一个帧计算的上限差距以及与所述帧序列相关联的编码比特率的指示,所述编码比特率不同于与直接在所述帧序列的第一个帧之前生成的帧相关联的编码比特率,所述差距值和编码比特率与所述序列的第一个帧一起提供。
40.如权利要求39所述的过程,其特征在于,所述客户机估算所述服务器所提供的帧的上限差距,这些帧不包括相关联的差距值。
41.如权利要求40所述的过程,其特征在于,所述客户机使用所述编码器缓冲区参数和所述上限差距值在逐帧的基础上确定编码比特率,所述编码比特率将客户机缓冲区近似地保持在所需等级,所述确定包括识别减少考虑中的帧的估算的最近预期到达时间与规定的目标到达时间之差的编码比特率。
42.如权利要求39所述的过程,其特征在于,还包括以下各个过程动作所述服务器为表示显示出一编码比特率的帧序列的第一个帧的每个帧计算位移值,所述编码比特率不同于直接在所述序列的第一个帧之前生成的帧,所述位移值表示如果按当前编码比特率编码则将会与直接在所述序列的第一个帧之前生成的帧相关联的上限差距和实际上与直接在按前一编码比特率编码的序列的第一个帧之前生成的帧相关联的上限差距之差;以及为客户机提供为显示出一编码比特率的每个帧序列的第一个帧计算的位移值以及构成所述第一个帧的数据,所述编码比特率不同于直接在所述序列的第一个帧之前生成的帧。
43.如权利要求42所述的过程,其特征在于,只要为客户机提供具有与直接前一帧不同的编码比特率的帧,与刚刚接收到的帧相关联的当前调度的目标到达时间都被移位与刚刚接收到的帧一起提供的位移值,并且,对未来帧的当前调度的目标到达时间进行移位,以使它们在一段时间内共同接近那些帧的先前的目标到达时间并最后与其相符。
44.如权利要求38所述的过程,其特征在于,所述服务器支持有限数量的编码比特率,并且其中,生成显示出所述服务器所支持的编码比特率,并且在初始启动时期之后显示出与客户机所请求的速率有关的编码比特率的流媒体数据流的所述过程动作包括以下各个动作(a)从所述客户机接收编码比特率请求;(b)找出所支持的编码比特率,所支持的编码比特率等于所请求的编码比特率,或者如果没有一个相等,则是最接近于所请求的编码比特率的较小速率;(c)只要找出是比与所述流媒体数据的最后生成的帧相关联的编码比特率更低的速率的所支持的编码比特率,就按该支持的速率来生成所有未来帧;以及(d)只要找出是比与所述流媒体数据的最后生成的帧相关联的编码比特率更高的速率的所支持的编码比特率,就确定如果按所找出的所支持的编码比特率编码则与最后生成的帧相关联的上限差距和与按所述当前编码比特率编码的帧相关联的上限差距之差是小于还是等于最大允许差值,只要该差小于最大允许差值,就按所找出的所支持的速率来生成所有未来帧,以及只要该差不小于最大允许差值,就找出下一个较低的所支持的编码比特率,并重复动作(c)-(d)。
45.如权利要求44所述的过程,其特征在于,所述最大允许差值是连同所述编码比特率请求一起从客户机那里接收的。
46.如权利要求45所述的过程,其特征在于,所述客户机选择所述最大允许差值,以使如果按所请求的编码比特率编码则与所述服务器直接在客户机所考虑的帧之前提供的帧相关联的最近预期到达时间只是从该帧的目标到达时间到其重放截止时间的路途的规定分数。
全文摘要
呈现了一种用于控制流媒体数据的编码比特率的系统和过程。该编码比特率控制涉及动态地调整编码比特率,来控制客户机缓冲区持续时间,以防止缓冲区下溢,同时,将平均编码比特率保持接近于网络的平均传输比特率(这样,使数据重放质量最大化)。通过使用最优线性二次方程控制理论,客户机缓冲区持续时间被保持尽可能接近于目标级,同时,仍然保持编码比特率(因而质量)尽可能恒定。此外,漏桶模型被并入控制回路,以使因瞬间编码比特率中的自然变更而产生的缓冲区持续时间中的这些变化不会被误认为是因网络拥塞而产生的缓冲区持续时间中的变化。
文档编号H04L1/00GK1787422SQ20051012018
公开日2006年6月14日 申请日期2005年11月11日 优先权日2004年12月10日
发明者A·E·克莱梅特斯, 黄诚, P·A·舒 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1