背景:
H.264是最新的视频压缩标准,它也称为MPEG-4 Part 10或AVC(高级视频编码)。
H.264是一个需要许可证才能使用的开放标准,可支持最当今市场上最高效的视频压缩技术。在不影响 图像质量的情况下,与采用M-JPEG和MPEG-4 Part 2标准相比,H.264编码器可使数字视频文件的大小分别减少80%和50%以上.可以说是让视频在保持高清晰度的情况下,又最好的减少了存储空间。特别是在视频监控领域,H.264将很可能以最快速度应用于那些需要高帧速和高分辨率的监控场所,例如高速公路、机场和娱乐场所等.当然在线视频存储公司和电信公司等服务提供商也开始采用H.264标准。
视频压缩:
视频压缩通过减少和去除冗余视频数据的方式,达到有效发送和存储数字视频文件的目的。在压缩过程中,需要应用压缩算法对源视频进行压缩以创建压缩文件,以便进行传输和存储。要播放压缩视频时,则需要用相反的压缩算法对视频进行还原。当然压缩,解压缩,并且显示时间有一些延迟,成为时延。
视频编解码器是连个协同运转的压缩解压算法。
下面是在相同图像质量水平下,采用下列视频标准的比特率对比:M-JPEG,MPEG-4 Part 2(无运动补偿),MPEG-E Part 2(有运动补偿)和H.264(基准类)
视频解码器在进行解码时,必须始终从I帧()开始解码。如果使用了P帧和B帧,就必须与参与帧一起解码。
在H.264基准类中,仅仅使用了I帧和P帧,由于基准类没有使用B帧,所以可以实现低延时,是网络摄像头的首选。
那么H.264在视频质量保证的情况下,是怎么减少传递的数据量的呢?
我们知道在某一个图像帧中,只删除不必要的信息就可以减少数据量,但是这样会导致图像的分辨率降低。
差分编码:
在编码时,会将一个帧与参考帧(前面的I帧或P帧)进行对比,然后只对那些对于参考帧来说发生了变化的像素进行编码。
下图即使非差分编码与差分编码的区别对比:
差分编码适用于帧的相似性较大。但是如果视频中存在大量物体运动的话,就需要基于块的运动补偿技术。
基于块的运动补偿:
视频序列中构成新帧的大量信息都可以在前面的帧中找到,但可能会在不同的位置,所以,这种技术把一个帧分为一系列的宏块(如MPEG中,是分为16x16的像素块),然后在参考帧中查找匹配块的方式。
逐块的构建一个新帧,如果发现匹配的块,编码器只需要对参考帧中发现匹配块(相减后残差能量最小的 块)的位置进行编码,与对块的实际内容进行编码相对,只对运动矢量进行编码可以减少数据块。如下图,只需要对运动矢量进行编码,极大地减少了数据块。