(图之后放)
首先知道I、P、B帧的概念是非常重要的。
I帧即关键帧或帧内帧(I-frame or Key-Frame or Intra-frame)仅做帧内预测,用于给GOP中的其他帧做参考帧。
P帧 可以做帧内预测,也可以做帧间预测,但只能做前向。
B帧做帧间预测,双向。B帧可以参考两帧或者多帧,通常这两个参考帧一帧在前,一帧在后。我们也已知道,I帧不参考任何帧,P帧只参考前面的帧。那么问题来了——任何帧都能使用B帧作为它的参考帧吗?
答案是肯定的。
-
如果B帧可以作为参考帧,它就被称为参考B帧。
-
如果B帧不用作参考帧,它便被称为非参考B帧。
在比特流中标明参考B帧和非参考B帧非常重要,因为解码器需要在DBP(Decoded Picture Buffer,解码图像缓存)中存储参考帧。
如果某一帧被标记为非参考B帧,但却将其用作参考帧,那么解码器很可能崩溃。因为解码器大概率在解码和显示之后就已经删除此帧。
与非参考B帧相比,大部分解码器在量化参考B帧时会获得更好的质量,从而减少传播损失
P和B帧的存在就是为了压缩,视频编码的主要目的也就是压缩。
视频序列进入编码器后,会进行预测,预测及遍历,找到最优模式后与图像做差,获得残差值,残差值要经历变换(能量集中化),量化(精低频,粗高频),熵编码(转成码流),不仅如此,量化后的值还要经历反变化,滤波来参加预测。