在Internet网上提高传输视频实时性的研究
2009-02-04
作者:付 良 赵 鹏 戴梅萼 史嘉权
摘 要: 基于中国Internet网络现状,对提高视频传输的实时性、稳定性、连续性提出了几点改进算法。在视频会议、远程机器人控制中得到了具体的应用,并取得了良好的效果。
关键词: 传输协议 压缩 视频
Internet实时视频传输在网络会议、远程机器人控制等方面有着广泛的应用。其关键问题包括:传输的实时性——根据不同系统的要求,实时性是一个重要的评价指标,例如视频会议系统,要求传输的延迟不超过0.5s,否则会影响参会者的正常表达;对于远程控制系统,要根据具体要求进行调节。传输协议的制定——传统的传输协议应用到视频传输中或多或少都存在一些缺陷,因为它们不是专门设计的,尤其针对中国网络现状更要进行一些独特的设计。这包括并发的TCP协议,可靠的UDP传输协议。压缩算法——对H.263视频压缩协议进行增强,调节关键帧与非关键帧的比例以及质量来适应不同的网络传输率。
1 协议的设计
传统的视频传输协议是建立在TCP/UDP的基础上进行的。他们都是传输层协议,具有较高的效率。TCP协议则保证了传输的可靠性,采用这种协议要在视频接收方建立服务程序等待来自发送方的视频数据。最开始,发送方与接收方要建立一条稳定的通路来保证传输的可靠性,这种建立连接的过程可能是比较长的,特别是发送方与接收方中间要经过很多路由的时候。而一旦这条通路建立之后,数据的传输是可靠的,不会出现乱序或丢失数据包的现象。如果网络的带宽能稳定维持在一定水平,传输视频的效果很好。但由于Internet的现状,电话线与中间路由器等硬件设备经常出现阻塞,为此,我们提出以下几种方法,来提高传输效率使视频可以平滑、小延迟地回放。
1.1 多路TCP并发传输
TCP协议建立连接的过程也是一个寻找通路的过程,它通过网络层、物理层协议来建立从数据发送源到目的地的最佳通路。由于当时网络环境的不同,每次建立连接所选择的通路就有可能不同,这些不同的通路同时阻塞的机会显然比一条通路阻塞要小得多。这就是多路并发TCP传输协议的原理。
具体的设计步骤如下:
(1)设定同时连接进行数据传输的连接数目为5个,每个连接都有一个线程来控制,每个线程可以独立地运作。他们之间又可以相互通信,使得在同一时刻进行数据传输的通路只有一个。并且这个数据通路的传输速度相对于其他通路是更快的。其他的通路反复地进行数据传输速度的测试,称为测试通路,在当前数据通路发生阻塞的时候则断掉这条通路,而启用在测试通路中速度最快的那一个,并将其切换为数据通路进行传输。简言之,就是一个数据通路,多个测试通路同时并存,尽量选择速度最快的通路作为数据通路见图1。
(2) 鉴于建立连接的过程相对较慢,所以采用交错的方式进行。即不是在一开始将5个通路的连接全部建立起来,而是先建立一个连接并作为数据通路传输,与此同时再逐步建立其他通路的连接,由于每条通路都是采用线程来控制的,它们之间不会相互影响,见图2。
(3) 如果经过步骤(1)选择了最佳的数据通路之后数据仍然不能传出去,说明现在的网络带宽不足以传输视频数据流,因此传输模块会将这一信息反馈给压缩模块,由压缩模块根据当前的网络速度重新调整参数,形成新的数据量较小的视频流。与此同时在发送方设有一个1秒钟的cache,将由于阻塞而没有发出去的数据包暂时存在cache中,无法存入cache中的数据包被发送方丢掉,这是对传输的实时性和连续性的一个折衷。
1.2 可靠的UDP传输
用UDP协议进行数据传输的优点是不需要建立连接,传输速度快。缺点是容易丢失数据包和数据包的顺序发生混乱。为此我们设计了一种方法来保证数据的可靠性。
(1) 建立一条以UDP作为传输协议的数据通路,在传输时要把压缩后的视频流打包,这时不能简单地采用以视频帧为打包的单位。因为,第一、某些压缩的关键帧会很大以致超过了UDP协议所规定的最大值;第二、关键帧与非关键帧数据量相差很远,有可能使数据量较小的非关键帧比它前面的数据量大的关键帧更早地到达接收方,而导致乱序。因此我们采用将数据流划分成等量的小包,并在包头标上序号进行顺序传输,在包头标序号是为了防止由于UDP本身带来的传输乱序问题。
(2) 建立一条以TCP为传输协议的控制通路,它的作用是反馈一些控制命令给发送方,以最小限度地防止传输中的错误。接收方要从数据通路得到视频数据流,并把这个数据流存储在一个0.3s~0.8s的缓冲区中,按照数据包头的编号将数据流重构出来。如果数据包编号出现不连续,说明发生了丢包或乱序,则接收方立即通过控制通路发送要求重发所丢失的数据包的命令。采用TCP作为控制通路的协议是因为可以保证控制命令的准确性,而且控制命令的数据量很小,发生阻塞的情况不大。
(3) 为了保证传输的时实性,不能无限制地发送控制命令,接收方以缓冲区为限制,当缓冲区已经用完,而仍然存在丢失数据包的现象,则只有丢掉一些数据来保证实时性,见图3。
2 数据压缩
视频数据的压缩比和质量的好坏是Internet视频传输是否成功的前提。为了适应现有Internet的传输率低、传输性能不稳定的特点,我们采用国际上比较先进的H.263压缩标准。H.263是一种中等质量的压缩方法,它不象MPEG等高质量的压缩方法那样有很高的图象清晰度。但是,H.263标准有压缩算法简单、压缩快速和压缩比高等特性,这使得它非常适合象“机器人远程控制”等要求实时传输图像,但对图像质量的要求不高的情况,见图4。
为了适应Internet的不稳定性,需要在原有的压缩算法上做一些改进。通过传输模块反馈回来的信息,可以得知当前网络的传输速率,以此来调整压缩算法的各个参数,来获得最好的帧率和质量。其中,一种方法是对帧内压缩方法的改进,另一种方法是对帧间压缩方法的改进。对帧内压缩方法的改进:主要是通过改变压缩质量的参数来调节图像质量和压缩比,见图5。
对帧间压缩方法的改进:可以通过改变帧率、关键帧间的距离来调节传输数率。改变每秒采集和传输的图像数目,可以改变传输数据的大小,见图6。
运动压缩的关键是在于两帧之间的差别大小。如果图象只有微小的变化,那么经过作差后压缩效果就好;如果图像变化很大,那么经过作差后压缩效果就很差。为了充分利用运动压缩的特点,我们根据图像的性质来调节关键帧间的距离。在图像变化不大的情况下,非关键帧数据较少,此时拉长关键帧间的距离可以降低传输率;在图像变化较大的情况下,非关键帧数据较多,此时缩短关键帧间的距离增加运动补偿的效果。
参考文献
1 Microsoft著,曹 康译. 使用 TCP/IP 协议的网络互连
2 张明德,王永东.视频会议系统原理与应用
3 余崇智等编译.运动图像及其伴音的压缩与编码.MPEG 1