一、H264帧类型定义:
在H264的编码中,通常以三种不同类型的帧来表示传输的画面,分别是I帧、P帧、B帧。每一帧相当于每一幅静止的画面,而在实际的传输过程中会利用各种视频压缩算法大幅度减少视频传输的体积,其中I、P、B是我们最常见的。
- I帧:I帧指的是一副完整的画面,他不需要参考任何帧就可以解码出来。
- P帧:P帧指的是前向参考帧,它需要参考前一帧的图片才能够正确把数据解码出来。
- B帧:B帧指的是双向参考帧,它需要参考前一帧数据和后一帧数据才能够正常把数据解码出来。
二、H264帧类型详解:
I帧:I帧通常又称之为内部画面,它通常是视频编码的第一帧。它的最大特点是自带一个完整的图像信息,在解码的过程中只需要解码本帧就可以完整地提取出一个完整的画面。假设一个视频中丢失了I帧,则整个视频则会处于黑屏状态,后面的视频则无法正常播出。由此可见,I帧在视频编码中扮演着相当重要的角色。但是它也有自身的缺点,那就是I帧的体积比较大,假设在传输视频中全部采用I帧去传输,那整个网络链路都承受着巨大的压力。所以,I帧就要配合P帧、B帧等进行数据的传输。
P帧:P帧又称之为前向参考帧,此帧的特点是需要参考前一帧的图像信息才可以正确把图像解码出来。P帧指的是这一帧和前一帧的差别,并通过将图像序列中已经编码后的冗余信息充分去除来压缩传输数据量的编码图像。
B帧:B帧也称之为双向参考帧,B帧的特点是以前面的帧(I帧或者P帧)或者后面的帧(也是I帧、P帧)作为参考帧找出B帧的预测值,并且取预测差值和预测矢量进行传送。所以在拉流端解码B帧的时候不仅需要获得前面的缓存视频,还需要获得后面的缓存视频才能够正常解码B帧。所以,B帧虽然压缩率更高,但是更消耗CPU资源。
接下来我们再来看一下上图中的GOP含义:
GOP指的是两个I帧之间的距离,在一个GOP包含了一组连续的图片。如图所示,在一个GOP中包含了I帧、P帧、B帧,直到下一个I帧的出现,一个GOP才算结束。通常来说,I帧所占用的字节和体积大于P帧、而P帧所占用的字节大于B帧。所以在码率不变的情况下,可以调整GOP的长度去改善画质,GOP的长度越长,所得到的P帧和B帧更多,画面的质量和细节就会更好。