普通I帧与IDR(Instantaneous Decoding Refresh,瞬时解码刷新)帧为均采用帧内预测技术的视频帧,同属于I帧。
区别是:采用IDR帧编码,会导致DPB(Decoded Picture Buffer,直译为解码图像缓冲区,即指参考帧列表)完成一次清空处理,而普通I帧不会。
那么,这样带来的直接结果是怎样的呢?
即,当前IDR帧后面的帧不会将当前IDR帧之前已经编码的帧作为参考帧;而当前普通I帧之后的帧有可能将当前I帧之前的帧作为参考帧。
那么,这样带来的直接效果是怎样的呢?
即,播放视频的时候,可以直接从IDR帧开始播放,因为IDR帧之前的帧与当前IDR帧和之后的帧再也没有直接地关联;而普通I帧则不行。
可以看到,一般来讲,一段视频的第0帧(也即首帧)是I帧,那么它算不算是IDR帧呢?答:算。
所以,IDR帧一定是I帧,反之不成立。
在H.264标准参考软件(JM)下,通过IDRIntraEnable来设置是否支持IDR帧。