童翔威 周铁军
摘要:随着计算机网络的流媒体系统在日常工作和生活中应用越来越广泛,流媒体数据传输和网络带宽之间的矛盾也日益剧烈和明显。在两者都已经固定的情况下,就需要应用合适的网络传输策略,有效利用媒体流的特点和网络资源,传输流媒体数据流。本文重点研究了拥塞控制策略中的分层策略,针对现在的分层策略中各层之间有着优先级不同的限制、灵活性不高的缺陷,提出了一种先分层后编码传输的分层组播策略,并给出了较详细的试验方案和实现方法,最后对该策略的特点进行了讨论。
关键词:流媒体;拥塞控制;分层编码策略
中图分类号: 文献标识码:A文章编号:1009-3044(2008)18-20ppp-0c
The Research of Congestion Control in Streaming Media Transmission
TONG xiangwei1 ZHOU tiejun2
(A graduate student of Computer College in Central south university of forestry and technology; Hunan, Changsha, 410004; Professor of computer college in Central south university of forestry and technology; Hunan, Changsha, 410004)
ABSTRACT: With the streaming media system on computer network more and more extensive application in their daily work and lives, the conflict between network bandwidth and data transfer is also increasingly severe and obvious. If both factors have been fixed, there will be a need to apply the appropriate strategy for network transmission and effective use of the media flow characteristics and network resources to transfer streaming data flow. This article focuses on layered strategy in congestion control strategy. For between each layered strategy there are defects of different priority restrictions and low flexibility, this article brings forward a layered multicast strategy of coding after layer, and gives a detailed test and realization method, and lastly discusses the features of this strategy.
KEY WORDS: Streaming Media; Congestion Control; Layered Coding Strategy
1 前言
随着计算机网络和流媒体技术的发展,基于计算机网络的流媒体系统在日常工作和生活中应用越来越广泛。由于图像的信息量和数据量比较大,对视频数据进行网络传输时会占用大量的网络资源,容易造成网络拥塞,严重影响网络的传输质量。近几年来各种相关机构对流媒体和网络进行大量的研究,对现有传输策略进行了各种改进,提出了多种对于视频传输中网络流量控制的方法。比如为在网络上实时发布视频数据,提出了多种分层组播策略,这些传输策略大大提高了视频数据传输的质量。但是,现有的分层策略各层之间有着优先级不同的限制,灵活性不高。为解决这一问题,本章在简单讨论视频流和网络传输的特点之后,提出了一种先分层后编码传输的分层组播策略,并给出了较详细的试验方案和实现方法,最后对该策略的特点进行了讨论。
2 网络传输的问题
现有的网络一般都是异质性网络,即网络由特性不同的子网组成,这些特性包括网络有不同的带宽,不同的QoS质量保证,和具有不同的传输时延,这些特性都会对数据的网络传输造成不良影响。所以在网络上传输视频等流媒体数据时,一定要解决网络传输中的三类问题:数据丢失/错误、延迟和传输时延变化也就是网络抖动[1]。
3 现有解决方法分析
由于流媒体应用,无论是分布式应用还是交互式应用,都是C/S结构的应用(即使B/S结构一般也是在客户端浏览器中使用组件处理流媒体和其他数据),所以对网络流量的控制一般分为两类:一类是基于服务器的控制方法[2-5],另一类是基于客户端的控制方法。其中基于服务器的流量控制是利用服务器根据客户端接收状况调节编码输出的码率的一种流量调节方法;基于客户端的流量控制是利用客户端选择接收流的方式来控制网络上的流媒体数据流量。
另外一种是利用分层编码传输(Layered Coding)策略控制网络流量。分层策略是指,将媒体流按某种标准分配到不同的传输通道传输,客户端根据自身的特点有选择地接收各个通道的数据的一种流量控制策略。分层编码策略有多种实现方法,其中包括:质量分层或SNR(Signal-to-Noise Ratio)分层、空间分层、时间分层、频率分层或上面这些方式的组合[6,7]:
质量分层是对原始图像从基本层开始,以越来越精细的量化步长进行量化,从而得到不同质量的几层数据流。接收端通过逐步加入并接收解码这些数据流,可以得到越来越清晰的图像。
空间分层是把原始图像在空间上划分为几部分,然后进行编码传输,基本层解码后可以获得分辨率较低的图像,各增强层解码后可增加现有图像的分辨率。
时间分层是视频服务器在对视频编码时,按照时间,把图像分配到不同的层上,即客户端可以通过逐步加入不同的层,解码得到不同帧率的视频流。目前实现的方法一般时将编码后的视频流,按照每帧在解码时的重要性分配到不同的层中,客户端可以通过接收解码不同的层,得到不同质量的视频。
时间分层方法一般应用于对图像质量要求较高而没有对帧率提出过高要求的应用中,而其它分层方法一般应用于对时间连贯性比较高的应用当中。
由上述两种时间分层方法可以看出,由于增强层的解码需要基本层或前一层的码流数据,所以,当基本层或层数比较低的数据流中出现丢帧时,丢帧所造成的解码错误有可能扩散到之后的解码过程中,而且,客户端必须按顺序加入各层,带宽调整方面也不是十分灵活。为解决这些问题,本文提出了一种先分层后编码的时间分层传输策略,这种策略使传输的各层之间没有非常严格的制约关系,都各自编码解码,使客户端的选择更加灵活。
4 先分层后编码的方法
4.1 分层原理
我们观看的数字视频信息,都是由一串动作连贯的图片组成。之所以图像连贯,是因为图像中动作的运动频率远远低于图像的采样频率,所以相邻的两幅图片之间的差异也就比较小,这也是当前很多视频编码思想的基础。
同时,RGB视频流由一串连续的未压缩的图片序列组成,帧和帧之间没有依赖关系,一帧数据的显示并不要求其它帧的数据。在RGB视频序列中抽取部分帧之后,视频仍然可以正常播放,只不过帧率有所降低,只要抽取的帧不是太多,对视频主观质量的影响并不严重[3]。
根据上述两个条件,如果我们将视频采集设备获得的原始RGB视频序列,按照一定的规律,均匀地分成几个视频序列,则各个视频序列都能以不同地视频质量反映原始视频序列所描述地内容,如果我们将这些视频序列按照原来地排列顺序再重新排列起来,则可以得到原来的视频序列,如图1所示。这就是本文所提出的先分层后编码传输的流量控制策略的思想基础。
图1 RGB格式数据流的分离和组合
4.2 流媒体处理的设计实现
这里的流媒体处理是指对媒体流的处理,包括RGB流的分离和合成、流媒体数据的网络发送和接收四个模块以及整个过程的控制功能。
在本节所涉及的四个组件都使用DirectShow的Filter实现,而对整个流媒体处理过程的控制利用Filter Graph来实现。在DirectShow中,RGB的帧和Filter Graph中的Sample相对应,我们可以通过操作Sample对象来操作RGB流中帧数据。RGB分离Filter有一个输入Pin和多个输出Pin,是一个Splitter Filter,RGB合成Filter有多个输入Pin一个输入Pin是一个Mixer Filter,网络发送Filter只有输入Pin没有输出Pin,它将流媒体数据发送到网络上,是一个Renderer Filter,网络接收Filter从网络上接收流媒体数据,只有输出Pin,是一个Source Filter。其中流媒体数据的网络发送和接收Filter实现了部分上述的RTP协议的功能。
根据上面的叙述我们可以知道,RGB分离Filter的主要功能是将从输入Pin接收来的RGB数据流按照一定的规律分配给Filter的几个输出Pin,如图2所示。
图2 Splitter Filter结构示意图
4.3 基于分层的拥塞控制
基于分层的拥塞控制是指客户端如何选择加入和退出各层从而得到一个合适的网络流量。为了控制方便,对分层组播做如下的几点规定:
所有的组(层)使用同一个组播IP地址,各组之间以RTP端口号区分。
RTP端口号从小到大,帧率依次增加。并假设客户可以通过其它途径得到最小的端口号。
由于流媒体内容的改变,编码后的码流流量有可能有所变化,所以流媒体服务器需要及时通过RTCPAPP数据包通知各客户端系统中各层的数据流量。
APP数据包中Application-dependent data部分的格式如下图3定义
图3 Application-dependent data格式
图中各字段的含义如下:
Count of Layers:32位整数,表示在会话中的层数。
Port_1~Port_n:16位,表示各层的RTP端口号。
Flow Rate:16位,表示该层每秒发送的字节数。
客户端加入会话以后,首先加入端口号最小的层中接收流媒体数据,这时客户端得到主观质量最差的视频流。当客户端接收到APP RTCP数据报文后,将各层的流量进行组合并排序后保存在一数组中。客户端使用上述数组中的组合进行尝试接收数据,直到得到一个合适的流量为止,这里所谓合适的流量是指,此流量是该客户端可以接收到的最好质量数据流量。
当在接收数据过程中,RTP数据报文丢失率增高时表明,网络上的可用带宽在减少,则客户端尝试通过数据流量低的组合接收数据,直到得到一个合适的流量为止。
在顺利接收流媒体数据一段时间之后,客户端尝试使用流量更高的组合接收数据,并在得到一个合适的流量后为止。
4.4 实验测试
由于在Windows平台上该策略的软件实现利用了DirectShow架构,所以可以利用DirectShow提供的Filter测试工具GraphEdit来实验系统的运行效果。在GraphEdit中,Filter被以图形化的形式显示在界面上,操作简单、灵活而且非常直观。
具体到本文的实验,系统的仿真实现可以分为三部分:第一部分为视频服务器部分,用来分层发送数据;第二部分为视频客户端部分,用来接收播放视频数据;第三部分是数据记录部分,把数据发送量和接收量记录下来以供分析。本文的实验中使用一块视频采集卡采集视频数据,其输出视频格式为RGB555。采集到视频数据后,利用实现的分层Filter对RGB数据进行分层,然后编码传输。
数据接收端首先利用实现的数据接收Filter接收数据后,解码成RGB数据流,然后通过数据合成Filter将多路视频数据合成为一路视频数据,播放输出。
数据记录的目的是为了记录下数据传输的量,来评价视频发布的质量。本文在实验过程中,首先将视频接收和发送的数据保存在AVI文件中,这样可以记录下具体传输的数据和数据传输的时间长度,如图4所示。然后将AVI文件中的视频数据写入二进制文件,这样可以得到网络上发送的数据的量如图5所示。将AVI中的视频数据写入文件的原因是,当系统写AVI文件时,写入的不只是视频数据,还有AVI文件的格式信息等其他数据。
图4 接收并保存为AVI文件
图5 写视频数据到文件
5 总结
根据先分层后编码传输的设计思想和实现方法,可以分析出,这种流量控制策略有如下特点:
1)实现简单,系统实现过程中不必考虑图像的具体内容,只需处理原始的RGB视频流,而RGB视频流,结构简单,容易对其进行操作;2) 对编码格式没有依赖性,传输策略只规定了原始数据流应该是RGB格式的数据流,解码后的数据流也应该是RGB数据流,而对编码后的数据流格式没有任何要求;3) 适合实时应用,由于在流媒体处理时主要是对原始的未压缩的RGB数据流进行分层,此策略适合获得RGB数据的实时应用,比如实时组播或实时点对点传输。
综上所述,结合RTP实时传输协议,这种分层策略可以较好地解决网络视频传输中的数据丢失、延迟和抖动等问题,控制网络拥塞的发生。在网络状况较好的情况下,客户端选择较多的层接收数据可以得到质量较高的视频图像。
参考文献:
[1] 李捷,周云娴,王雨等.网络视频编码中的分层技术[J].计算机工程与应用,1999(8):81-86.
[2] 王军,吴志美.交换式以太网中连续实时流媒体的可靠组播[J].软件学报,2004,15(2):229-237.
[3] 赵黔莉,涂国防.Internet视频传输的拥塞控制策略[J].计算机工程,2004,30(1):144-147.
[4] 徐建军,李强.视频监控系统中基于MPEG-1数据流的丢帧机制[J].空军雷达学院学报,2002,16(4):28-30
[5] Sun Y.S.,Tsou F.-M.,Chen M.C.,Tsai,Z.A TCP-friendly congestion control scheme for real-time packet video using prediction[C].Global Telecommunications Conference,1999. GLOBECOM' 99,1999(3):1818-1822.
[6] Abdul H. Sadka.Compressed Video Communications(影印版)[M].北京:科学出版社,2004,5:109-112.
[7] Yao Wang,Jrn Ostermann,et al著,候正信等译.视频处理与通信[M].北京:电子工业出版社,2003:269-287.
收稿日期:
作者简介:童翔威(1983-),男,汉族,湖南株洲,硕士研究生,研究方向:计算机网络拥塞控制。