1、H264帧类型定义:
在H264
的编码中,通常以三种不同类型的帧来表示传输的画面,分别是
I
帧、
P
帧、
B
帧。每一帧相当于每一幅静止的画面,而在实际的传输过程中会利用各种视频压缩算法大幅度减少视频传输的体积,其中I
、
P
、
B
是我们最常见的。
![](https://i-blog.csdnimg.cn/blog_migrate/6e82197d8316113ad8acf1bafa04148d.png)
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
资源。
三、slice:
slice
中文的意思是叫做片,为什么需要这个片,主要是为了并行编码设计,所谓的并行编码指的是,把一帧图像分成几个片,并片之间是相互独立进行编码的!
h264
的中编码的基本单元是宏块,一个
slice
包含多个宏块,所以一帧图像的层次结构如下:
![](https://i-blog.csdnimg.cn/blog_migrate/8f41059881cc74108ef33d4bdec183f7.png)