AOV功能说明¶
1. AOV功能介绍¶
本文是对AOV演示程序说明的内容补充,更加详细地介绍AOV功能。

如上图所示。Always On Video (AOV) 全天候视频监控方案专为户外监控场景设计,能够在低功耗条件下实现持续的智能监控,具体支持如下功能:
-
功能场景:实现低功耗全天候视频监控,在电池供电环境下长期运行
-
视频流处理:sensor→vif→isp→scl→venc→文件存储,支持H.264/H.265编码
-
智能检测:集成AI目标检测功能,支持人形、车辆等多目标识别
-
自适应帧率:根据检测结果在1 FPS(低功耗)和15 FPS(事件录制)间智能切换
-
多传感器支持:支持单/双传感器配置
-
补光控制:支持硬件光敏、软件光敏和Fast AE三种补光策略
-
音频支持:可选音频输入功能,在事件触发时录制音频
2. 参数说明¶
这里对于AOV Demo的所有可用参数作介绍:
2.1. 基本参数¶
-
index: 指定传感器索引,默认值:0
index 1 # 3840x2160@21fps index 2 # 2016x1512@30fps index 3 # 1920x1080@30fps index 4 # 3264x2448@30fps index 6 # 3840x2160@30fps -
dual_sensor: 启用双传感器模式,默认值:单传感器
dual_sensor -
model: 指定AI检测模型路径,默认值:
/config/dla/spdy48.imgmodel ./spdy48.img
2.2. 编码和存储参数¶
-
dump: 指定视频文件存储路径,默认值:当前目录
dump /mnt/sdcard/video -
store: 指定内存中缓存的视频帧数量,默认值:10帧
store 10 # 缓存10帧后写入文件 -
time: 设置程序运行时间(秒),默认值:0(不限制)
time 3600 # 运行1小时后退出
2.3. 图像质量参数¶
-
iqbin_b: 指定场景的IQ文件路径,默认值:无
iqbin_b ./bright_api.biniqbin默认打包至板端
/config/iqfile路径。也可从sdk的/project/board/iford/iqfile/imx681路径下手动拷贝至板端。此处iqbin选择应与选择的index号对应,对应关系如下:
index 1 # imx681_8m_comake_1201_30fps.bin index 2 # imx681_3m_comake_1201_30fps.bin index 3 # imx681_3m_comake_1201_30fps.bin index 4 # imx681_8m_comake_1201_30fps.bin index 6 # imx681_8m_comake_1201_30fps.bin
2.4. 补光控制参数¶
Note
该功能需要相应的驱动和硬件配合,在D2开发板上无法直接使用,需要自行配置,配置可见下文补光策略介绍部分。
- aux_conv: 指定补光策略,默认值:不启用
aux_conv 0 # 硬件光敏传感器 aux_conv 1 # 软件光敏算法 aux_conv 2 # Fast AE(需要传感器支持)
2.5. 系统配置参数¶
- realtime: 启用VIF-ISP实时绑定模式,默认值:非实时
realtime
2.6. 音频参数¶
Note
该功能暂不支持。
-
-ai: 启用音频输入
-ai /mnt/sdcard/audio说明:用于使能audio的input,并指定录制的音频的存放路径。demo会在高帧率场景期间录制音频。
3. 工作模式说明¶
系统工作模式如下图所示:

工作流程:
-
低帧率监控:以1 FPS持续监控,节省电量
-
智能检测:AI实时分析视频流,检测人形、车辆等目标
-
事件触发:检测到目标时自动切换到15 FPS高帧率
-
高清录制:事件期间录制高质量视频和音频
-
自动恢复:目标离开后,确认无目标后恢复低帧率
4. 硬件配置说明¶
当前demo中以下配置项虽然存在但实际使用有差异:
- PIR传感器唤醒:板上没有PIR硬件,PIR目前是按键模拟。
- 滤光片(IR-CUT)和补光LED:板上没有相应硬件,但有预留IR-CUT接口,相关操作目前没有效果,需自行配置,配置方法见下文。
5. 技术特性¶
5.1. 基础概念¶
5.1.1. AE (Auto Exposure) 自动曝光¶
AE是自动曝光控制的缩写,是相机图像处理的核心功能之一。它根据环境光照条件自动调整相机的曝光参数(光圈、快门、增益等),以确保获得亮度适宜的图像。
5.1.2. Fast AE 快速自动曝光¶
Fast AE是传感器提供的一种增强功能,能够在低帧率场景下快速响应环境光变化。当环境光照发生剧烈变化时,传统AE收敛较慢,可能导致画面过暗或过亮,而Fast AE能够显著缩短收敛时间,提升画质。
5.1.3. ISP (Image Signal Processor) 图像信号处理器¶
ISP是专门用于图像处理的硬件单元,负责从传感器接收原始图像数据,并进行一系列处理如降噪、白平衡、色彩校正、锐化等,最终输出高质量的视频流。
5.2. 补光策略¶
系统提供三种补光方案以适应不同环境:
5.2.1. 软件光敏¶

