I 帧是什么缩写?
I = Intra-coded Frame(帧内预测帧)
意思:
- 只使用当前帧内部的信息进行编码
- 不参考任何其他帧
- 相当于一张完整的图片
- 体积最大,但可以独立解码
P 帧是什么缩写?
P = Predictive frame(预测帧)
意思:
- 参考前面的帧(I 帧或 P 帧)
- 只记录与参考帧的差异
- 体积比 I 帧小很多
- 解码时必须依赖前面的帧
B 帧是什么缩写?
B = Bi-directional predictive frame(双向预测帧)
意思:
- 同时参考前面和后面的帧
- 压缩率最高(体积最小)
- 解码最复杂
- 播放顺序 ≠ 编码顺序
三者一句话总结
- I 帧:Intra,帧内预测,完整画面
- P 帧:Predictive,前向预测,参考过去
- B 帧:Bi-directional,双向预测,参考过去 + 未来
- 解码过程先从I帧开始,依次解码P帧和B帧。I帧是独立帧,先被解码。然后,解码器利用I帧的信息来解码P帧,最后结合I帧和P帧的信息来解码B帧。这种顺序确保了视频帧能够按照正确的时间顺序显示。
二、用一个具体例子说明(最清楚)
假设播放顺序是:
1(I) → 2(B) → 3(B) → 4( P) → 5(B) → 6(B) → 7( P)
1)编码顺序(编码器实际处理顺序)
因为 B 帧要参考未来帧,所以顺序变成:
1(I) → 4( P) → 2(B) → 3(B) → 7( P) → 5(B) → 6(B)
编码器必须先编码未来的 P 帧,再回来编码 B 帧。
2)解码顺序(解码器接收并解码的顺序)
解码器必须按编码器输出的顺序来解码:
1(I) → 4( P) → 2(B) → 3(B) → 7( P) → 5(B) → 6(B)
因为解码器必须先拿到 B 帧依赖的所有参考帧。
3)播放顺序(最终显示给用户的顺序)
播放器会把解码后的帧重新排序成时间顺序:
1(I) → 2(B) → 3(B) → 4( P) → 5(B) → 6(B) → 7( P)
四、一句话总结(最重要)
- 编码顺序 = 解码顺序(都是 I → P → B)
- 播放顺序 = 时间顺序(I → B → B → P → B → B → P)
- B 帧导致了这种差异