9、H.264码流分析

目录

一、实验简介

二、实验步骤及结果

1. SPS、PPS分析

(1)序列参数集SPS

(2)图像参数集PPS

2. GOP分析

  (1)图像帧类型与所用比特数分析

(2)I帧分析

(3)P帧分析

(4)B帧分析


一、实验简介

用码流分析仪H264Visa、Elecard StreamEye Tools打开一个.mp4或.264文件,从SPS、PPS、GOP中I、P、B帧的层次进行码流分析。

二、实验步骤及结果

1. SPS、PPS分析

用Elecard StreamEye Tools打开Movie.mp4文件。

 从【File】中可知:

该视频的分辨率为640*368,帧率为48,profile为High,Level为3.1级。

(1)序列参数集SPS

参数名称 内容 说明
profile_idc High 标识当前H.264码流的profile。
level_idc 31 标识当前码流的Level。Level定义了某种条件下的最大视频分辨率、最大视频帧率等参数,码流所遵从的level由level_idc指定。
seq_parameter_set_id 0 表示当前的序列参数集的id。通过该id值,PPS可以引用其代表的SPS中的参数。
 log2_max_frame_num_minus4 2 用于计算MaxFrameNum的值。MaxFrameNum是frame_num的上限值,frame_num是图像序号的一种表示方法,在帧间编码中常用作一种参考帧标记的手段。
pic_order_cnt_type 0 表示解码picture order count(POC)的方法。POC是另一种计量图像序号的方式,与frame_num有着不同的计算方法。
num_ref_frames 16 表示参考帧的数目。
pic_width_in_mbs_minus1 39

用于计算图像的宽度。单位为宏块个数,因此图像的实际宽度为:16×(39+1)=640。

pic_height_in_map_units_minus1 22 用于计算图像的高度。单位为宏块个数,因此图像的实际宽度为:16×(22+1)=368。
frame_mbs_only_flag 1 标识位,说明宏块的编码方式。当该标识位为0时,宏块可能为帧编码或场编码;该标识位为1时,所有宏块都采用帧编码。

(2)图像参数集PPS

参数名称 内容 说明
pic_parameter_set_id 0 表示当前PPS的id。
seq_parameter_set_id 0 表示当前PPS所引用的激活的SPS的id。
entropy_coding_mode_falg 1 熵编码模式标识,该标识位表示码流中熵编码/解码选择的算法。值为0时,选择左边的算法,通常为指数哥伦布编码或者CAVLC;当该值为1时,选择右边的算法,通常为CABAC。
 num_slice_groups_minus1 0 表示某一帧中slice group的个数。当该值为0时,一帧中所有的slice都属于一个slice group。
weighted_pred_flag 1 标识位,表示在P/SP slice中是否开启加权预测。
weighted_bipred_idc 2 表示在B Slice中加权预测的方法,取值范围为[0,2]。0表示默认加权预测,1表示显式加权预测,2表示隐式加权预测。
 chroma_qp_index_offset -2

用于计算色度分量的量化参数,取值范围为[-12,12]。

deblocking_filter_control_present_flag 1 标识位,用于表示Slice header中是否存在用于去块滤波器控制的信息。当该标志位为1时,slice header中包含去块滤波相应的信息;当该标识位为0时,slice header中没有相应的信息。
constrained_intra_pred_flag 0 若该标识为1,表示I宏块在进行帧内预测时只能使用来自I和SI类型宏块的信息;若该标识位0,表示I宏块可以使用来自Inter类型宏块的信息。

2. GOP分析

(1)图像帧类型与所用比特数分析

 由图可知:

红色为I帧,蓝色为P帧,绿色为B帧;该视频序列中每个GOP中有250帧。

Number in Stream order与Number in Display order不同,前者是解码顺序,后者是显示顺序;

橙色水平线表示该视频序列的平均比特数,其中I帧所用的编码比特数最多,其次是P帧,B帧所

用的比特数最少。

以图像帧号为横坐标、每帧所用比特数为纵坐标画出曲线图:

(2)I帧分析

用H264Visa打开Movie.mp4文件,分析第一个I帧。

可以看出此I帧中的所有宏块都是I类型的,大小有16×16、8×8、4×4三种。

在图像突变处,宏块划分得更细,宏块较小;在图像平坦处,宏块较大。

(3)P帧分析

 

可以看出此P帧中的宏块大部分为16×16和16×8的块,P型宏块占多数,少数为I型宏块;

在前后图像变化较大的区域,该宏块在之前的帧中找不到相似的宏块,因此使用I帧编码方式。

(4)B帧分析

可以看出此B帧中的宏块都为B型宏块,且大部分为B_skip。

  

猜你喜欢

转载自blog.csdn.net/m0_51333023/article/details/125599071