MPEG-4实时视频传输的拥塞控制算法的改进*
2010-09-29刘国柱王洪林
刘国柱,王洪林
(青岛科技大学 信息科学与技术学院,山东 青岛 266061)
数字图像压缩技术就是通过一定的压缩算法,将模拟信号转换为数字信号,这样能够非常有效地降低图像所占用的存储空间[1]。目前,一些组织机构已推出了不少的数字图像压缩标准,如 H.261、H.263、H.263+、MPEG-1、MPEG-2、MPEG-4 等[2]。 其中,MPEG-4 标准于1999年初正式成为国际标准,该标准注重多媒体系统的交互性和灵活性,是第一个使用户可在接收端对画面进行操作和交互访问的编码标准[3],被广泛地应用于视频监控、视频会议等领域中。在这些使用实时视频编码与传输的领域中,不仅涉及到了编码标准,更重要的是涉及到了码率控制。码率控制就是在图像压缩编码过程中,编码器可以实时地根据网络传输信道的情况来调整编码参数,以生成适合当前网络传输的视频流[4]。这样可以使视频在通道内传输时充分利用带宽,也就是在带宽已有条件下传输信号时,既不阻塞也不浪费带宽。目前,基于MPEG-4标准的码率控制算法有很多,其中比较经典的码率控制算法为VM8算法[5]。基于编码器缓冲区水位从某些程度上表征了网络传输信道的情况这一事实,该算法以编码器缓冲区水位状况来自适应调整编码参数。图1是典型的基于MPEG-4编码标准和VM8算法的实时视频编码和传输架构。
在实时视频的传输过程中,由于涉及到了流媒体的发送和接收,所以必须采用流媒体传输协议对传输进行控制。RTP协议是流媒体传输常用的协议,但是由于RTP协议是建立在不进行任何拥塞控制的UDP协议基础上[6],因此需要在应用层上加入拥塞控制算法。
图1 MPEG-4和VM8算法的实时视频编码和传输架构
RTP控制协议RTCP会向RTP会话中的成员周期性地发送丢包率等信息[7],这些反馈信息就是被用作拥塞控制的。近几年来,越来越多的拥塞控制算法相继被提出,其中行之有效的一些算法是:基于丢包率和双丢包率阈值门限的[8-10]。其大体思想是:设定丢包率下阈值和上阈值,当丢包率没有超过丢包率下阈值时,增加发送速率;当丢包率超过丢包率上阈值时,减少发送速率;当丢包率介于丢包率上、下阈值之间时,发送速率保持不变。此类算法的关键是如何设定速率变化的幅度,以减少流的抖动,提高流的平稳特性。
本文对VM8码率控制算法进行必要的剖析,然后在基于上述拥塞控制机制的基础上对VM8机制进行改进。实验证明,改进后的算法能够使接收端的视频播放更加的清晰流畅,视觉效果更好。
1 VM8码率控制算法
VM8码率控制算法大体可分为4个阶段[11]:初始化阶段、预编码阶段、编码阶段和后处理阶段。由于后两个阶段与本文主题没有太大关联,本文仅对前两个阶段做详细的分析。
1.1 初始化阶段
在初始化阶段,编码器主要完成一些与码率控制相关的准备工作:(1)采用初始量化参数(典型的Qt=15)编码第1个I帧。(2)从总位数减去第1个 I帧的编码位数,得到这个视频序列所剩余的位数P0。
(3)将编码器缓冲区初始化到半满状态。
1.2 预编码阶段
预编码阶段主要完成当前帧的目标位数的计算,并通过计算得到的目标位数来得到在编码阶段中会使用到的量化参数。
(1)对目标位数进行初步估计。设t+1时刻的P帧的目标位数的估计值为Bt1,则可通过下面的式子得到初步的估计值:
(2)为了使编码器缓冲区的水位趋向于50%,对初步目标位数Bt1进行调整:
式中,Ft是t时刻缓冲区的填充容量,γ是缓冲区容量。
(3)为了保证使每帧图像获得恒定的质量,编码器还必须保证每帧有1个最小的目标位数C(这个值是由C=得到的,P是所有 P帧的可用位数,N是 P帧的个0数),所以通过下式进行判断得到Bt3:
(4)最后的调整是查看Bt3对编码器缓冲区饱和度的影响。为了避免缓冲区的上溢和下溢,为缓冲区设置一个安全边界值m。如果Bt3+Ft>(1-m)×γ,那么为了避免缓冲区上溢,调整目标位数为 Bt4=(1-m)×γ-Ft;如果 Bt3+Ft-C (5)根据Bt5计算得到量化参数。 从对VM8算法的分析可以看出,在预编码阶段进行的目标位数的调整过程中,仅仅是考虑到了编码器缓冲区的填充状态,但是缓冲区的填充状态仅仅代表了当前和过去的网络传输的状态,无法预测未来的传输状态,这种缺乏预测性的做法,会影响到编码的图像质量。下面将在基于丢包率和双丢包率阈值门限的拥塞控制算法的基础上,通过当前丢包率和丢包率阈值对未来的发送速率进行预测,在计算目标位数时,参考前面的预测结果,来调整目标位数,以此来完成对VM8算法的改进。 通过当前丢包率(设为 Ploss),丢包率下阈值(设为Ploss_min)和丢包率上阈值(Ploss_max)对未来的发送速率的变化做出预测,分为3种状态。 (1)Ploss 这种状态下,传输信道可视为处于“轻载”状态,未来一段时间内,发送速率会持续增加。 (2)Ploss_min≤Ploss 这种状态下,传输信道可视为处于“满载”状态,未来一段时间内,发送速率将保持稳定,不再发生变化。 (3)Ploss≥Ploss_max 这种状态下,传输信道可视为处于“阻塞”状态,未来一段时间内,发送速率会持续下降。 基于上述的几种情况对VM8算法在预编码阶段进行改进。改进的切入点是预编码阶段的第(2)步:即对Bt1得到Bt2的算法进行改进。 原算法在该步骤的做法是:固定地采用0.5作为缓冲区目标水位参数。而改进后的算法会根据2.2节分析得到的对未来发送速率预测的3种状态,动态地决定缓冲区目标水位参数。该步骤改进后的算法如下: (1)首先通过当前丢包率和丢包率阈值得出未来发送速率的属于2.2节中的哪种状态。 (2)由不同的状态得到不同的水位参数。设第i种状态对应的参数为 βi(i=1,2,3),下面对每种状态对应的水位参数进行分析。 在状态1下,发送速率将持续增加,编码器缓冲区读取速度会持续增长,不太可能发生缓冲区上溢,因此可以设定大于0.5的水位参数。 在状态2下,由于发送速率不再变化,因此可设置等于0.5的水位参数。 在状态3下,由于发送速率会下降,编码器缓冲区读取速度会持续降低,为了避免有可能发生的缓冲区上溢,因此有必要设置小于0.5的水位参数。 由上面的分析得出:1>β1>0.5=β2>β3>0。 (3)根据水位参数进行目标位数的调整,使目标位数向水位参数表示的水位处趋近。一共可分为3种情况: ①若 Bt1+Ft>βi×γ,则 Bt2=Bt1-θR(Bt1+Ft-βi×γ); ②若 Bt1+Ft=βi×γ,则 Bt2=Bt1; ③若 Bt1+Ft<βi×γ,则 Bt2=Bt1+θA(Bt1+Ft-βi×γ)。 其中,Ft是 t时刻缓冲区的填充容量,γ是缓冲区容量,θR是增长因子,θA缩小因子。本文中,θR和 θA均取值为 1/2,水位参数 β1、β2、β3分别取值:0.6、0.5、0.4。 通过上面的算法调整,可以清楚地看出:当预测发送速率会增长的时候,算法将不再会以0.5作为缓冲区目标水位参数,而是取大于0.5的值作为缓冲区目标水位参数。这样,当前帧将获得更多的位数用来存放编码信息,图像质量自然地得到了提高。当预测发送速率会持续降低的时候,取小于0.5的值作为缓冲区目标水位参数。这样,能够有效地避免由于发送速率下降造成的缓冲区水位上升,乃至临迫近上安全边界,这样可以避免VM8算法在预编码阶段第(4)步中对目标位数的削减,从而避免了图像质量的下降。 为了验证改进后的VM8码率控制算法能够提高图像的质量,通过一些实验来进行测试。使用2台电脑进行实验:1台是作为发送端,负责视频的编码和发送;另1台作为接收端,负责视频的接收和回放。2台电脑的网络带宽均为1 Mb/s。为了使实验有可重复性,视频源不采用动态采集方式,而是采用已经采集好的视频文件来模拟视频采集,视频长度是 2 min,包含 3 482个 VOP。视频传输拥塞控制机制采用参考文献[8]提出的算法,算法中的丢包率下阈值采用2%,丢包率上阈值采用3%。此外,VM8原始算法和改进的算法在初始化阶段中的初始量化参数均取典型值Qt=15。设定不同的编码器缓冲区大小,多次实验后结果如表1所示。 表1 实验结果比较 表中的“目标位数的削减次数”指的是在预编码阶段由于当前帧临迫近上安全边界,为了避免缓冲区溢出而对目标位数做出消减的次数,此操作会降低编码后的图像质量。 从实验结果可以看出,编码区缓冲区越小,改进后的VM8算法效果越明显。 本文介绍了基于MPEG-4编码标准和VM8算法的实时视频编码和传输架构,对VM8码率控制算法作了必要的剖析,并针对该机制仅仅基于编码区缓冲,缺乏对未来传输状态进行预测的缺点,做了相应的改进。最后通过实验证明,改进后的VM8算法能够提高编码后的图像质量。由于本文改进的算法是建立在基于丢包率和双丢包率阈值门限的拥塞控制算法地基础上的,因此不可避免地有一定的局限性。今后将就如何突破不同拥塞控制算法的局限进行研究,得到应用更加广泛的码率控制算法。 [1]周慧灿.数字视频的网络传输关键技术研究[D].长沙:湖南大学,2004. [2]张静,张春田.视频传输中的码率控制技术[J].电路与系统学报,2005,10(3):104. [3]毕厚杰.新一代视频压缩编码标准-H.264/AVC[M].北京:人民邮电出版社,2006. [4]高奎.实时流媒体系统若干关键技术的研究[D].北京:中国科学院研究生院,2005. [5]MA, S, WEN G, YAN L.Rate-distortion analysis for H.264/AVC video coding and its application to rate control[J].Circuits and Systems for Video Technology,IEEE Transactions on,2005,15(12):1533. [6]STEVENSW R.TCP/IP详解,卷 1[M].北京:机械工业出版社,2006:107. [7]SCHULZRINNE H, CASNER S.RTP:A transport protocol for real-time applications[EB/OL].[2009-08-15].http://www.ietf.org/rfc/rfc1889.txt. [8]高东日,魏海平,姜东.网络自适应传输控制策略研究[J].计算机工程,2006,32(22):141-143. [9]王继先.视频传输控制方法的研究(基于 RTP)[D].北京:电子科技大学,2004:24-25 [10]严德汗.城域网数字视频监控系统设计实现及其自适应传输控制策略研究[D].武汉:华中科技大学,2004:29-34. [11]孙哲.基于MPEG-4的运动估计和码率控制技术的研究[D].北京:电子科技大学,2005:35-39.2 VM8码率控制机制的改进
2.1 问题的提出
2.2 发送速率变化的预测
2.3 算法改进
3 实验验证