H264中的参数

558 阅读2分钟

H264 Profile

对视频压缩特性的描述, profile越高, 就说明采用了越高级的压缩特性, 压缩也就越高.

以constrained baseline为基础发展的两个分支

使用较多的是main profile分支

H264 Level

Level是对视频的描述, Level越高, 视频的码率、分辨率、fps越高.

不同的level对应不同的最高分辨率、最高码率、最高帧率

参考资料 : en.wikipedia.org/wiki/Advanc…

与分辨率相关的参数:

  • pic_width_in_mbs_minus1 : 图像宽度包含的宏块个数 - 1 , 所以在计算图像宽度的时候应该是 ( pic_width_in_mbs_minus1 + 1 ) * 宏块的宽度(默认16).

  • pic_heigh_in_mbs_minus1 : 图像高度包含的宏块个数 - 1 . 

  • frame_mbs_only_flag : 帧编码还是场编码(场编码是隔行扫描, 产生两张图).

  • frame_cropping_flag : 图像是否需要裁剪, 如果裁剪的话, 需关注以下四个参数:

  • frame_crop_left_offset : 减去左侧的偏移量.

  • frame_crop_right_offset : 减去右侧的偏移量.

  • frame_crop_top_offset : 减去顶部的偏移量.

  • frame_crop_bottom_offset : 减去底部的偏移量.

与帧相关的参数:

  • log2_max_frame_num_minus4 : GOP最大帧数的计算方法是: 2的 (log2_max_frame_num_minus4 + 4)次方.

  • max_num_ref_frames : 参考帧的缓冲队列的大小(解码器缓冲队列的大小).

  • pic_order_cnt_type : 显示帧序号, 跟据不同的type使用不同的计算公式.

帧率的计算

framerate = (float)(sps->vui.vui_time_scale) / (float)(sps->vui.vui_num_units_in_tick) / 2;

PPS相关的参数

  • entropy_coding_mode_flag : 熵编码, 1表示使用CABAC(main profile 压缩率更高) , 0表示使用CALVC(constrained baseline).

  • num_slice_groups_minus1 : 分片数量 - 1.

  • weighted_pred_flag : 在 P / SP Slice中是否开启权重预测(1 / 0).

  • weighted_bipred_idc : 在 B Slice中加权预测的方法 ID(默认0).

  • pic_init_qp_minus26 / pic_init_qs_minus26 : 初始化量化参数, 实际参数在slice Header中.

  • chroma_qp_index_offset : 用于计算色度分量的量化参数. (luma : 亮度)

  • deblocking_filter_control_present_flag : 表示slice header中是否存在用于去块滤波器控制的信息( 1 / 0 ).

  • constrained_intra_pred_flag : 1 表示 使用帧内预测, 0 表示帧间预测.

  • redundant_pic_cnt_present_flag : 用于表示slice header中是否存在redundan_pic_cnt语法元素.

Slice Header相关的信息

  • 帧类型 :  I / P / B 帧.

  • GOP中解码帧序号 : 如果只有I帧和P帧, 则顺序解码即可.

  • 预测权重 

  • 滤波