I帧、P帧、B帧,以及PTS、DTS
一、概述
- 视频压缩中,每帧代表一幅静止的图像。而在实际压缩时,会采取各种算法减少数据的容量,其中IPB就是最常见的,p和b都是基于I帧来压缩数据。
- I帧(intra picture)是关键帧,属于帧内压缩,也就是在解码的时候该帧可以独立的完成解码
- P帧(predictive-frame)为向前预测编码帧,即P帧解码时需要参考前面相关帧的信息才能解码;
- B帧(bi-directional interpolated prediction frame)为双向预测内插编码帧,解码时既需要参考前面已有的帧又需要参考后面待解码的帧
- PTS(Presentation Time Stamp):PTS主要用于度量解码后的视频帧什么时候被显示出来
- DTS(Decode Time Stamp):DTS主要是标识读入内存中的bit流在什么时候开始送入解码器中进行解码
- 两个I帧之间形成一个GOP,在x264中可以通过参数来设定bf的大小,即:I 和p或者两个P之间B的数量。
- 通过上述基本可以说明如果有B帧 存在的情况下一个GOP的最后一个帧一定是P。
二、I,P,B帧特点及DTS和PTS的不同
1、I帧
- 1、它是一个全帧压缩编码帧。它将全帧图像信息进行JPEG压缩编码并传输;
- 2、解码时仅用I帧的数据就可重构完整图像;
- 3、I帧描述了图像背景和运动主体的详情;
- 4、I帧不需要参考其他画面而生成;
- 5、I帧是P帧和B帧的参考帧(其质量直接影响到同组中以后各帧的质量);
- 6、I帧是帧组GOP(图像组)的基础帧(第一帧),在一组中只有一个I帧;
- 7、I帧不需要考虑运动矢量;
- 8、I帧所占数据的信息量比较大。
2、P帧
- 1、P帧是I帧后面相隔1~2帧的编码帧;
- 2、P帧采用运动补偿的方法传送它与前面的I或P帧的差值及运动矢量(预测误差);
- 3、解码时必须将I帧中的预测值与预测误差求和后才能重构完整的P帧图像;
- 4、P帧属于前向预测的帧间编码。它只参考前面最靠近它的I帧或P帧;
- 5、P帧可以是其后面P帧的参考帧,也可以是其前后的B帧的参考帧;
- 6、由于P帧是参考帧,它可能造成解码错误的扩散;
- 7、由于是差值传送,P帧的压缩比较高。
3、B帧
- 1、B帧是由前面的I或P帧和后面的P帧结合来进行预测的;
- 2、B帧传送的是它与前面的I或P帧和后面的P帧之间的预测误差及运动矢量;
- 3、B帧是双向预测编码帧;
- 4、B帧压缩比最高,因为它只反映两参考帧间运动主体的变化情况,预测比较准确;
- 5、B帧不是参考帧,不会造成解码错误的扩散。
4、DTS和PTS的不同
- DTS主要用于视频的解码,在解码阶段使用。
- PTS主要用于视频的同步和输出。在display的时候使用
- 在没有B frame的情况下,DTS和PTS的输出顺序是一样的
三、MPEG压缩方式
1、MPEG压缩方式的影响参数
- GOP(Group Of Picture)图像组的长度,一般可以编码方式的长度为1-15。
- I帧和P帧之间B帧的数量,一般是1~2个。
2、解码的参照帧及其解码的顺序
参考网址:
https://blog.csdn.net/davidsguo008/article/details/72628690
https://blog.csdn.net/austinblog/article/details/25184103
https://blog.csdn.net/jgl841001/article/details/8055524
还没有评论,来说两句吧...