一、实验要求
- 选择一个.mp4或者.264文件。
- 在码流分析仪软件中打开该文件,从几个层次进行分析:
(1)分析SPS和PPS里都包含哪些主要的信息,给出参数值。(例如分辨率、帧率、GOP结构等等)
(2)以一个GOP为例,分析如下信息: - 每个图像帧的类型及所用的编码比特数、QP值;并以图像帧号为横坐标、每帧所用比特数为纵坐标画出曲线图;以图像帧号为横坐标、每帧所用QP为纵坐标画出曲线图。
- 以第一个I帧作为分析对象,基于该帧图像的空间特性,分析每个宏块所采用的编码类型及其比例。
- 以第一个P帧作为分析对象,基于该帧图像的空间和时间特性,分析每个宏块所采用的编码类型及其比例。
- 以某一个B帧作为分析对象,基于该帧图像的空间和时间特性,分析每个宏块所采用的编码类型及其比例。
二、实验原理
1、帧内预测和帧间预测
-
帧内预测编码:
根据邻近块的值来预测当前宏块的值,再对预测值和原始值的差值进行变换、量化和编码。对于亮度块,使用4×4与16×16编码模式,对色度块采用8×8编码模式。
以亮度块的4×4帧内预测模式为例,由周围的15个像素预测4×4的16个像素,共有9种预测模式。 -
帧间预测编码:
-
I帧:只由帧内宏块组成 。此外还有IDR帧,是GOP的第一个I帧,其后的所有帧都不能参考IDR帧之前帧的内容(位于普通的I帧之后的P/B帧可以参考其之前的I帧)
GOP以I帧开始,每个GOP可能包含多个I帧。H.264的所有的GOP都是独立解码的,即封闭GOP。 -
P帧:包含前向运动补偿(前面的I或P帧)、帧内宏块
-
B帧:包含前向、后向和双向运动矢量和帧内宏块
2.SPS、PPS
视频编码都是基于树状的分层结构:图像组GOP层、图像层、片层、宏块层和快层。将片层以上很少变化的系统级信息存放在序列参数集SPS和图像参数集PPS中传送,与图像具体内容不相关。
(1)序列参数集
说明的是某一段视频序列的编码特性:
profile_idc,level_idc说明该段视频序列遵循的是H.264/AVC标准的哪一种配置,以指导解码端调用合适的解码器进行解码
pic_order_cnt_type说明每帧图像的记数方法;pic_width_in_mbs_minusl和pic_height_in_mbs_minusl说明图像帧的宽度和高度
sequence_parameter_set_id来区分不同的序列参数集,方便解码端进行参考
(2)图像参数集PPS
说明的是某个图像帧的编码特性,最主要的部分是该图像帧的Slice Group划分方式的表示:
num_slice_groupes_minusl说明该图像帧中Slice group的数目
num_slice_group_map_type说明slice group的划分方式
pic_parameter_set_id来区分不同的图像参数集