H.264中普通I帧和IDR帧究竟有什么区别
参考百度知道:https://zhidao.baidu.com/question/1736344147087105907.html I帧中,有一类特殊的I帧,叫做IDR帧。IDR帧的性质是,比如第1000帧是IDR帧,那么这一帧相当于一个分水岭,从1001帧开始,所有的帧都不能再参照1000帧之前的帧。在closed GOP规定下,0~999帧也不允许参照这个IDR帧以及之后的帧。等于说IDR帧将视频分割成两个独立的 部分:前面的(closed GOP规定下)不能参照后面的,后面的不能参照前面的。 这个性质在播放的时候额外有用:如果我直接从第1000帧开始播放,我可以毫无问题的播放下去,因为我不需要 参照1000帧之前的内容完成解码。我从开头播放,直到999帧的时候,我都不需要参照1000帧及它后面的东西; 1000帧之后的数据都损坏了,0~999帧也能正常播放。 IDR的全称叫做Instantaneous Decoder Refresh,意思是,解码到当前帧,解码器就可以把缓存全清了——之前 的所有帧信息都没用了;后续帧不会再去参照它们。 视频开头的I帧一定是IDR帧。 有时候,我们用I帧表示IDR帧,i帧表示非IDR的I帧。这种场合下,I帧和i帧都是independent frame,区别 在是否是IDR。 两个IDR帧之间的区间,从一个IDR帧开始,到下一个IDR前的帧结束,叫做IDR区间,又叫做GOP区间。closed GOP设定下,GOP区间可以看做是独立的一段视频:它里面的所有帧,都不需要参照任何区间之外的东西,只要 一个GOP区间是齐全的,区间里面所有的帧都能被解码。我们平时看的视频就是多段GOP区间连接起来的。