一、H.264简介
H.264是国际标准化组织(ISO)和国际电信联盟(ITU)在2002年12月共同提出的继MPEG-4之后的新一代数字视频压缩格式,其具有更高的编码效率,并注重对移动和IP网络的适应,考虑信道的特点,能控制误码扩散。
标准定义的是编码视频比特流的语法结构和对该比特流解码的方法。H.264标准的预测、变换、量化、熵编码等基本功能模块与前几个标准(MPEG-1, MPEG-2, MPEG-4,H.261,H.263)并无太大区别。变化主要体现在功能模块的具体细节上。
编码器如下图所示。
解码器如下图所示。
二、H.264码流分析
1、SPS分析
SPS即Sequence Paramater Set,又称为序列参数集。SPS中保存了一组编码视频序列的全局参数。
H264Visa打开test.264文件后可以查看到该文件的SPS信息。如下图所示。
SPS各参数含义如下表所示。
2、PPS分析
H.264中另一重要的参数集合为图像参数集Picture Paramater Set(PPS)。
PPS各参数含义如下表所示。
3、GOP分析
(1)GOP简介
GOP(Group of Pictures,图像组)是将一个图像序列中连续的几个图像组成的一个小组,是对编码后的视频码流进行编辑、存取和压缩编码的基本单元,包含不同种类编码的帧。如下图所示。
GOP大小不固定,但GOP一定以I帧开始,但每个GOP可能包含多个I帧。
增大GOP或提高GOP中P/B帧的占比,可以提高压缩比,降低码率。因此一般而言,在码率一定的条件下,GOP越大,图像质量越好(P/B帧的比重更大);在图像质量一定的条件下,GOP越大,码率越低。
闭合GOP(Closed GOP)与开放GOP(Open GOP):在H.264的GOP中,所有的GOP都是独立解码的,与其他GOP无关,即它们都是“闭合”的。但是在HEVC中,GOP的结构发生了变化,采用了“开放”的结构,在解码过程过可能会参考其他GOP的数据。
(2)图像帧的编码比特数
以一个GOP为例,分析每个图像帧的类型及所用的编码比特数、QP值;并以图像帧号为横坐标、每帧所用比特数为纵坐标画出曲线图;以图像帧号为横坐标、每帧所用QP为纵坐标画出曲线图。
用ESEyE打开test.264,如下图所示。下图红色处为第二个GOP的I帧。
以第一个GOP为例,第一个GOP长度为250,我们导出他的statistic数据。如下图所示。
以图像帧号为横坐标、每帧所用比特数为纵坐标画出曲线图。如下图所示。
各帧平均量化比特数如下图所示。
可见,I帧的比特数是最多的,P帧次之,B帧最少。
(3)IPB帧分析
下图为第一个I帧。
其宏块统计信息如下图所示。
可见,I帧作为帧内预测帧,无参考帧,编码时多采用8×8 、16×16的宏块,细节部分也采用4×4的宏块,比如肩膀与背景交界处、领带处等。平均每个宏块编码比特数为37.480,QP值为27.328。
下图为第一个P帧。
其宏块统计信息如下图所示。
可见,P帧大部分采用帧间编码,从运动矢量也可以看出这些位置与I帧的差别并不是很大,部分
采用帧内编码。具有较多Skip宏块即残差为0的宏块。平均每个宏块编码比特数为10.870,QP值为30.558。
下图为第一个B帧。
其宏块统计信息如下图所示。
可见,B帧作为双向参考帧,有很多Skip宏块,且压缩较高,平均每个宏块编码比特数为1.596,QP值为23.333。