数据压缩实验——H.264视频分析

H.264文件分析

SPS:Sequence Paramater Set,又称作序列参数集
PPS:Picture Paramater,图像参数集

SPS分析

一、选择一个.mp4或者.264文件。
二、在码流分析仪软件中打开该文件
SPS信息
profile_idc:标识当前H.264码流的档次
profile_idc
本例中profile_idc=100,说明是High(FRExt)档次

而constraint_set0_flag ~ constraint_set3_flag是在编码的档次方面对码流增加的其他一些额外限制性条件

level_idc:标识当前码流的级别。编码的级别定义了某种条件下的最大视频分辨率、最大视频帧率等参数
level_idc
本例中level_idc=31,查表知是3.1级。支持720p高清格式,隔行扫描,每秒钟扫描27648000个样本。

if(profile_idc = = 100||profile_idc= = 110||profile_idc = = 122||profile_idc = = 144)
按照要求选择编码器之后,对比特进行解读

chroma_format_idc=1:取样格式4:2:0

seq_parameter_set_id:表示当前的序列参数集的id。通过该id值,图像参数集pps可以引用其代表的sps中的参数

pic_width_in_mbs_minus1:用于计算图像的宽度。单位为宏块个数,图像的实际宽度为:
frame_width = 16 × (pic_width_in_mbs_minus1 + 1);
本例中frame_width = 16×(39+1)=640pixel 共40个宏块

pic_height_in_map_units_minus1:度量视频中一帧图像的高度。加1后为解码帧或场的高度
PicHeightInMapUnits = pic_height_in_map_units_minus1 + 1;
本例中PicHeightInMapUnits=22+1=23

frame_mbs_only_flag:其值为1,每个编码图像都是一个仅包含帧宏块的编码帧;当该标识位为0时,宏块可能为帧编码或场编码;该标识位为1时,所有宏块都采用帧编码。
根据该标识位取值不同,PicHeightInMapUnits的含义不同,为0时表示一场数据按宏块计算的高度,为1时表示一帧数据按宏块计算的高度

direct_8×8_inference_flag:标识位,用于B_Skip、B_Direct模式亮度运动矢量的推导计算。

frame_cropping_flag:标识位,说明是否需要对输出的图像帧进行裁剪;本例中为0,不需要对图像帧进行裁剪。

PPS分析

PPS
pic_parameter_set_id:表示当前PPS的id。某个PPS在码流中会被相应的slice引用,slice引用PPS的方式就是在Slice header中保存PPS的id值。该值的取值范围为[0,255]。

seq_parameter_set_id:表示当前PPS所引用的激活的SPS的id。通过这种方式,PPS中也可以取到对应SPS中的参数。该值的取值范围为[0,31]。

entropy_coding_mode_flag:熵编码模式标识,该标识位表示码流中熵编码/解码选择的算法。当该值为0时,选择算法通常为指数哥伦布编码或者CAVLC;当该值为1时,选择算法通常为CABAC。

num_slice_groups_minus1:表示某一帧中slice group的个数。当该值为0时,一帧中所有的slice都属于一个slice group。

chroma_qp_index_offset:用于计算色度分量的量化参数,取值范围为[-12,12]。
本例中色度分量的量化参数为-2

constrained_intra_pred_flag:若该标识为1,表示I宏块在进行帧内预测时只能使用来自I和SI类型宏块的信息;若该标识位0,表示I宏块可以使用来自Inter类型宏块的信息。
本例中constrained_intra_pred_flag=0可以使用来自Inter类型宏块的信息。

GOP结构分析

GOP
从导出的csv信息表中可知,第一个GOP有249帧:
csv
以图像帧号为横坐标、每帧所用比特数为纵坐标:
折线图
因无法批量导出QP数据,此处逐一读取了前50帧的QP值作图
QP
帧类型统计如下:
除了第一帧为I帧,其余均为P帧或B帧
帧类型

单帧分析:

第一个I帧

I
从图中的格子分布来看,在画面的变化不大的部分量化步长小,在轮廓处量化步长大
其平均编码比特数为:37.480 QP值为27.328

空间特性

宏块帧编码类型数量占比
(0)I_N x N53958.6%
(1)I_16 x 16_0_0_014415.6%
(2)I_16 x 16_1_0_0333.6%
(3)I_16 x 16_2_0_0657.1%
(4)I_16 x 16_3_0_0647.0%
(5)I_16 x 16_0_1_0242.6%
(6)I_16 x 16_1_1_0142.2%
(7)I_16 x 16_2_1_0111.5%
(8)I_16 x 16_3_1_010.1%
(14)I_16 x 16_1_0_110.1%
(15)I_16 x 16_2_0_110.1%
(16)I_16 x 16_3_0_110.1%
(18)I_16 x 16_1_1_110.1%
(19)I_16 x 16_2_1_110.1%
(20)I_16 x 16_3_1_110.1%

时间特性

mv
因是第一个I帧没有帧间预测,无运动矢量

第一个B帧

B帧
可以看到737个的B_Skip块总的比特数为249,而67个B_L0_16x16块的总bits比特数为453。
其平均编码比特数为1.596 QP值为23.333

空间特性

宏块帧编码类型数量占比
(1)B_L0_16 x 16677.3%
(2)B_L1_16 x 1610911.85%
(3)B_Bi_16 x 1620.22%
(8)B_L0_L1_16 x 810.1%
(10)B_L1_L0_16 x 820.22%
(14)B_L1_Bi_16 x 820.22%
B_Skip73780.11%

B_Skip:这一宏块的数据内容与前一帧相同,跳过不编码,因此所占用的比特数很小
在这里插入图片描述在这里插入图片描述

时间特性
Frame2

B帧是双向预测帧,目前显示的位置的编码方式为B_L1_16x16右侧的MB Info可以看到该16x16宏块参考帧在L1中,是后向预测。

第一个P帧

P帧
该帧平均编码比特数为10.870 QP为30.558。

空间特性

宏块帧编码类型数量占比
(5)I_16 x 16_0_1_0465%
(6)I_16 x 16_1_1_080.87%
(7)I_16 x 16_2_1_0111.2%
(8)I_16 x 16_3_1_050.5%
(9)I_16 x 16_0_2_0141.5%
(11)I_16 x 16_2_2_040.43%
(13)I_16 x 16_0_0_130.33%
(0)P_L0_16 x 1634937.9%
(1)P_L0_L0_16 x 8242.6%
(2)P_L0_L0_8 x 16303.3%
(3)P_8 x 8182.0%
P_Skip40844.35%

表中, Pred_L0 表示使用 L0,即前向预测; Pred_L1 表示使用 L1,即后向预测; Bipred 表示双向预测; Direct 表示直接预测模式。预测模式(mb_type,n)预测模式是 mb_type 的函数, n 是宏块的第n个分区。
在这里插入图片描述

时间特性:
P帧有帧间的前向预测,帧内预测,无后向预测。

参考

  1. https://blog.csdn.net/curtiayu/article/details/118488935
  2. https://blog.csdn.net/weixin_44874766/article/details/117993932
  3. https://blog.csdn.net/ssllkkyyaa/article/details/109729981
  4. https://blog.csdn.net/newarow/article/details/42496325
  5. https://blog.csdn.net/hdkks/article/details/117994216
  6. https://blog.csdn.net/u011875342/article/details/79627778
  7. https://blog.51cto.com/u_13267193/5371303
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值