非扩展性与可扩展性视频编码流式技术
发布时间:2006-10-14 4:14:28   收集提供:gaoqian
王锋梁雨平

  1前言

  网络上的视频应用为人们展现了一个极具吸引力的信息交流场景,人们可以通过网络查询广泛的视频资料,欣赏最新的电影,通过可视电话和远方的亲友交流,在网上建立自己的电视台,还可以建立网络监控系统,实施远程监控。随着视频压缩技术和信号处理技术以及网络建设的不断发展,基于流式技术的网络视频应用已展现出巨大的市场前景。根据不同的视频应用需求,视频流传输可以分为两类[1]:单点对单点的流传输(Unicast)和单点对多点的流传输(Multicast)。Unicast是每一个用户都和服务器建立一条数据连接,用户接收的视频数据流是相互独立的。Unicast用于视频点播(Video on Demand)、数字视频图书馆(Digital Video Library)等应用。Multicast则为点播同一个节目的多个用户建立一个地址组,只是向网络发送节目的一份拷贝,Internet现场直播(Internet Live Broadcast)就是这种应用。

  然而,视频的播放有严格的实时性要求,要求在特定的时间间隔内将特定的数据单元解码显示,这就要求网络提供足够的带宽、有保障的时延和丢失率。但是,网络视频的流式传输面临的实际情况则是另外一种情况:①网络资源(主要是带宽)的增长并不同日益增长的视频应用成正比,也就是不可能为所有的用户提供足够的带宽;②网络服务不提供服务质量的保证(Quality of Service,QoS),视频数据传输过程中的网络资源(如带宽)以及延时、误码和丢包率等都是动态变化的;③网络的异构性和用户的不同需求,使得网络视频应用面临着不同的服务质量的需求。以上3个问题是网络视频应用面临的主要挑战,为解决这些问题,中外学者做了大量的研究,其主要工作可以分为两个大的方面:其一,发展更具灵活性的视频编码方案,主要体现在,要求进一步提高视频数据的压缩效率,尽可能消除视频中的冗余信息,使得信源编码输出的数据量尽可能得少,以适应网络最低传输带宽的情况,同时,要求提供灵活的视频质量分级来最大限度适应网络的动态特性,尽可能为用户提供好的视频质量;其二,必要的错误控制技术的研究,由于高压缩比的视频数据对传输过程中的误码和丢包非常敏感,有时即使只是一个比特的错误就可能导致接收端解码的视频质量严重下降,因此,必须有合适的错误控制技术来保证在用户端得到的视频失真最小。本文主要围绕第一个问题来介绍面向网络传输的视频编码和传输技术。

  网络上传输的视频流,可以根据其信源编码输出的是面向存储的视频数据还是面向网络传输的视频数据分为两类:面向存储的非扩展性视频编码流式技术和面向网络传输的可扩展性视频编码流式技术。

  2网络中传输的非扩展性视频流式编码技术[1]

  2.1最小传输(Minimum Transmission)的视频编码

  为了解决视频传输带宽不足的问题,最简单的方法是最小传输,即使用传统的视频编码方案,按带宽最低的用户的接收条件由编码器产生视频码流传送给用户。实现这种最小传输码流的方法有两种:一是在信源编码时增加视频编码器量化步长使输出码流码率满足最小带宽要求;二是在时域上减小帧率来实现输出码流码率满足最小带宽要求。当然也可以两种方法联合考虑,无论哪种方法,一旦码率确定,通常不会改变。最小传输可以保证所有用户都能得到视频,但是带宽足够的用户也只能观看质量很差的视频,带宽利用率极其低下。

  2.2自适应视频编码(Adaptive Encoding)

  在一些实时视频应用中,采用一种自适应的视频编码方法,就是根据网络环境的变化来自动调整编码器的参数,使得输出码流的码率适应网络变化的编码方法。该方法通常采用RTP/UDP/IP协议,发送方将压缩数据流划分成RTP协议包发送给接收方,接收方监测RTP数据包的传输时延和丢包率,通过RTP协议中的RTCP协议将网络传输情况反馈给发送方,发送方根据网络带宽情况调整数据发送码率使之与网络环境相匹配。发送方根据反馈信息估计发送码率的方法主要有两种:基于探测的方法与基于模型的方法。

  基于探测的方法是一种由发送方发起的算法,发送方接收用户方反馈的时延、丢包率信息,自动调整视频流的发送码率。根据发送方调整码率策略的不同,基于探测的控制算法分为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还可以通过跳帧(frameskip)改变帧率,与调整量化参数Q相结合,能获得更好的码率适应性。

  自适应编码可以适应网络带宽的变化,但对服务器要求很高,当用户增加时,服务器开销太大,较难用于实际系统,而在视频点播(VOD)等应用中,编码与传输是分开的,自适应编码也用不上。

  2.3转码技术(Transcoding)

  这是在服务器中保存一份质量足够好的压缩视频数据,当需要降低输出码率时,服务器只需进行部分的解码和编码就可以输出合适的视频数据流。其主要实现方法是:选择性丢弃视频数据中不重要的部分,即舍弃后不会严重影响观看质量,如选择性丢帧或丢弃DCT系数的高频分量,也可以再进行一次量化来实现。这种技术比自适应编码的复杂性低,但服务器开销还较大,大量用户同时点播时,服务器依旧不能承受。

  2.4码流切换(Bit Stream Switching)

  这种技术是在服务器中保存同一个视频节目的不同质量的多个拷贝,这些码流的帧内编码帧(I帧)是对齐的,服务器根据用户网络带宽情况选择一个适当的码流发送给用户。一种称为联播(Simulcast)的技术就是将码流切换技术和Multicast结合在一起的技术,这种技术的基本思想是将同一段视频节目编码成多个码率不同的压缩视频流,将这几个视频流用独立的组播通道发送到网络,用户根据自己的需求和网络服务质量选择某一个视频流,随着网络带宽的动态变化,用户可以在这几个视频质量之间切换,接收到最接近他们带宽的视频流,达到动态调整的目的,同时,这种视频流的码率是可以预先调整的,以适应网络QoS的动态变化。这种方案在一定程度上解决了用户和网络的异构问题,其优点是服务器的计算复杂度很低,缺点是需要较大的存储空间,带宽利用率低。带宽利用率低是因为要同时向网络发送一个节目的不同码率的多个拷贝而造成的。

  以上技术基本上是围绕传统的非分级视频编码方案来实现网络上视频数据流的传输,其主要缺点是传输码流码率的变化缺少适应网络动态变化的灵活性,即使一些编码方案为了提高视频流适应网络带宽变化的灵活性,进行了技术上的改进,如转码技术和码流切换技术,但这些只能算是一种折中方案,因为这种灵活性的提高是以增加视频服务器开销或增加存储量作为代价的,存在这种问题的根本原因是传统的非扩展性视频编码技术是面向存储的而非面向传输的。

  3面向网络传输的可扩展性视频流式编码技术

  为了彻底克服面向存储编码技术的缺点,面向传输的可扩展性视频编码技术得到了快速的发展。这些技术在进一步提高编码效率的同时增加了编码输出码流适应网络带宽动态变化的灵活性。就提高编码效率来看,以H.264为例说明:在相同视频质量下,H.264比H.263节省了50%的比特率,之所以编码效率能够大幅度提高,H.264主要采用了一些新的技术[2],列举如下:①采用统一的可变长编码(VLC)码表,对量化后的DCT变换系数使用了基于内容的自适应可变长编码(CAVLC);②使用了4×4块的整数变换,减少了方块效应,简化了算法,提高了运算速度和运算结果的精度;③改进运动估计的算法,如支持1/4,1/8像素精度的运动矢量,引入多参考帧模式、多宏块分解模式和帧内预测模式。

  在可扩展性视频编码的灵活性方面,下面结合具体的编码方案来说明。可扩展性视频编码可分为分层可扩展性编码、精细可扩展性编码和渐进精细可扩展性编码3类。

  3.1分层可扩展性编码(Layered Scalable Coding)

  目前,诸如MPEG-4,H.263+等现行国际视频压缩编码标准均采纳了分层可扩展性编码思想。分层可扩展性编码也分为3类:时域可扩展性编码、空域可扩展性编码和质量可扩展性编码。 时域可扩展性编码(Temporal Scalability Coding):时域可扩展性编码是通过在视频帧序列数据流中插入B帧数据来实现的。B帧是使用与它在时间上最临近的前后两帧I帧或P帧来预测的,而自己并不作为任何其他帧的参考图像,因此在传输中丢失B帧并不影响其他帧的质量,而仅仅降低帧率。

  空域可扩展性编码(Spatial Scalability Coding):空域可扩展性编码是通过为视频中的每一帧都创建多分辨率的表示来实现的。在编码时,首先通过下采样得到基本层的低分辨率视频图像,编码后得到基本层码流,然后编码原始视频和基本层视频的差生成增强层码流。

  质量可扩展性编码(PSNR Scalability Coding)[3]:质量可扩展性编码首先对原始视频进行一次粗量化形成基本层码流,然后对原始视频与基本层视频的差再进行一次量化,生成增强层码流,重复上面的过程可以得到多个增强层码流。

  分层可扩展性编码和Multicast结合起来成为分层组播(Layered Multicast)。分层组播是将每一层的压缩视频流发送到一个Multicast组中,用户根据自己的网络带宽状况接收基本层数据和多个增强层数据,然后解码获得不同质量的视频。分层组播与联播相比,网络带宽利用率要高许多,但是各个增强层的码率在编码完成时就固定下来了,而且间距较大,供给用户选择的余地有限,因而带宽的利用率还有待进一步提高。

  3.2精细的可扩展性编码(Fine Granular Scalable Coding, FGS)

  为了进一步提高带宽的利用率,能够无级地适应网络带宽的动态变化,必须有更具灵活性的视频流式技术。Li[4,5]等人提出的精细可扩展性编码被MPEG-4组织采纳。FGS的基本层编码与MPEG-4非可扩展性编码相同,都是由运动估计、运动补偿、DCT变换、标量量化和变长编码组成,而增强层编码时,从原始的DCT系数中减去基本层逆量化后重建的DCT系数值得到DCT的残差,再对8×8的残差块Z扫描后进行位平面编码。下面是对8×8块Z扫描后得到的DCT残差序列:

  11,0,6,0,0,3,0,2,2,0,0,2,0,0,1,0,……,0,0(残差绝对值)

  0,x,1,x,x,1,x,0,0,x,x,1,x,x,0,x,……,x,x(残差符号,x表示残差为零的情况)

  再将DCT残差值写成二进制值如下排列,每一列是一个DCT残差的二进制值,最上面的行是DCT残差的二进制值的最高有效位(MSB),最下面的行是最低有效位(LSB)。位平面的个数由最大DCT残差值决定,MPEG-4标准中规定6个位平面。

  1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,……,0,0(MSB)

  0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,……,0,0(MSB-1)

  1,0,1,0,0,1,0,1,1,0,0,1,0,0,0,0,……,0,0(MSB-2)

  1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,……,0,0(LSB)

  然后通过行程编码得到中间符号(RUN,EOP)如下,RUN是“1”前面“0”的个数,EOP是位平面的结束标志。

  (0,1)(MSB)

  (2,1)(MSB-1)

  (0,0),(1,0),(2,0),(1,0),(0,0),(2,1)(MSB-2)

  (0,0),(4,0),(8,1)(LSB)

  最后对(RUN,EOP)序列进行变长编码,对应的DCT残差的符号跟在最高有效位(MSB)的变长码字之后(如下面)。

  VLC(0,1),0(MSB)

  VLC(2,1),1(MSB-1)

  VLC(0,0),VLC(1,0),VLC(2,0),1,VLC(1,0),0,VLC(0,0),0,VLC(2,1),1(MSB-2)

  VLC(0,0),VLC(4,0),VLC(8,1)(LSB)

  FGS由于使用了位平面编码技术,与非扩展性编码相比有如下新的特点:第一,增强层使用位平面编码技术对DCT残差进行编码来覆盖网络带宽的变化范围;第二,每一帧的增强层码流可以在任何地点截断;第三,解码器重建的视频质量和收到的比特数成正比。而基本层使用基于分块运动补偿和DCT变换的编码方式达到网络传输的最低要求。

  FGS还可以与时域可扩展性编码相结合得到FGST编码方案,即对B帧中的DCT系数都使用位平面编码技术,这样FGST一方面支持FGS的精细可扩展的特性,另一方面支持帧率的变化,使得FGST具有更好地适应网络带宽变化的灵活性。

  FGS虽然有很好的扩展性,但因为所有的增强层都以参考帧的基本层图像作为参考进行运动补偿,导致DCT残差较大,所以其编码效率很低,比MPEG-4中非可扩展性编码低2~3 dB。之所以采用基本层图像作为参考进行运动补偿,主要是考虑到当某帧增强层出现错误时,不致影响后续图像的解码,保持很好的错误恢复能力。所以,要提高FGS的编码效率,必须改善用于运动预测和补偿的参考图像的质量。

  3.3渐进精细可扩展性编码(Progressive Fine Granular Scalable Coding,PFGS)[6,7]

  微软亚洲研究院的学者李世鹏、吴枫等人综合权衡了质量可扩展性编码的高效率和FGS的错误恢复能力,提出了一种被称为渐进精细可扩展性编码方案,该方案在保持FGS较好的错误恢复能力的同时,较FGS编码效率提高了近1dB。

  黑色的方块表示对应帧的增强层或基本层作为下一帧解码的参考图像,只有基本层图像使用了前一帧重建的基本层图像进行运动补偿和预测,所有增强层都是用前一帧的某个增强层进行运动补偿和预测(实线箭头)。但是当网络带宽限制或传输错误,作为下一帧参考的增强层传不到接收端时,接收端解码就会造成差错传播,直到下一个I帧为止。为了解决这个问题,PFGS在重构一些作为后面图像解码参考时,并不是总是用前一帧的增强层,有时也用前一帧的基本层(虚线箭头)。这样,重构的增强层的质量明显高于基本层的图像质量,运动补偿更有效,从而提高了PFGS的编码效率,同时也减少了差错的传播。

  4结束语

  总的来看,可扩展性编码比非可扩展性编码更适合网络的传输,特别是FGS和PFGS的灵活性能够在一定的带宽范围内很好地适应网络带宽的变化。然而,FGS较低的编码效率也是制约其投入实际使用的致命弱点。PFGS较FGS在一定程度上提高了编码效率,但与非扩展性编码相比,编码效率还有1~2 dB的差距,要提高其性能,还有待进一步研究。


摘自《中国有线电视》
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50