H.264 标准中有 Instantaneous Decoding Refresh(IDR,即时解码刷新,以下称
I 帧)。H.264 图像以序列为单位进行组织,一个序列是一段图像编码后的数据流,该序列以 I
帧开始,到下一个 I 帧结束。两个 I 帧之间为多个 P 帧(Predictive-frame)或 B
帧(Bi-directional predicted frames),设置的编码关键帧间隔时间就是
IDR 间隔时间。
I 帧:通常是每个 GOP(Group Of Picture) (MPEG 所使用的一种视频压缩技术)
的第一个帧,I 帧图像采用帧内编码方式,即只利用了单帧图像内的空间相关性,而没有利用时间相关性。I
帧使用帧内压缩,不使用运动补偿,由于 I 帧不依赖其它帧,所以是随机存取的入点,同时是解码的基准帧。I
帧主要用于解码器的初始化,以及节目的切换和插入,I 帧图像的压缩倍数相对较低,I
帧图像是周期性出现在图像序列中的,出现频率可由编码器选择,I 帧压缩可去掉视频的空间冗余,而 B、P
则是为了去掉时间冗余。
P
帧:向前参考帧(第一帧之后的帧,只存在和前一帧的差异,可以提高压缩效率和图像质量),压缩时只参考前一个帧,属于帧间编码方式(即同时利用了空间和时间上的相关性),P
帧图像中可以包含帧内编码的部分,即 P 帧中的每一个宏块可以是前向预测,也可以是帧内编码;它参考前一个
B 帧或 I 帧来解码出一张完整的图像。
B
帧:双向参考帧,压缩参考前一帧和后一帧,属于帧间压缩技术。压缩比高,如果网络不好,对实时要求高的话会一直等待,实时互动直播一般不使用,值得注意的是,由于
B 帧图像采用了未来帧作为参考,因此 MPEG-2 编码码流中图像帧的传输顺序和显示顺序是不同的。
因为 H.264 采用了多帧预测,所以 I 帧之后的 P帧可能会参考 I
帧之前的帧,这使得在随机访问的时候不能以找到 I 帧作为参考条件,因为即使找到了 I 帧,I
帧之后的数据也有可能解不出数据,而IDR 帧就是一种特殊的 I 帧(这一帧之后的所有参考帧只会参考IDR,而不会参考其他前面的帧)。在解码器中,一旦收到
IDR 帧,就会立即清理参考帧缓冲区,并将 IDR 帧作为被参考帧。