searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

视频分析工具ffmpeg之trace_headers

2024-07-04 03:51:31
13
0

trace_headers 使用方法:

ffmpeg -i test.flv -c:v copy -an -bsf:v trace_headers -f null - > frame-info.txt 2>&1

     执行以上命令后,ffmpeg把最终的解析信息输出到frame-info.txt文件中。

trace_headers工作原理:

    解析输入文件,根据不同的封装格式映射到不同的demuxer上, 然后从中读取一个packet包。一个packet可能是一帧媒体数据,也可能是非媒体数据, 具体类型由NALU结构的nal_unit_type指定。根据不同的数据类型,来解析不同的数据信息。整个过程不涉及解码,仅是解析所有帧的头信息,所以耗时并不多。

 

NALU结构示意图如下:

目前常用的编码分为H264H265两个标准,不同的标准NALU结构稍有不同,H264中,NALU header1字节,nal_unit_type5bitH265中,NALU header2字节,nal_unit_type6bit

以下以H264视频为例,分析经过trace_header处理后的日志信息。

 

  SPSSequence ParamaterSet)关键信息:

  level_idc: 码率的profile档次。

  seq_parameter_set_id:当前序列参数集的id

  max_num_ref_frames: 最大参考帧数。

  pic_width_in_mbs_minus1: 图片宽度为:16x(pic_width_in_mbs_minus1 +1)

pic_height_in_map_units_minus1: 图片高度为:16x(pic_height_in_map_units_minus1+1)

vui_parameters_present_flag: 指定vui结构是否存在, 里面会涉及到源颜色相关参数。

 

输出的SPS信息如下:

PPS(Picture Paramater Set)关键参数:

pic_parameter_set_id: 当前PPSid

seq_parameter_set_id: 与当前PPS对应的SPS id

num_slice_groups_minus1: 分片个数信息。

num_ref_idx_l0_default_active_minus1: 前向参考帧帧列表中帧个数信息。

num_ref_idx_l0_default_active_minus1: 双向参考时,后向参考帧列表中帧个数信息。

pic_init_qp_minus26: 初始化量化参数,每一帧的最终量化参数有该值与slice_qa_delta综合得到。

输出的PPS信息如下:

 

SliceHeader关键参数信息:

slice_type:  帧类型如IBP等。

pic_parameter_set_id: 该帧相关联的PPS id

slice_qp_delta: 该帧的qp偏移值。

frame_num: 该帧的相对序列号。

输出的SliceHeader信息如下:

 

适用场景:

视频的自动化分析,比如分析视频帧类型是否符合设置预期、分析帧qp是否在[qpmin, qpmax] 设置的范围内等等,可以很方便的检测视频是否满足客户的需求。

0条评论
0 / 1000
g****n
4文章数
0粉丝数
g****n
4 文章 | 0 粉丝
原创

视频分析工具ffmpeg之trace_headers

2024-07-04 03:51:31
13
0

trace_headers 使用方法:

ffmpeg -i test.flv -c:v copy -an -bsf:v trace_headers -f null - > frame-info.txt 2>&1

     执行以上命令后,ffmpeg把最终的解析信息输出到frame-info.txt文件中。

trace_headers工作原理:

    解析输入文件,根据不同的封装格式映射到不同的demuxer上, 然后从中读取一个packet包。一个packet可能是一帧媒体数据,也可能是非媒体数据, 具体类型由NALU结构的nal_unit_type指定。根据不同的数据类型,来解析不同的数据信息。整个过程不涉及解码,仅是解析所有帧的头信息,所以耗时并不多。

 

NALU结构示意图如下:

目前常用的编码分为H264H265两个标准,不同的标准NALU结构稍有不同,H264中,NALU header1字节,nal_unit_type5bitH265中,NALU header2字节,nal_unit_type6bit

以下以H264视频为例,分析经过trace_header处理后的日志信息。

 

  SPSSequence ParamaterSet)关键信息:

  level_idc: 码率的profile档次。

  seq_parameter_set_id:当前序列参数集的id

  max_num_ref_frames: 最大参考帧数。

  pic_width_in_mbs_minus1: 图片宽度为:16x(pic_width_in_mbs_minus1 +1)

pic_height_in_map_units_minus1: 图片高度为:16x(pic_height_in_map_units_minus1+1)

vui_parameters_present_flag: 指定vui结构是否存在, 里面会涉及到源颜色相关参数。

 

输出的SPS信息如下:

PPS(Picture Paramater Set)关键参数:

pic_parameter_set_id: 当前PPSid

seq_parameter_set_id: 与当前PPS对应的SPS id

num_slice_groups_minus1: 分片个数信息。

num_ref_idx_l0_default_active_minus1: 前向参考帧帧列表中帧个数信息。

num_ref_idx_l0_default_active_minus1: 双向参考时,后向参考帧列表中帧个数信息。

pic_init_qp_minus26: 初始化量化参数,每一帧的最终量化参数有该值与slice_qa_delta综合得到。

输出的PPS信息如下:

 

SliceHeader关键参数信息:

slice_type:  帧类型如IBP等。

pic_parameter_set_id: 该帧相关联的PPS id

slice_qp_delta: 该帧的qp偏移值。

frame_num: 该帧的相对序列号。

输出的SliceHeader信息如下:

 

适用场景:

视频的自动化分析,比如分析视频帧类型是否符合设置预期、分析帧qp是否在[qpmin, qpmax] 设置的范围内等等,可以很方便的检测视频是否满足客户的需求。

文章来自个人专栏
音视频技术
4 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0