RTCP在流媒体传输中的算法应用研究
2010-06-13谢文辉郑胜林谭建斌
谢文辉,郑胜林,谭建斌
(广东工业大学信息工程学院数字图像技术研究所,广州510006)
1 引言
流媒体的传输是建立在四层的UDP协议之上的,所以在标准的内核协议层上,所传输的视频流无法得到有效的拥塞控制,这样在应用层就需要考虑采用一种有效的拥塞控制算法来增强视频流对网络环境的适应能力。RTCP(Real-time Transport Control Protocol)协议正是配合 RTP(Real-time Transport Protocol)协议共同完成对实时数据的传输与控制。对RTP/RTCP协议在拥塞控制领域的研究,有助于解决流媒体传输中的拥塞问题,提高流媒体的传输质量[1-2]。
2 传统反馈算法
传统反馈算法主要由服务器端和客户端两个部分的算法组合而成。文中用到的一些标记的含义如下:Ploss为服务器端发送到客户端接收到之后的丢包率;InitialRate为服务器端的初始发送速率;MaxRate为服务器端所限制的最大发送速率;MinRate为服务器端的最小发送速率;α为线性增量因子;β为乘性减少因子;Pthreshold为丢包率门限。
服务器端:
·开始输出码率r = InitialRate;
·根据所收到的RTCP包中所包含的丢包率Ploss来动态调节输出码率r:
if(Ploss<=Pthreshold)
r=MIN{(r+α),MaxRate}
else
r=MAX{(β×r),MinRate}
客户端:
·对到达的RTP 包头的序列号进行跟踪;
·当接收到Nr个包后或是一段时间后就发送一个包含了本次统计值Ploss的RTCP包。
上面的算法只是当丢包率较少时就使用一个固定的加性增长因子来适应网络的带宽,当丢包率较大时就使用乘性因子来减少码流,以减少网络的丢包率。但是由于丢包率没有做任何的平滑功能,所以输出的码率也会有很大的抖动。而且由于网络环境的不断改变,预先设置的α、β两个值也不会是最佳值,码率和传输的带宽不能很快的相适应。因此在传统算法中存在的这些问题就有必要对其进行相应的修改。
3 改进算法
从传统控制算法的缺点可以看出Ploss值的不稳定性是带来输出码率抖动的一个原因,所以在客户端首先需要对Ploss值进行平滑滤波:假设Pnew是最新的丢包率,ξ是一个待调整的参数。
Ploss=(1-ξ)×Ploss+Pnew×ξ
在上面对Ploss进行低通滤波之后,可以根据实时的Ploss来做如下处理:假设 Ploss_max和 Ploss_min分别是丢包率的上下门限值。
在网络阻塞时如下:
r=MAX{(β×r),MinRate}
在网络空闲时:
r=MIN{(r+α),MaxRate}
在网络负载均衡时:
r=r
而在网络阻塞和网络空闲时对α、β分别进行如下处理:
假设α_vec是一个包含了5个值的向量,β_vec也是一个包含了5个值的向量,里面的5个值都是按照时间轴的先后来存放的,这5个值的权重因子如下[Wt]T={0.1,0.1,0.2,0.2,0.4};最终的 α、β值都是由时间轴上最近的5个值通过[Wt]这个权重因子加权得到的。对网络阻塞(Ploss>Ploss_max):
此时的Ploss-Ploss_max反映了网络的堵塞情况。假设m=Ploss-Ploss_max,而线性增量因子使用平稳增长因子来代替,每次α、β的值由下式得出:
α =(1 -e-0.5×(1-m))(其中0.5 为修正因子)
β=β×(1-m)
网络空闲(Ploss<Ploss_min):
同样采用m=Ploss_min-Ploss来反映出网络的空闲度,线性增长因子和乘性因子如下公式改变:
α =(1 -e-0.5×m)(其中0.5 为修正因子)
4 测试模型及结果分析
测试模型如图1所示。
测试环境是在一个广域网环境中,客户端(C)负责实时统计RTP包,并在指定的Nr(100)个包之后发送一个包含Ploss的RTCP包给服务器端(S),测试的时间选择在晚上8:00~10:00之间的网络使用高峰期,每20分钟记录一次丢包率,经过多次测试选择的最小丢包阈值和最大丢包阈值分别为0.053及0.921,在此参数下测试的丢包率如图2所示。
红色点连线就是使用优化算法后的丢包率,而蓝色点连线就是传统算法下的视频丢包率。从实验数据的统计结果表明,改进后的RTCP控制算法能够更有效的对实时视频流丢包情况进行控制。
5 结束语
RTCP协议是实时数据流在端到端传输过程中的重要控制协议,本算法针对传统算法中存在的两个重要缺陷进行优化,实验表明该算法能够有效降低实时流端到端的抖动,从而提高视频流传输过程中的QOS。
[1]Uyless Black.因特网高级技术[M].北京:电子工业出版社,2001.
[2]章程,李建华.实时视频传输的反馈拥塞控制策略[J].计算机工程,2002,28(2):56 -58.
[3]陈志军,封筠,王满顺,等.流媒体技术及应用[J].河北工业科技,2003,20(4):48 -51.
[4]赵薇,高春,马跃,吴文江.通用RTP算法的研究与设计[J].小型微型计算机系统,2008,29(5):980 -984.
[5]尹洪,洪玫,曾明,冷江,王卓.基于RTCP的实时流式传输拥塞控制算法[J].云南大学学报(自然科学版),2008,30(S2):235 -240.
[6]张晓,胡维华,徐小良.基于RTCP的移动流媒体研究[J].计算机仿真,2009,26(5):169 -172.
[7]李红艳.基于互联网的实时应用网络通信的研究[C].全国第16届计算机科学与技术应用学术会议,合肥:中国计算机学会,2004.
[7]杨宏.流媒体数据的存储和传输技术研究[D].武汉:武汉大学,2003.