视频压缩基本原理完全讲解
来源:太平洋安防网 编辑:QQ123 2021-06-02 09:07:45 加入收藏
视频编解码器
在压缩过程中,需要应用压缩算法对源视频进行压缩以创建压缩文件,以便进行传输和存储。要想播放压缩文件,则需要应用相反的解压缩算法对视频进行还原,还原后的视频内容与原始的源视频内容几乎完全相同。文件压缩、传送、解压和显示所需的时间称为时延。压缩算法越高级,时延就越长。
视频编解码器(编码器/解码器)是指两个协同运行的压缩-解压算法。使用不同标准的视频编解码器通常彼此之间互不兼容;也就是说,使用一种标准进行压缩的视频内容无法使用另外一种标准进行解压缩。例如,MPEG-4 Part 2解码器就不能与H.264编码器协同运行。
这是因为一种算法无法正确地对另外一个算法的输出信号进行解码,然而我们可以在同一软件或硬件中使用多种不同的算法,实现多种格式共存。
图像压缩与视频压缩
由于不同的视频压缩标准会使用不同的方法来减少数据量,因此压缩结果在比特率、质量和时延方面也各不相同。
图像压缩采用帧内编码技术。这种技术通过删除肉眼看不到的无关信息,仅压缩一帧图像内的数据。M-JPEG是这种压缩标准的一个例子。M-JPEG序列中的图像按单个JPEG图像进行编码或压缩。
视频压缩算法,如MPEG-4和H.264等,采用帧内预测模式压缩一系列帧之间的数据。这种算法涉及多种技术,如差分编码,一帧与参考帧进行比较,仅编码相对于参考帧发生变化的像素。这种方法减少了编码和发送的像素值数量。这种顺序编码的图像以原有视频顺序显示。
对差分编码(包括H.264在内的大多数视频压缩标准都采用这种方法)来说,只有第一个图像(I帧)是将全帧图像信息进行编码。在后面的两个图像(P帧)中,其静态部分(即房子)将参考第一个图像,而仅对运动部分(即正在跑步的人)使用运动矢量进行编码,从而减少发送和存储的信息量。
其他技术,如基于块的运动补偿可用来进一步减少数据。基于块的运动补偿考虑到视频序列中构成新帧的大量信息都可以在前面的帧中找到,但可能会在不同的位置上。
所以,这种技术将一个帧分为一系列的宏块(像素块)。然后,通过在参考帧中查找匹配块的方式,逐个块地构建或者“预测”一个新帧。如果发现匹配的块,编码器只需要对参考帧中发现匹配块的位置进行编码。从名称可以看出,与对块的实际内容进行编码相比,只对运动矢量进行编码可以减少所占用的数据位。
采用帧间预测编码帧时,将会把图像序列中的帧划分为不同类型的帧,如I帧、P帧或B帧。
I帧(帧内编码帧)是一种自带全部信息的独立帧,无需参考其它图像便可独立进行解码。视频序列中的第一个帧始终都是I帧。如果所传输的比特流遭到破坏,则需要将I帧用作新查看器的起始点或重新同步点。I帧可以用来实现快进、快退以及其它随机访问功能。
如果新的客户端将参与查看视频流,编码器将以相同的时间间隔或者根据要求自动插入I帧。I帧的缺点在于它们会占用更多的数据位,但从另一方面看,I帧不会因丢失数据而产生可觉察的模糊现象。
P帧(帧间预测编码帧)需要参考前面的I帧和/或P帧的不同部分才能进行编码。与I帧相比,P帧通常占用更少的数据位,但其缺点是,由于P帧对前面的P和I参考帧有着复杂的依赖性,因此对传输错误非常敏感。
B帧(双向预测编码帧)需要同时以前面的帧和后面的帧作为参考帧。采用B帧会加大时延。
当视频解码器逐个帧地对比特流进行解码以便重构视频时,必须始终从I帧开始解码。如果使用了P帧和B帧,则必须与参考帧一起解码。
安讯士网络视频产品允许用户设置GOV(视频组)长度,用以确定发送另一I帧之前需要发送多少P帧。降低I帧的频率(延长GOV),可降低比特率。若要缩短时延,则不使用B帧。
除差分编码和运动补偿外,还可以采用其他先进方法减少数据量,提高视频质量。例如,H.264支持各种高级技术,从用于I帧编码的预测机制、改进运动补偿到亚像素精度、环内去块效应滤波器直至平滑块边缘(模糊现象)等。
评论comment