卢 静,李 华
(河南工程学院 计算机科学与工程系,河南 郑州 451191)
随着计算机网络和视频压缩技术的快速发展,多媒体技术的研究和应用越来越多地受到重视.由于多媒体技术拥有的数据量大、对实时性要求比较强的特点,导致在IP网络中传输时,其QoS难以得到保证.因此,如何在有限的带宽上提高多媒体信息的传输质量成为人们研究的重点.由于传统网络层协议和传输层协议(如TCP/IP、UDP等)的设计初衷是用来传输非实时数据的,大多数设计决策都没有考虑网络上的延时、带宽和跳变等问题.这种策略导致在目前的网络上,传统网络协议不能很好地处理多媒体数据的传输.为了解决上述问题,本文提出了一种基于RTP/RTCP协议的实时视频流网络带宽自适应传输算法.一般的网络带宽自适应传输算法[1,2]只是在传统的AMD算法的基础上,对增加因子和减小因子做定性的改变,从而动态调整码流的发送速率.本文的算法则是根据网络的不同状态动态确定增加因子和减小因子的值.实验表明,该算法的引入可以有效地提高视频流在传输过程中的QoS.
RTP/RTCP(Real-time Transport Protocol/Real-time Transport Control Protocol)是由IETF基于多媒体传输的特殊需求而定义的用于在互联网上传输实时数据的一套标准协议,在承载多媒体流的运行环境下,RTP/RTCP可以提供给应用层相当大自由度的多媒体流控制空间和方式.RTP/RTCP运行在UDP协议层之上,分为RTP数据部分和RTCP控制部分.
RTP协议为用户提供端到端的连续媒体数据的实时传输服务,支持多播或单播网络;RTP协议为实时业务提供端到端的传输服务,向接收端点传送恢复实时信号所必需的定时和顺序信息,依靠时间戳信息实现流的同步.RTP包头结构如图1所示.
0 31
RTCP协议是RTP协议的控制部分,其主要功能是为应用程序提供会话质量的信息,用于实时监控媒体数据的传输质量,为系统提供拥塞控制和流控制.RTCP提供五种类型的控制包:(1)发送方报告包SR(Sender Report)发送方发送的统计信息;(2)接收方报告包RR(Receiver Report)接收方的接收统计信息;(3)源描述项包SDES(Sender Description)描述与会话源相关的信息;(4)应用包APP(Application)开发新的应用;(5)离开包BYE:离开会话时的报告包.RTCP控制协议需要和RTP协议一起配合使用,当应用程序启动一个RTP会话时将同时占用两个端口,分别供RTP和RTCP使用,通过使用不同的端口号,可以把RTP信息包和RTCP信息包区分开来.通常RTCP会采用与RTP相同的分发机制,向会话中的所有成员周期性地发送控制信息,应用程序通过接收这些数据,从中获取参与会话者的相关资料及网络状况、丢包率等反馈信息,从而对提供QoS或者对网络状况进行诊断.
用户一般不希望媒体流的变化速率过快,所以要合理调整自适应算法,减少媒体流的抖动,提高媒体流传输的平稳性.
传统的码流调整算法采用的是AMD算法,即加性增乘性减的方法.当网络出现拥塞时,使用一个乘法因子α快速降低码流的发送速率;当拥塞消除后,使用一个加法因子β来缓慢提高码流的发送速率.用x(n+1)和x(n)分别表示n+1时隙和n时隙码流的发送速度,t(n)表示时隙n内的丢包率,k1、k2表示丢包率的两个门限值,则传统的码流调整算法可表示成如下形式:
(1)
RTP是根据RTCP所反馈的信息来进行码率的调整的,但RTCP的报文发送具有一定的时间间隔.所以,如果减小因子α选取得过大,码率降低得就会很快,信道的利用率在码率没有恢复到一定程度前会较低.如果α取值过小,则拥塞程度得不到及时地缓解.对于增加因子β,如果取值太小,码率的增幅就会太小,会降低网络带宽的利用率.为了解决上述问题,可以将α,β设为一个变量,使用变量来调整码率.
设X是上次发生拥塞时的RTP流的速率,R,S是常数(0
(1) 初始时,即RTP流第一次进入网络,则:
α=R,β=S×x(n)
(2)
(2) 当网络发生拥塞时,按公式(1)降低码率;
(3) 拥塞缓解后,如果x(n) x(n)+R α=R,β=S×x(n) (3) (4) 拥塞缓解后,如果x(n)>X/2 且 x(n)+R>X,X-x(n)>K,则: α=m×(X-x(n)),β=S, (0 (4) (5) 拥塞缓解后,如果x(n)>X/2且 x(n)+R>X,X-x(n) α=m×(X-x(n)),β=S×x(n) (5) 该算法的基本思想是利用网络发生拥塞时的信息来控制码率的增幅.当网络发生拥塞时,记下此时的码流速度作为上一次拥塞速度X,同时按照公式(1)快速降低码流.当拥塞缓解后,若此时的码率满足(3),则快速增加码流的发送速率;若此时的码率满足(4),则让码流的发送速度进行慢增长,同时令减小因子等于m×(X-x(n));若此时的码率满足(5),即RTP流已经充分接近上次发生拥塞时的速率,若此刻网络还没出现拥塞,则说明上次网络拥塞是临时的,应减小α增加β, 令β的取值恢复到快速增长阶段的取值. 根据上述讨论,我们实现了一个基于RTP的H.264嵌入式多路视频服务器[3],系统采用客户机/服务器模式,其体系结构如图2所示. 图2 视频服务器软件体系结构图Fig.2 Video server software architecture 视频服务器是该系统的核心,工作在嵌入式Linux平台上,服务器端将采集到的视频进行本地显示和存储,将压缩后的视频数据发送到网络中,并对用户的请求做出响应.服务器端的软件部分采用模块化的程序设计思想,从功能上服务器端的软件分为5个模块. 该模块主要完成两项工作:采集视频信息;转换图像格式为YUV格式.该模块采用Linux的v4l[4]实现. 该模块完成对采集的视频信息进行压缩编码.考虑到系统的灵活性及经济性,系统采用了利用软件实现数据压缩编码的方案,使用H.264标准进行压缩.H.264压缩标准[5]是一种新的编码方法,与其他压缩编码方式比较,利用H.264标准可以获得更高的压缩比及更好的图像质量.H.264编码器都是开源的,可以从网上下载,此处用的是T264,对采集到的YUV格式的数据进行逐帧压缩. 该模块负责视频信息的网络传输,将视频数据分组、打包后发送到网络中.由于网络视频信息传输实时性的要求,故本模块使用了RTP传输协议.在实际网络传输过程中,网络带宽的变化往往不可预料,网络的抖动会影响视频传输的质量.因此,该传输模块需具备网络带宽自适应性,这可通过RTCP的反馈信息实现,通过RTP接口,根据监控端反馈的网络状态信息进行码流速率的动态调整.具体过程为:编码后的视频信息经RTP组件发送至网络,在传输过程中,监控端的QoS监视模块根据接收包的丢包率和延迟情况诊断网络的拥塞状况,反馈控制模块对这些信息分析后通过RTCP包向码率控制器反馈网络信息,码率控制器即可根据网络状态进行码率的自适应调整.其中,码率控制器部分采用上文中的码率调整算法,完成码流的动态调整,其传输模型如图3所示. 图3 数据传输模型Fig.3 Data transmission model 该模块负责将编码后的视频数据存储到磁盘中,并将视频文件信息写入到嵌入式数据库MySQL,以供检索和回放.在本模块的存储管理中,采用了等长分组存储策略:将待存储的视频信息按照时序关系分为若干个分组,每个分组被存储于一个大小固定的存储单元内. 该模块根据用户界面发出的或网络传送来的控制命令,控制解码器,完成对云台、镜头等设备的控制. 本文提出了一种基于RTP的自适应网络传输策略,利用该策略可以动态调整码流的发送速率.在该策略的基础上,采用H.264编码技术,设计了一个多路嵌入式视频服务器.试验证明,对于包含有多路视频服务器的嵌入式系统,上述网络传输部分能够很好地完成视频数据的实时传输,网络自适应能力良好. 参考文献: [1] WU D, HOU Y T. Transporting real-time video over the Internet challenge and approaches[C]. Proceedings of the IEEE, 2000, 88(12): 1 855-1 877. [2] 张正华,余松煜,陈军华. 一种针对视频点播系统的RTP/RTCP自适应算法[J].计算机工程,2006,32(6):223-226. [3] 钟玉琢.流媒体和视频服务器[M].北京:清华大学出版社,2003. [4] 范永开.Linux应用开发技术详解[M].北京:人民邮电出版社,2006. [5] THOMAS W, GARY J S, GISLE B,et al. Overview of the H.264/AVC video coding standard[C]. IEEE Transactions on Circuits and Systems for Video Technology, 2003, 13(7): 560-576.3 多路嵌入式视频服务器的实现
3.1 视频采集模块
3.2 压缩编码模块
3.3 网络传输模块
3.4 存储管理模块
3.5 设备控制模块
4 结束语