H.264编解码介绍

为什么要编码?

视频本质上就是一张张连续的图片快速播放。假设我们现在有24张联系的图片,将他们在1秒内快速切换,那么就形成了一个1秒的视频。

人眼睛的敏感度有限。一般来说,24到30 FPS之间的帧率已经足够让人感觉到动作的流畅性。但是就算如此,如果播放一个1分钟的1080P视频:

这实在太大了,所以我们需要使用编码的方式去压缩数据。

编码的目的:

编码的目的,就是为了压缩。各种视频编码方式,都是为了让视频变得体积更小,有利于存储和传输。编码的 核心思想就是去除冗余信息

编码的思路:

空间冗余 == 相邻像素重复:

1
空间冗余:图像内部相邻像素之间存在较强的相关性多造成的冗余。

时间冗余 == 帧之间差值:

1
时间冗余:视频图像序列中的不同帧之间的相关性所造成的冗余。

视觉冗余 == 人类不敏感的颜色

1
视觉冗余:是指人眼不能感知或不敏感的那部分图像信息

信息熵冗余 == 熵编码-哈夫曼算法

1
信息熵冗余:也称编码冗余,人们用于表达某一信息所需要的比特数总比理论上表示该信息所需要的最少比特 数要大,它们之间的差距就是信息熵冗余,或称编码冗余。

知识冗余 == 人类(头 身体 腿),汽车,房子 不需要记录

1
知识冗余:是指在有些图像中还包含与某些验证知识有关的信息。

基于以上思路,我们将传输的数据分成三种类型的帧数据:I帧、P帧和B帧

帧内编码:I帧

I帧(Intra-coded Frame),即帧内编码,是一种独立的压缩方式。I帧完全自包含,它不依赖于其他帧的数据。每个I帧都包含完整的图像信息,类似于一张静态图片。这是视频流中的关键帧,其他帧(P帧和B帧)都需要依赖于I帧进行解码。

I帧的优点是解码时不需要参考其他帧,能够快速显示画面。它通常作为视频流的起始点或恢复点,保证视频流的稳定性。缺点是,I帧的文件体积较大,因为它包含了完整的图像数据,而没有任何冗余信息。这使得I帧的压缩效率较低,尤其是在视频变化较小的情况下。

帧间编码:P帧和B帧

与I帧不同,P帧(Predicted Frame)和B帧(Bidirectional Predicted Frame)是帧间编码的代表。它们通过参考之前(P帧)或前后两帧(B帧)来编码差异数据,从而实现高效的压缩。

P帧通过参考前一帧的数据来预测当前帧,因此可以仅编码与前一帧的差异。相比I帧,P帧的压缩效率更高,文件体积更小。

B帧通过参考前后两帧的数据进行编码,压缩效果比P帧更强。B帧能够更精确地表示视频帧之间的变化,因此其压缩效率是三者中最优的。


H.264编解码介绍
https://tangerine-kitten-lux.netlify.app/H-264编解码介绍/
作者
lux
发布于
2025年5月12日
许可协议