网络上的视频应用为人们展现了一个极具吸引力的信息交流场景,人们可以通过网络查询广泛的视频资料,欣赏最新的电影,通过可视电话和远方的亲友交流,在网上建立自己的电视台,还可以建立网络监控系统,实施远程监控。随着视频压缩技术和信号处理技术以及网络建设的不断发展,基于流式技术的网络视频应用已展现出巨大的市场前景。根据不同的视频应用需求,视频流传输可以分为两类[1]:单点对单点的流传输(Unicast)和单点对多点的流传输(Multicast)。Unicast是每一个用户都和服务器建立一条数据连接,用户接收的视频数据流是相互独立的。Unicast用于视频点播(Video on Demand)、数字视频图书馆(Digital Video Library)等应用。Multicast则为点播同一个节目的多个用户建立一个地址组,只是向网络发送节目的一份拷贝,Internet现场直播(Internet Live Broadcast)就是这种应用。
然而,视频的播放有严格的实时性要求,要求在特定的时间间隔内将特定的数据单元解码显示,这就要求网络提供足够的带宽、有保障的时延和丢失率。但是,网络视频的流式传输面临的实际情况则是另外一种情况:①网络资源(主要是带宽)的增长并不同日益增长的视频应用成正比,也就是不可能为所有的用户提供足够的带宽;②网络服务不提供服务质量的保证(Quality of Service,QoS),视频数据传输过程中的网络资源(如带宽)以及延时、误码和丢包率等都是动态变化的;③网络的异构性和用户的不同需求,使得网络视频应用面临着不同的服务质量的需求。以上3个问题是网络视频应用面临的主要挑战,为解决这些问题,中外学者做了大量的研究,其主要工作可以分为两个大的方面:其一,发展更具灵活性的视频编码方案,主要体现在,要求进一步提高视频数据的压缩效率,尽可能消除视频中的冗余信息,使得信源编码输出的数据量尽可能得少,以适应网络最低传输带宽的情况,同时,要求提供灵活的视频质量分级来最大限度适应网络的动态特性,尽可能为用户提供好的视频质量;其二,必要的错误控制技术的研究,由于高压缩比的视频数据对传输过程中的误码和丢包非常敏感,有时即使只是一个比特的错误就可能导致接收端解码的视频质量严重下降,因此,必须有合适的错误控制技术来保证在用户端得到的视频失真最小。本文主要围绕第一个问题来介绍面向网络传输的视频编码和传输技术。
基于探测的方法是一种由发送方发起的算法,发送方接收用户方反馈的时延、丢包率信息,自动调整视频流的发送码率。根据发送方调整码率策略的不同,基于探测的控制算法分为AIMD(Additive increase and multiplicative decrease)方法和MIMD(Multiplicative increase and multiplicative decrease)方法。基于模型的方法是直接根据建立的网络传输模型来估计网络带宽,然后依据估计的结果改变视频编码器输出码流的码率。这种实时码率控制的手段很多,可以改变视频编码的帧率、调整宏块的编码模式和调整量化参数来实现,而最简单有效的方法是调整量化参数Q。码率控制的理论基础是率失真理论,也就是要确定码率R与失真D之间的关系,即率失真函数,然后通过Taylor展开,再忽略高阶项,并将失真D用1/Q取代,获得R和Q之间的关系,在此基础上,根据期望的码率来预测参数。如MPEG-4中的TM5码率控制算法就是将率失真函数展开成一次函数,MPEG-4中新的码率控制算法MP4则是将率失真函数展开成二次函数。现在很多的码率控制算法不只是用到帧水平,为了获得准确的码流输出并提高编码质量,很多研究报告显示将码率控制算法用到宏块层或视频对象(Video Object)层,即同一帧中的各个宏块或不同的视频对象的量化参数Q可以不同。在低码率传输环境下,H.263+,H.264还可以通过跳帧(frameskip)改变帧率,与调整量化参数Q相结合,能获得更好的码率适应性。