摘 要:基于校园无线网络环境,研究了流媒体视频码率自适应技术。利用分布式实时转码系统保证直播流视频转码的实时性,并根据校园无线网用户的特殊性,研究了首次接入视频码率选择策略,以减少码率切换次数。实验证明,这种方案在无线网络环境发生变化时,保证了视频播放的流畅性,为用户提供了友好的体验。
关键词:流媒体;码率自适应;无线网络;RTP;转码
随着GPRS和WiFi无线网络的迅速发展,智能终端在线点播直播视频业务越来越多。面对复杂的用户和移动环境,对于视频点播而言,需要一定的服务质量保证策略,以保证不稳定无线网络环境下用户的友好体验。
本文通过终端网络状况反馈、分布式实时转码技术和动态码率自适应技术,解决终端所处无线网络环境发生变化时,终端视频收看体验下降的问题。当无线网络状况发生变化时,终端将网络状况参数反馈给流媒体服务器,服务器根据反馈进行处理,动态调整流视频码率。
1 终端网络状况反馈方案
实时传输协议RTP(Real-time Transport Protocol)[1]用于传输数字音频和数字视频等多媒体数据,本身并不提供任何保证数据传输的可靠、有序和实时,也不提供其他途径保证服务质量,这些工作都依赖于RTCP(Real-time Transport Control Protocol)协议来完成。
RTCP[2]协议为RTP提供关于媒体传输以及媒体源的信息,如数据传输延迟、丢包率、抖动等相关信息,以用于RTP协议的交互控制。RTCP控制包分为SR、RR、SDFS、BYE等。
RR包中包含了接收的包数、上个报文间隔期间接收的包数、丢失包的总数、包丢失率、平均延迟、延迟抖动等消息;SR包中包含了包发出时的时间标签、发送的总包数、发送的总字节数等信息。这些信息构成了制定控制策略的依据。
所以,终端使用RTCP协议反馈RTP数据包的丢失率、传输抖动等消息,服务器根据收到的RTCP RR包,进行分析处理后动态地切换视频码率。
2 终端流视频码率自适应方案
流媒体视频码率自适应[3]调整是一种反馈控制技术。它在服务器端和接收端之间建立一条反馈通道,通过实时监测终端网络带宽和丢包率来实时监测终端网络状况,根据当前可用网络带宽和丢包率大小来估计终端网络的实际状况,并据此动态调整服务器端发送视频码率的大小。
2.1 首次接入码率选择方案
流视频文件切换的代价是巨大的,不仅消耗网络资源,而且占用移动终端的处理能力,所以选择一个合适的首次接入码率传输非常重要。根据首次接入终端的网络类型、当前无线网络带宽、当前接入用户数量、终端的处理能力等,选择合适的码率视频文件,减少传输过程中码率切换的次数。
考虑到高校学生接入无线网具有阶段集中的特性,根据校园无线网络接入终端的数量或无线网流量的大小,设置合适的首次接入码率,然后结合刚接入无线网络状况预测进行上下微调整,从而减少码率切换次数,保证终端视频播放的流畅度。
2.2 流媒体服务器码率切换方案
流媒体服务器可以根据自适应码率控制算法[4]选择不同的流视频传输码率[5]。例如,在实现中对包丢失率定义若干阈值,a:4%,b:8%,c:10%,d:12%;当包丢失率处于(a,b](某个数值范围)时,切换选择文件库中相应码率的流视频。这样需要同一视频文件,有不同码率等级的版本,对于电视直播流,也有不同码率等级的文件。
本方案通过分布式实时转码系统,保证了点播和直播流视频文件的实时提供,实现了从50 kb/s~300 kb/s的6个递增的码率等级。
2.2.1 分布式实时转码系统
针对满足各终端环境对视频转码工作的高要求,提出了基于Hadoop的使用实时调度策略的分布式转码方案,使用mapreduce编程框架和mencoder进行分布式转码,达到严格控制转码完成时间的目的。
(1)文件切割接口:cut fileName fileTime playTime
Cut是流视频文件切割脚本,fileName表示要处理的流视频文件,fileTime表示要处理的流视频文件的总播放时间,playTime表示要切割成的每段流视频的播放时间。
(2)文件转码接口:transcode fileName 参数1,参数2,…,参数n
Transcode表示本地转码脚本,fileName表示要转码的文件名,参数表示对流视频文件码率等转码参数的设置。
当流视频文件切割处理结束后,系统主节点就会将各流视频段分发到各子节点,各子节点根据设定的参数调用转码脚本进行转码,最后存储到流媒体服务器。
2.2.2 转码方案
源视频分为点播流视频和电视直播流视频。
(1)点播流视频转码:在离线状态下,通过转码系统预先压缩一系列码率(50 kb/s~300 kb/s)不等的流视频文件存储在服务器端。
(2)电视直播流视频转码:因为电视直播流视频需要实时传输,这就需要转码系统进行实时转码。系统实时地从视频源获得一定播放长度的直播流视频段,调用转码服务器系统转成一系列码率不等的流视频文件,暂时存放在流媒体服务器。服务器根据码率切换方案进行调整。
2.2.3 码率调节策略
当估计到终端网络丢包率突然上升、网络出现拥塞时,降低服务器端发送视频文件的码率,保证用户收看视频的流畅度。在实现中,当丢包率突然上升时,将发送的视频文件降低2个码率级别,因为丢包率突然上升表明网络环境恶化,很大程度上影响终端的正常播放。
当丢包率下降时,延迟调整码率,待丢包率趋于平稳后,再调高码率级别,以消去短时间内丢包波动的情况。
3 终端视频码率自适应系统实现
根据实现的功能不同,整个系统可以划分为分布式实时转码服务器、流媒体服务器和移动终端三个部分,如图1所示。
3.1 分布式实时调度转码服务器
分布式实时调度转码系统主要将点播文件和电视直播源信号转换成列码一系列码率不等的流视频文件存储在流媒体服务器。
3.2 流媒体服务器
流媒体服务器主要由以下4个模块组成:
(1)首次接入码率选择模块:根据首次接入终端的网络类型、当前无线网络带宽、当前接入用户数量、终端的处理能力等,选择合适的码率流视频文件,生成相应的RTSP点播或者直播URL路径,提供给终端。
(2)终端网络状况反馈处理模块:主要是根据终端反馈回来的RTCP RR数据包,获取丢包率、网络带宽等信息来估计当前的网络状况,作为码率切换模块调整的依据。
(3)码率切换模块:通过预测得到的下一时刻丢包率、网络带宽等超过了切换门限值,就结束当前码率的视频传输,切换到文件库中合适码率的视频文件。
(4)RTSP传输模块:该模块主要将封装好的RTP数据包发送给客户端。
3.3 移动终端
移动终端主要由RTSP接收模块、RTCP网络状况反馈模块和视频显示模块三部分组成。
(1)RTSP接收模块:该模块通过RTSP协议接收服务器端发送的RTP数据包,送给终端解码器进行解码。
(2)RTCP网络状况反馈模块:移动终端通过RTCP RR包将丢失包的总数、包丢失率、平均延迟、延迟抖动等消息发送给流媒体服务器,用来描述当前终端的网络状况。
(3)视频显示[6]模块:移动终端通过解码器解码,播放视频。
4 实验测试分析
4.1 实验环境
分布式实时转码系统环境:分割服务器、Hadoop集群;流媒体服务器环境:ubuntu系统,dss达尔文开源流媒体服务器软件;测试终端:1台小米1s手机、1台联想笔记本电脑;电视直播源:机顶盒设备。
整个测试过程,系统运转良好,分布式实时转码系统很好地保证了直播流视频数据的实时提供,流媒体服务器监听用户终端请求,及时响应和提供视频传输,并实时监测用户终端网络状况反馈,动态调整视频码率,保证了用户友好的收看体验。
在无线网络不稳定、易受到干扰的情况下,研究了码率自适应技术以提高用户的收看体验。通过首次接入码率选择方案,减少了观看过程中码率切换的次数,有效地节省了资源。分布式实时转码系统解决了转码的需求,并保证了电视直播视频转码的实时性。在视频码率切换模块中,服务器使用阈值比较方案选择下一时刻传输的视频码率。这种方案考虑因素比较单一,精度不准确,下一步工作会改进选择方案,增加计算网络状况的因子,以使码率切换方案更加准确,使终端观看体验更加友好。
参考文献
[1] 孙松源,吴建国.基于RTP和Android的视频传输的研究实现方法[J].电脑知识与技术,2012,8(4):903-905,914.
[2] 李校林,刘海波.RTP/RTCP、RTSP在无线视频监控系统中设计与实现[C].2011年第十三届全国消费电子技术年会,2011.
[3] 杨琛,白波.实时视频流自适应码流控制研究[J].计算机技术与应用进展,2008(7):445-447.
[4] 左东红.面向TCP的流媒体传输编码码率自适应算法[J].中国图象图形学报,2011,16(4):510-515.
[5] 王瑞,刘宝成.一种适用于H.264/AVC的自适应码率控制算法[J].电子技术研发,2011,38(6):15-18.
[6] VUN N,OOI Y H.Implementation of an Android phone based video streamer[C].2010 IEEE/ACM International Conference on Green Computing and Communications,2010.