视频压缩格式H.264中时间冗余与运动补偿问题
Posted VE视频引擎
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了视频压缩格式H.264中时间冗余与运动补偿问题相关的知识,希望对你有一定的参考价值。
在使用FFMpeg的过程中,会经常遇到几种视频压缩格式H.263, H.264, H.265等。其中H.264格式使用最为广泛与流行,其以致力于提供更高的编码效率与连续的高质量视频画面而闻名
H.264 采用的主要压缩技术
- 帧内预测压缩技术
- 帧间预测压缩技术
- 整数离散余弦变换等
数据冗余问题
在视频压缩过程中,如何保证拥有高质量画面的同时提供更高的编码效率呢?这就要解决视频压缩过程中的数据冗余问题
- 空间数据冗余
- 时间数据冗余
在一个高帧率的视频中,每一帧与其相邻帧之间的图像是非常相似的,往往只有细微的差距。如果保存了所有帧的数据,这就造成了时间数据冗余问题。没有必要保存所有帧数据,只需要保存每一组相似图像帧中的第一帧数据(如何对判定帧与帧之间是相似的,从而可以判定为一组呢?)然后通过某种算法来预测该组内剩余帧的数据(涉及到了运动估计与运动补偿)
帧分组
判定相邻帧是相似的可以划分为一组的依据:在相邻几幅图像帧数据中,只有10%以内的像素店有差别,且其亮度值差别不超过2%,色度值差别不超过1%,就认为这样图像可以划分为一组。
我们只保存每一个相似组中的第一帧(IDR帧)的数据,而剩余的帧(P帧),通过帧间预测压缩技术来预测出来
帧间预测压缩技术
又称运动估计与补偿技术,简单描述就是记录一个相似组内某个物体的运行轨迹(运动矢量)信息,在解压缩时通过这个轨迹信息和把保存的第一帧数据来恢复剩余的帧数据。
如何获取物体的运动矢量?
编码器在对帧数据进行扫描时,获取到某个物体的具体位置(X, Y),然后在其相邻帧中的(X, Y)的临近位置寻找该物体,获取具体位置(X1, Y1),扫描完一个相似组后就获取了一系列的位置坐标。通过这些位置坐标就可以计算运动矢量。
该技术解决的是时间维度上的数据冗余问题。
以上是关于视频压缩格式H.264中时间冗余与运动补偿问题的主要内容,如果未能解决你的问题,请参考以下文章
WebRTC Native M96 视频发送编码(OpenH264)流程以及接收视频包解码(FFmpeg)播放流程