【视频】编码基础知识之I帧、P帧、B帧

在视频压缩编码中,会将每一帧编码成I帧、P帧或者B帧.

I帧

I帧又称帧内编码帧,是一种自带全部信息的独立帧,无需参考其他图像便可独立进行解码,即全部为帧内编码。可以简单理解为一张静态画面。视频序列中的第一个帧始终都是I帧,因为它是关键帧。如果传输过程中I真丢失,画面最直接的影响就是会卡顿,因为后面的帧都无法正确解码,只能等待下一个GOP。

IDR帧

即时解码刷新,其实就是I帧,不过他是第一个I帧,或者是强制I帧,它的作用就是立即刷新,使错误不至于传播,从IDR开始,重新算一个新的序列开始编码。IDR会导致DPB(参考序列表)清空,而I帧不会,IDR帧一定是I帧,但是I帧不一定。一个图像序列中可以有很多I帧,一个I帧后的图像可以引用I帧之间的图像做运动参考,但是对于IDR帧来说,IDR帧后的图像不能引用IDR之前的帧内容,因为从IDR帧相当于重新开始。

P帧

P帧又称帧间预测编码帧,需要参考前面的I帧才能进行编码。表示的是当前帧画面与前一帧(前一帧可能是I帧也可能是P帧)的差别。解码时需要用之前缓存的画面叠加上本帧定义的差别(采用了预测编码),生成最终画面。与I帧相比,P帧通常占用更少的数据位,但不足是,由于P帧对前面的P和I参考帧有着复杂的依耐性,因此对传输错误非常敏感,所以如果P帧丢失,画面会出现马赛克现象,因为前向参考帧错误,补齐的并不是真正运动变化后的数据。

B帧

B帧又称双向预测编码帧,也就是B帧记录的是本帧与前后帧的差别。也就是说要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是对解码性能要求较高。如果图像中没有B帧,解码顺序和显示顺序相同;如果视频中含有B帧,解码顺序和现实序列不同,解码输出显示前需要进行图像重排列。目前接触到一般都是 I + P。

PTS:Presentation Time Stamp。PTS主要用于度量解码后的视频帧什么时候被显示出来

DTS:Decode Time Stamp。DTS主要是标识读入内存中的bit流在什么时候开始送入解码器中进行解码


例如:

编码器输入为:

1 2 3 4 5 6 7 

I B B P B B P

解码顺序(DTS也是这个顺序):

1I 4P 2B 3B 7P 5B 6B

显示顺序(PTS也是这个顺序):

1I 2B 3B 4P 5B 6B 7P

你可能感兴趣的:(【视频】编码基础知识之I帧、P帧、B帧)