优化视频编码质量
在实现VENC视频编码功能时,可在创建通道时设置基本参数、或调用对应的set接口设置高级参数,优化视频编码质量,以下调整手段可以叠加使用,效果是叠加的,例如:
- H264视频采集场景,分辨率720P,gop = 60,帧率30fps,码率1M需要提升编码质量,可以使用如下优化手段组合:CBR模式、HI_VENC_SCENE_0、stats_time等于2、profile等于2、关闭宏块级码控。
- H265电影场景,分辨率1080P,gop=30,帧率25fps,码率2M需要提升编码质量,可以使用如下优化手段组合:CBR模式、HI_VENC_SCENE_1、stats_time等于1、关闭宏块级码控。
设置基本参数,优化视频编码质量
不同分辨率的视频,其编码质量与视频的帧率、GOP(Group of pictures)、码率有关,在调用acl.himpi.venc_create_chn接口创建通道时,可设置编码的等级、设置H.264/H.265协议编码场景下CBR/VBR/AVBR/CVBR/QVBR模式的帧率、GOP、码率等参数,来调整视频编码质量:
- 编码等级,通过hi_venc_chn_attr.venc_attr结构内的“profile”参数来设置;
- 帧率,通过hi_venc_chn_attr.rc_attr结构体内的“src_frame_rate”输入帧率参数、“dst_frame_rate”输出帧率参数来设置;
- GOP,通过hi_venc_chn_attr.rc_attr结构体内的“gop”参数来设置;
- 码率,通过hi_venc_chn_attr.rc_attr结构体内的“bit_rate”或“max_bit_rate”或“target_bit_rate”参数来设置。
画质/分辨率 |
帧率 |
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。 |