优化视频编码质量

在实现VENC视频编码功能时,可在创建通道时设置基本参数、或调用对应的set接口设置高级参数,优化视频编码质量,以下调整手段可以叠加使用,效果是叠加的,例如:

设置基本参数,优化视频编码质量

不同分辨率的视频,其编码质量与视频的帧率、GOP(Group of pictures)、码率有关,在调用hi_mpi_venc_create_chn接口创建通道时,可设置编码的等级、设置H.264/H.265协议编码场景下CBR/VBR/AVBR/CVBR/QVBR模式的帧率、GOP、码率等参数,来调整视频编码质量:

表1 典型场景下帧率、GOP、码率的取值

画质/分辨率

帧率

GOP

码率(mbps)

4K

3840*2160/4096*2160

25或30

50或60

  • 视频数据获取场景

    H264/H265码流,码率取值8~12。

  • 秀场/主播/短视频场景

    H265码流,码率取值6~12。

    H264码流,不涉及。

  • 游戏视频场景

    H264/H265码流,码率取值10~16。

2K

2560*1440

25或30

50或60

  • 视频数据获取场景

    H264/H265码流,码率取值6~10。

  • 秀场/主播/短视频场景

    H265码流,码率取值4.8~8。

    H264码流,不涉及。

  • 游戏视频场景

    H264/H265码流,码率取值6~10。

1080P(蓝光)

1920*1080

25或30

50或60

  • 视频数据获取场景

    H265码流,码率取值1~4。

    H264码流,码率取值2~6。

  • 秀场/主播/短视频场景

    H265码流,码率取值1.4~3.6。

    H264码流,码率取值2~4.8。

  • 游戏视频场景

    H264/H265码流,码率取值3~6。

720P(高清)

1280*720

25或30

50或60

  • 视频数据获取场景

    H265码流,码率取值0.8~2。

    H264码流,码率取值1~3。

  • 秀场/主播/短视频场景

    H265码流,码率取值1~2。

    H264码流,码率取值1~3。

  • 游戏视频场景

    H264/H265码流,码率取值2~4。

480P/D1_N(标清)

854*480/720*480

25或30

50或60

  • 视频数据获取场景

    H265码流,码率取值0.3~0.7。

    H264码流,码率取值0.6~1.4。

  • 秀场/主播/短视频场景

    H265码流,码率取值0.25~0.6。

    H264码流,码率取值0.3~0.7。

  • 游戏视频场景

    不涉及。

576P/D1(标清)

720*576

25或30

50或60

  • 视频数据获取场景

    H265码流,码率取值0.3~0.7。

    H264码流,码率取值0.6~1.4。

  • 秀场/主播/短视频场景

    H265码流,码率取值0.25~0.6。

    H264码流,码率取值0.3~0.7。

  • 游戏视频场景

    不涉及。

270P(流畅)

480*270

25或30

50或60

  • 视频数据获取场景

    不涉及。

  • 秀场/主播/短视频场景

    H265码流,码率取值0.2。

    H264码流,码率取值0.3。

  • 游戏视频场景

    不涉及。

CIF P/N

352*288/320*240

25或30

50或60

  • 视频数据获取场景

    H264/H265码流,码率取值0.25。

  • 秀场/主播/短视频场景

    不涉及。

  • 游戏视频场景

    不涉及。

设置高级参数,调整视频编码细节

您可以调用接口设置码控模式、宏块级码率控制参数、编码场景模式等,来调整视频编码的细节,进一步改善编码质量。

表2 高级配置项列表

配置项

接口

参数名

说明

码控模式

hi_mpi_venc_create_chn

hi_venc_chn_attr.rc_attr结构体内的rc_mode参数

追求码率平稳或追求PSNR大且码率符合目标值,配置为CBR;

追求节省码率,对主观编码质量有一定要求,配置为VBR;

追求节省码率,对主观编码质量有一定要求,且场景中有较多静止画面,配置为AVBR;

追求PSNR且对码率上浮没有严格要求,配置为QVBR;

追求节省码率,对主观编码质量有一定要求,且可以根据带宽、存储空间要求进行更多调整,配置为CVBR;

码率控制模型统计时间

hi_mpi_venc_create_chn

hi_venc_chn_attr.rc_attr内各模式属性值结构体内的stats_time参数

关注长期码率稳定,短期波动不在意的可以设置大一些,例:DVR存盘。设大可以提高重编码判决的门槛,重编码次数会减少,但是码率波动会加大。

宏块级码率控制参数

hi_mpi_venc_set_rc_param

hi_venc_rc_param结构内的threshold_i、threshold_p、threshold_b、direction、row_qp_delta参数

如果图像内容复杂、细节较多或用户关注PSNR等客观指标时,需关闭宏块级码率控制。

第一帧的起始Qp值

hi_mpi_venc_create_chn

hi_venc_rc_param结构内的first_frame_start_qp参数

典型场景下,用户配置的码率小于表1中给的参考值,且编码后的视频第一帧明显模糊,则建议配置first_frame_start_qp参数,参数值取[min_i_qp, max_i_qp]的中间值,例如,[min_i_qp, max_i_qp]为[30, 40],则first_frame_start_qp参数配置为35,同时将max_reencode_times参数配置为0,会获得较好的编码质量。

编码场景模式

hi_mpi_venc_set_scene_mode

hi_venc_scene_mode

安防场景配置为HI_VENC_SCENE_0;自动驾驶、直播、游戏、动画、电影配置为HI_VENC_SCENE_1。