在实现VENC视频编码功能时,可在创建通道时设置基本参数、或调用对应的set接口设置高级参数,优化视频编码质量,以下调整手段可以叠加使用,效果是叠加的,例如:
不同分辨率的视频,其编码质量与视频的帧率、GOP(Group of pictures)、码率有关,在调用hi_mpi_venc_create_chn接口创建通道时,可设置编码的等级、设置H.264/H.265协议编码场景下CBR/VBR/AVBR/CVBR/QVBR模式的帧率、GOP、码率等参数,来调整视频编码质量:
画质/分辨率 |
帧率 |
GOP |
码率(mbps) |
---|---|---|---|
4K 3840*2160/4096*2160 |
25或30 |
50或60 |
|
2K 2560*1440 |
25或30 |
50或60 |
|
1080P(蓝光) 1920*1080 |
25或30 |
50或60 |
|
720P(高清) 1280*720 |
25或30 |
50或60 |
|
480P/D1_N(标清) 854*480/720*480 |
25或30 |
50或60 |
|
576P/D1(标清) 720*576 |
25或30 |
50或60 |
|
270P(流畅) 480*270 |
25或30 |
50或60 |
|
CIF P/N 352*288/320*240 |
25或30 |
50或60 |
您可以调用接口设置码控模式、宏块级码率控制参数、编码场景模式等,来调整视频编码的细节,进一步改善编码质量。
配置项 |
接口 |
参数名 |
说明 |
---|---|---|---|
码控模式 |
hi_venc_chn_attr.rc_attr结构体内的rc_mode参数 |
追求码率平稳或追求PSNR大且码率符合目标值,配置为CBR; 追求节省码率,对主观编码质量有一定要求,配置为VBR; 追求节省码率,对主观编码质量有一定要求,且场景中有较多静止画面,配置为AVBR; 追求PSNR且对码率上浮没有严格要求,配置为QVBR; 追求节省码率,对主观编码质量有一定要求,且可以根据带宽、存储空间要求进行更多调整,配置为CVBR; |
|
码率控制模型统计时间 |
hi_venc_chn_attr.rc_attr内各模式属性值结构体内的stats_time参数 |
关注长期码率稳定,短期波动不在意的可以设置大一些,例:DVR存盘。设大可以提高重编码判决的门槛,重编码次数会减少,但是码率波动会加大。 |
|
宏块级码率控制参数 |
hi_venc_rc_param结构内的threshold_i、threshold_p、threshold_b、direction、row_qp_delta参数 |
如果图像内容复杂、细节较多或用户关注PSNR等客观指标时,需关闭宏块级码率控制。 |
|
第一帧的起始Qp值 |
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_venc_scene_mode |
安防场景配置为HI_VENC_SCENE_0;自动驾驶、直播、游戏、动画、电影配置为HI_VENC_SCENE_1。 |