4. 智能编码设置

智能编码技术是一种基于AI的视频压缩优化方案,其核心在于实现对关键目标的精准保护与码率的高效控制。该技术通过人工智能算法智能识别场景中的关键目标, 并借助图像信号处理(ISP)技术实时分析物体运动状态及场景复杂度。基于这些分析数据,编码器可动态调整码率控制等关键参数,从而在保证重点区域画质的同时, 显著降低整体码率,实现存储资源的高效利用。

4.1. 智能编码接口定义

SVC(Smart Video Code)智能编码

4.1.1. CVI_VENC_EnableSvc

【描述】

是否开启H.264/H.265智能编码。

【语法】

CVI_S32 CVI_VENC_EnableSvc(VENC_CHN VeChn, CVI_BOOL enable)

【参数】

参数名称

描述

输入/输出

VeChn

VENC 通道号

输入

enable

是否开启

输入

【返回值】

返回值

描述

CVI_SUCCESS

成功

非0

失败,其值为错误码

【需求】

  • 头文件:cvi_comm_venc.h、cvi_venc.h

  • 库文件:libvenc.a

4.1.2. CVI_VENC_SetSvcParam

【描述】

设置H.264/H.265智能编码属性。

【语法】

CVI_S32 CVI_VENC_SetSvcParam(VENC_CHN VeChn, const VENC_SVC_PARAM_S *pstSvcParam)

【参数】

参数名称

描述

输入/输出

VeChn

VENC 通道号

输入

pstSvcParam

智能编码参数

输入

【返回值】

返回值

描述

CVI_SUCCESS

成功

非0

失败,其值为错误码

【需求】

  • 头文件:cvi_comm_venc.h、cvi_venc.h

  • 库文件:libvenc.a

【注意】

  • fg_protect_en:是否启用前景增强功能。

    开启:1 禁用:0

  • fg_dealt_qp:当前帧级qp和运动qp的差值。

    只有正值,值越大区域保护越明显,建议值:4,取值范围[0-8]

  • complex_scene_detect_en:是否开启场景复杂度检测。

    开启:1 禁用:0

  • complex_scene_low_th:被认为是简单场景的最大阈值。

    范围[0, 512],默认值256,根据直方图离散度统计,小于该值将被认为是简单场景,推荐值:150

  • complex_scene_height_th:被认为是复杂场景的最小阈值。

    范围[0, 512],默认值318,根据直方图离散度统计,大于该值将被认为是复杂场景,推荐值:318

  • middle_min_percent:普通场景静态时的最小码率比例。

    范围[0,100],默认值:50

  • complex_min_percent:复杂场景静态时最小码率比例。

    范围[0,100],默认值:80

  • smart_ai_en:是否开启ai map。

    开启:1 禁用:0,开启后需要配置ai生成roimap使用才能生效

【举例】

4.1.3. CVI_VENC_GetSvcParam

【描述】

获取H.264/H.265通道的智能编码属性。

【语法】

CVI_S32 CVI_VENC_GetSvcParam(VENC_CHN VeChn, VENC_SVC_PARAM_S *pstSvcParam)

【参数】

参数名称

描述

输入/输出

VeChn

VENC Channel号

输入

pstSvcParam

智能编码参数

输入

【返回值】

返回值

描述

CVI_SUCCESS

成功

非0

失败,其值为错误码

【需求】

  • 头文件:cvi_comm_venc.h、cvi_venc.h

  • 库文件:libvenc.a

【注意】

  • 用户必须在编码通道创建之后,编码通道销毁之前设置调用此接口

  • 建议用户在调用CVI_VENC_SetSvcParam接口之前,先调用此接口,获取当前通道的参数配置后再进行设置

【举例】