通过查询ISP AE收敛状态,在环境光变化时自动切换到高帧率辅助收敛,确保画面效果。
工作机制:
-
查询ISP AE收敛状态 (
bIsStable) -
当检测到AE未收敛时,切换到高帧率模式
-
持续监控直到AE重新收敛
-
根据环境变化控制补光灯开关
5.2.2. 硬件光敏¶

使用硬件光敏传感器检测环境光照,根据lux值直接控制补光灯开关和曝光参数。
工作机制:
-
读取硬件光敏传感器的lux值
-
与上一次lux值比较,检测光照变化
-
根据lux值确定环境光状态
-
控制补光灯开关和曝光参数
5.2.3. Fast AE¶

利用传感器Fast AE功能,在低帧率场景下快速响应环境光变化,特别适合支持该特性的传感器。
程序配置:
// 在ST_Common_AovPipeInit中配置
MI_U32 u32StreamOutCnt = 10; // Fast AE完成后输出帧数
MI_U32 u32DropCnt = 5; // 丢弃帧数
MI_U32 u32RunThreshold = 3; // 启动阈值
ST_Common_FastAE_InitIspConvParam(u32StreamOutCnt, u32DropCnt, u32RunThreshold);
5.3. 程序中的补光控制¶
5.3.1. 补光策略选择¶
通过 aux_conv 参数选择补光策略:
aux_conv 0 # 硬件光敏
aux_conv 1 # 软件光敏
aux_conv 2 # Fast AE
5.3.2. 补光控制函数¶
程序中的关键补光控制函数:
-
ST_Common_AovFastAE_Run()- 执行Fast AE -
ST_Common_AovISPAdjust_HWLightSensor()- 硬件光敏调整 -
ST_Common_AovSWLightSensorProcess()- 软件光敏处理
5.3.3. 亮度切换处理¶
当检测到环境亮度变化时:
-
加载对应的IQ配置文件
-
控制补光灯开关
-
重新配置ISP参数
-
等待AE收敛完成
5.3.4. 补光控制配置实现¶
D2开发板上默认不配置光敏、滤光片、LED的驱动,但是所有的接口都已预留,可以自行配置增加使用。
光敏配置实现
-
设备节点: /dev/light_sensor
-
实现函数: SS_Light_Senosr_Get_LightSensor_Value() (sdk/verify/common/ss_light_sensor/ss_light_sensor_api.c)
-
实现方式: 通过 ioctl 系统调用,使用 IOCTL_LIGHT_SENSOR_CONTROL_GET_LUX 命令获取lux值
-
错误处理: 返回 ERR_HW_GETLUX_FAILED 或 ERR_HW_GETLUX_NOUPDATE 表示读取失败
滤光片(IR-cut)配置实现
-
设备节点: /dev/light_misc
-
实现函数: Dev_Light_Misc_Device_Set_Ircut() (sdk/verify/sample_code/libraries/light_misc_control/light_misc_control_user/light_misc_control_api.c)
-
控制方式:
E_SWITCH_STATE_ON: 开启IR-cut滤光片(白天模式)
E_SWITCH_STATE_OFF: 关闭IR-cut滤光片(夜间模式)
E_SWITCH_STATE_KEEP: 保持当前状态
-
实现方式: 通过 ioctl 系统调用,使用 IOCTL_LIGHT_MISC_CONTROL_SET_IRCUT 命令
LED配置实现
-
设备节点: /dev/light_misc
-
实现函数: Dev_Light_Misc_Device_Set_Attr() (sdk/verify/sample_code/libraries/light_misc_control/light_misc_control_user/light_misc_control_api.c)
-
控制模式:
E_CONTROL_TYPE_LONG_TERM_ON: 长期开启
E_CONTROL_TYPE_LONG_TERM_OFF: 长期关闭
E_CONTROL_TYPE_MULTI_FRAME: 多帧模式
-
实现方式: 通过 ioctl 系统调用,使用 IOCTL_LIGHT_MISC_CONTROL_SET_ATTR 命令
5.4. 帧率控制策略¶
- 低帧率模式:1 FPS,功耗极低,适合长期监控
- 高帧率模式:15 FPS,画质流畅,适合事件录制
- 智能切换:基于AI检测结果自动切换,平衡功耗和画质
5.5. 存储管理¶
- 文件分割:按帧率变化自动分割视频文件
- 命名规则:
{序列号}_snr{传感器ID}_st{帧率}fps.es - 缓存机制:内存缓存多帧后批量写入,减少磁盘I/O
- 完整性保证:使用fsync确保数据安全写入
其中序列号是会在每次帧率变化时增长,最终保存下来的文件可能是如下形式:
1_snr0_st_15fps.es
2_snr0_st_1fps.es
3_snr0_st_15fps.es
4_snr0_st_1fps.es
...
5.6. 外挂MCU以及SOC上下电方案¶
当SOC下电未完成,而此时恰好有事件触发导致SOC上电,可能会导致系统异常,相关说明和解决方案可参考外挂MCU以及SOC 上下电方案。
6. API说明¶
6.1. ST_Common_AovGetDefaultAttr¶
-
功能
获取aov句柄的默认属性
-
语法
MI_S32 ST_Common_AovPipeGetDefaultAttr(ST_Common_AovHandle_t *pstAovHandle); -
形参
参数名称 描述 输入/输出 pstAovHandle aov句柄 输入/输出 -
返回值
0:成功
非0:失败
6.2. ST_Common_AovSetSuspendTime¶
-
功能
设置系统的休眠时长,单位为秒,范围为[1s~2^32s)
-
语法
MI_S32 ST_Common_AovSetSuspendTime(MI_U32 u32SuspendSec); -
形参
参数名称 描述 输入/输出 u32SuspendSec 休眠的时长 输入 -
返回值
0:成功
非0:失败
6.3. ST_Common_AovEnterSuspend¶
-
功能
系统进入休眠状态
-
语法
MI_S32 ST_Common_AovEnterSuspend(ST_Common_AovHandle_t *pstAovHandle); -
形参
参数名称 描述 输入/输出 pstAovHandle aov句柄 输入/输出 -
返回值
0:成功
非0:失败
6.4. ST_Common_AovEnterLowPowerMode¶
-
功能
系统进入低电量模式,设备断电
-
语法
MI_S32 ST_Common_AovEnterLowPowerMode(ST_Common_AovHandle_t *pstAovHandle); -
形参
参数名称 描述 输入/输出 pstAovHandle aov句柄 输入/输出 -
返回值
0:成功
非0:失败
6.5. ST_Common_AovEnterNormalPowerMode¶
-
功能
系统重启并进入正常电量模式
-
语法
MI_S32 ST_Common_AovEnterNormalPowerMode(); -
形参
无
-
返回值
0:成功
非0:失败
6.6. ST_Common_AovSetLowFps¶
-
功能
切换到低帧率
-
语法
MI_S32 ST_Common_AovSetLowFps(ST_Common_AovHandle_t *pstAovHandle); -
形参
参数名称 描述 输入/输出 pstAovHandle aov句柄 输入 -
返回值
0:成功
非0:失败
6.7. ST_Common_AovSetHighFps¶
-
功能
切换到高帧率
-
语法
MI_S32 ST_Common_AovSetHighFps(ST_Common_AovHandle_t *pstAovHandle); -
形参
参数名称 描述 输入/输出 pstAovHandle aov句柄 输入 -
返回值
0:成功
非0:失败
6.8. ST_Common_AovRemoteStatusCheck¶
-
功能
判断远端的连接状态
此接口需要客户自定义实现
-
语法
ST_RemoteStatus_e ST_Common_AovRemoteStatusCheck(MI_U8 *pu8SimulateCmd); -
形参
参数名称 描述 输入 pu8SimulateCmd 使用字符来模拟远端的连接状态 输入 -
返回值
描述 E_ST_REMOTE_CONNECTTING 和远端连接中 E_ST_REMOTE_DISCONNECT 和远端已经断开连接
6.9. ST_Common_AovWakeupCheck¶
-
功能
检测设备被唤醒的方式
-
语法
ST_WakeupType_e ST_Common_AovWakeupCheck(ST_Common_AovHandle_t *pstAovHandle); -
形参
参数名称 描述 输入 pstAovHandle 根据pstAovHandle->stAutoTestParam.bAutoTest是否使能测试模式 输入 -
返回值
描述 E_ST_WAKEUP_TIMER 定时器唤醒,对应rtc_alarm;如MCU取代RTC,对应MCU timer唤醒 E_ST_WAKEUP_PIR PIR唤醒,对应rtc_io1;如MCU取代RTC,对应MCU PIR事件 E_ST_WAKEUP_PREVIEW 用户预览唤醒,对应rtc_io0;如MCU取代RTC,对应MCU用户预览事件
6.10. ST_Common_AovOSCheck¶
-
功能
检测当前OS
-
语法
ST_OSType_e ST_Common_AovOSCheck(); -
形参
无
-
返回值
E_ST_OS_PURELINUX pure linux系统 E_ST_OS_DUALOS dualos
6.11. ST_Common_AovBatteryLevelCheck¶
-
功能
检测设备的电量状态
此接口需要客户自定义实现
-
语法
ST_BatteryLevel_e ST_Common_AovBatteryLevelCheck(MI_U8 *pu8SimulateCmd); -
形参
参数名称 描述 输入/输出 pu8SimulateCmd 使用字符来模拟电池的电量等级 输入 -
返回值
E_ST_BATTERYLEVEL_NORMAL 正常电量 E_ST_BATTERYLEVEL_LOW 低电量
6.12. ST_Common_AovStreamCreate¶
-
功能
创建stream句柄,其本质上是一个stream list
-
语法
MI_S32 ST_Common_AovStreamCreate(ST_Common_AovStreamHandle_t *pstStreamHandle); -
形参
参数名称 描述 输入/输出 pstStreamHandle stream句柄 输出 -
返回值
0:成功
非0:失败
6.13. ST_Common_AovStreamProduce¶
-
功能
提供stream,编码完成后添加到stream list
-
语法
MI_S32 ST_Common_AovStreamProduce(ST_Common_AovHandle_t *pstAovHandle, ST_Common_AovStreamHandle_t *pstStreamHandle); -
形参
参数名称 描述 输入/输出 pstAovHandle aov句柄 输入/输出 pstStreamHandle stream句柄 输入/输出 -
返回值
0:成功
非0:失败
6.14. ST_Common_AovStreamConsume¶
-
功能
将stream list消耗空,可选择写SD卡、发送数据到云端
-
语法
MI_S32 ST_Common_AovStreamConsume(ST_Common_AovHandle_t *pstAovHandle, ST_Common_AovStreamHandle_t *pstStreamHandle); -
形参
参数名称 描述 输入/输出 pstAovHandle aov句柄 输入/输出 pstStreamHandle stream句柄 输入/输出 -
返回值
0:成功
非0:失败
6.15. ST_Common_AovDetect¶
-
功能
IPU识别,依据检测结果更改状态值,并进行后处理(贴人形框)
-
语法
MI_S32 ST_Common_AovDetect(ST_Common_AovHandle_t *pstAovHandle); -
形参
参数名称 描述 输入/输出 pstAovHandle aov句柄 输入/输出 -
返回值
0:成功
非0:失败
6.16. ST_Common_AovPipeInit¶
-
功能
初始化aov pipe
-
语法
MI_S32 ST_Common_AovPipeInit(ST_Common_AovHandle_t *pstAovHandle); -
形参
参数名称 描述 输入/输出 pstAovHandle aov句柄 输入/输出 -
返回值
0:成功
非0:失败
6.17. ST_Common_AovPipeStart¶
-
功能
开始aov pipe
-
语法
MI_S32 ST_Common_AovPipeStart(ST_Common_AovHandle_t *pstAovHandle); -
形参
参数名称 描述 输入/输出 pstAovHandle aov句柄 输入/输出 -
返回值
0:成功
非0:失败
6.18. ST_Common_AovPipeStop¶
-
功能
停止aov pipe
-
语法
MI_S32 ST_Common_AovPipeStop(ST_Common_AovHandle_t *pstAovHandle); -
形参
参数名称 描述 输入/输出 pstAovHandle aov句柄 输入/输出 -
返回值
0:成功
非0:失败
6.19. ST_Common_AovPipeDeInit¶
-
功能
反初始化aov pipe
-
语法
MI_S32 ST_Common_AovPipeDeInit(ST_Common_AovHandle_t *pstAovHandle); -
形参
参数名称 描述 输入/输出 pstAovHandle aov句柄 输入/输出 -
返回值
0:成功
非0:失败
6.20. ST_Common_AovDoAudio¶
-
功能
音频输入输出
-
语法
MI_S32 ST_Common_AovDoAudio(ST_Common_AovHandle_t *pstAovHandle); -
形参
参数名称 描述 输入/输出 pstAovHandle aov句柄 输入/输出 -
返回值
0:成功
非0:失败