做视频开发,特别是视频压缩、直播流优化,一个最基本的需要了解的概念就是IPB帧
IPB帧
视频压缩中,每帧都代表着一幅静止的图像,而在进行压缩时,会采取各种算法以减少数据的容量,IPB帧就是最常见的一种
I 帧
帧内编码帧(intra picture)
,I帧
通常是每个GOP(MPEG所使用的一种视频压缩技术)
的第一个帧,经过适度地压缩,作为随机访问的参考点,可以当成静态图像。I帧
可以看作一个图像经过压缩后的产物,I帧
可以得到6:1
的压缩比二不会产生任何可察觉的模糊现象。I帧压缩可去掉视频的空间冗余
信息
P 帧
前向预测编码帧(predictive-frame)
,通过将图像序列中前面已编码帧的时间冗余
信息冲分去除来压缩传输数据量的编码图像,也称预测帧
B 帧
双向预测内插编码帧(bi-directional interpolated prediction frame)
,既考虑源图像序列前面的已编码帧,又顾及源图像序列后面的已编码帧之间的时间冗余
信息,来压缩传输数据量的编码图像,也称双向预测帧
从编码角度理解
I帧
自身可以通过视频解压算法解压成一张单独的完整视频画面,所以I帧去掉的是视频帧在空间维度上的冗余信息
P帧
需要参考其前面的一个I帧或P帧来解压成一张完整的视频画面
B帧
则需要参考其前一个I帧或P帧及其后面的一个P帧来生成一张完整的视频画面,所以P帧与B帧去掉的是视频帧在时间维度上的冗余信息
IDR帧与I帧区别
H264
中有一个帧称为IDR帧(instantaneous decoding refresh picture)
,因为H264
采用了多帧预测,所以I帧
之后的P帧
有可能会参考I帧
之前的帧,这就使得随机访问的时候不能以找到I帧
作为参考条件,因为即使找到I帧
,I帧
之后的帧还是有可能解析不出来,而IDR帧
就是一种特殊的I帧
,即这一帧之后的所有参考帧只会参考到这个IDR帧
,而不会再参考前面的帧,在解码器中,一旦收到一个IDR
帧,就会立即清理参考帧缓冲区,并将IDR
帧作为被参考的帧