H.264中I帧和IDR帧的区别

date: 2014.12.08; modification:2014.12.08

IDR(Instantaneous Decoding Refresh)--即时解码刷新.

I和IDR帧都是使用帧内预测的. 它们都是同一个东西而已,在编码和解码中为了方便, 要首个I帧和其他I帧区别开, 所以才把第一个首个I帧叫IDR, 这样就方便控制编码和解码流程. IDR帧的作用是立刻刷新,使错误不致传播,从IDR帧开始,重新算一个新的序列开始编码. 而I帧不具有随机访问的能力, 这个功能是由IDR承担. IDR会导致DPB(DecodedPictureBuffer 参考帧列表——这是关键所在)清空, 而I不会. IDR图像一定是I图像, 但I图像不一定是IDR图像. 一个序列中可以有很多的I图像, I图像之后的图像可以引用I图像之间的图像做运动参考.

对于IDR帧来说, 在IDR帧之后的所有帧都不能引用任何IDR帧之前的帧的内容, 与此相反, 对于普通的I-帧来说, 位于其之后的B-和P-帧可以引用位于普通I-帧之前的I-帧. 从随机存取的视频流中, 播放器永远可以从一个IDR帧播放, 因为在它之后没有任何帧引用之前的帧. 但是, 不能在一个没有IDR帧的视频中从任意点开始播放, 因为后面的帧总是会引用前面的帧.

转自: http://blog.csdn.net/heanyu/article/details/6255111