发布于:2014-06-03 14:20:03
来自:电气工程/其他电气设计软件
[复制转发]
当前的H.264视频流(非可分层的)在数据压缩方面是非常成熟的,而且在对数据进行压缩时使用了所有从书本上学来的方法,其中非常关键的一项就是发送增量信息。如果一个视频图像帧只是在前一帧的基础上稍作改变,那么在对这一帧图像进行传输时,就没必要把那些没有更改的信息也一并传输过去。编解码器就会只传输其中的增量信息,并告知接收端:“这些像素点上做了这样的改变,而其它的像素点则维持原样”。采用这种方式所需传递的信息要比重传整帧图像所传递的信息少得多,这样一来,压缩的效果也就提高了许多。
不过当网络有数据包丢失时,这种增量信息传输方法的劣势就会凸显出来。一旦有数据包丢失,接收端就不能获得视频图像帧最新的变化信息,因此,视频图像就会出现轻微的误差。而到下一个数据包时,图像本身就是建立在错误的信息之上,因此,图像质量就更糟糕了。在应对这个问题时,当前的编解码器采用了不定时发送完整图像帧信息的方法。一旦发生了数据包丢失,接收端就可以要求更新一个整帧图像,以加速修整的进程。不过这样就会造成一整个来回的网络延时,再加上编解码器的内部处理时间,结果就不言而喻了。
现在也有一些厂商采取前向纠错算法(FEC)来解决这个问题。FEC属于块编码算法的一种,通过创建冗余信息,并把冗余信息与原先的数据包流一起进行传输来提高正确性。在接收到的正确信息和冗余信息充足的前提下,这些冗余信息可以帮助重建网络中丢失的数据包。这种方法听起来是不错,不过当然就需要付出一些代价了。由于编解码器还需发送冗余信息,因此,对网络的带宽需求也就相应增加了。一些编解码器通过牺牲分配给视频的带宽来保障(视频加FEC开销的)持续传输带宽。显然,这会给视频流质量带来损失。此外,在FEC算法中,FEC码传输之前,必须创建一块数据包,并计算出FEC码,而在接收端,则需收集一块数据包和冗余信息以重建丢失的数据包,这就必然会增加延时。而延时的增加就会降低视频通信时的互动性,加剧双向通话的困难。
那么,SVC又凭什么能解决这个问题呢?我们知道SVC是通过一个基层和一到多个增强层来创建视频图像的,这些视频流分别搭载在网络上的不同数据包中,基层数据包丢失所造成的影响和非可分层编码的结果是一致的,不过增强层数据包丢失造成的影响就要小得多。由于增强层是以基层而不是前帧图像为基础的,因此,增强层的数据包丢失只会引起暂时性的清晰度和帧频的下降,而不会对视频图像的基本架构带来影响。
FEC码可以通过和非可分层编码相同的方式来保护SVC视频流的基层信息。在分辨率要求较低的SVC视频通信中,使用FEC码同样存在低带宽非可分层编码所存在的限制、开销和延时问题。而在更高带宽需求中,可分层和非可分层视频编码技术的差异就非常明显了。这是因为只有在基层中才会有开销的存在,而在增强层中是没有的。举个例子来说,如果FEC码共增加了20%的开销,而基层只占据整个视频通信25%的带宽,也就是说在可分层视频编码中,FEC码只占据整个视频通信5%的带宽,而在非可分层视频编码中FEC码却要占据总带宽的20%。
所以,这里可分层视频编码技术的优势就体现在可分层视频流的架构和基层FEC保护的结合上。对低带宽呼叫而言,采用可分层视频编码和采用非可分层视频编码达到的效果是相似的。不过在高带宽呼叫中,可分层视频编码方式在易丢包的网络中,也能提供更加高质的视频,而且比非可分层视频编码方式所需的保护开销更少。来自:辰联电子
全部回复(1 )
只看楼主 我来说两句 抢板凳