sample_venc 快速入门
1. 概述与作用
sample_venc 是 Hi3516CV610 MPP 套件中用于演示 Video ENCoder(VENC)模块完整能力的样例程序,覆盖 H.264、H.265、MJPEG 与 SVAC3 四种码流负载在常见监控与安防业务场景下的调用方法。整个样例从 VI 实时采集 sensor 数据,经 VPSS 完成去噪、缩放与格式转换后送入 VENC 编码,最终落盘为可直接用 ffplay/ffprobe 播放或分析的原始码流文件,便于开发者快速验证不同码率控制(RC,Rate Control)、图像组(GOP,Group Of Pictures)、感兴趣区域(ROI,Region Of Interest)、帧内刷新(intra_refresh)、逐宏块 QP 映射(qpmap)、逐区域质量控制(roimap)、区域马赛克(mosaic map)、debreath 滤波、多流合成(composite)、VENC内部缩放(跳过VPSS)以及单 semi-planar 输入(single_sp)等高级特性的实际效果。该样例同时通过 sample_ipc_server_init 提供 VB pool 共享请求通道,便于与其它进程协作使用 Video Buffer。对于需要在 Hi3516CV610 上快速评估编码质量、调参或对照不同 RC/GOP 模式效果的开发者而言,本样例是最直接的入门途径,也是验证 Hi3516CV610 编码器在不同负载与码率约束下表现的标准参考实现。
样例覆盖的四种码流负载各有侧重:H.264(AVC)兼容性最好,适合传统监控后端;H.265(HEVC)压缩比更高,适合带宽受限场景;MJPEG 逐帧 JPEG 编码适合抓拍与快照;SVAC3 是中国安防监控标准,在公安与交警项目中常被要求。样例通过交互式按键让用户在运行时选择 RC 与 GOP 模式,避免了重新编译的繁琐流程,方便快速对照不同配置下的码率曲线与画质差异。
RC 模式决定编码器如何在码率约束与画质之间权衡:CBR(恒定码率)输出码率稳定但复杂场景画质下降明显;VBR(可变码率)画质稳定但码率波动大;ABR(平均码率)在 CBR 与 VBR 之间折中;AVBR 在 VBR 基础上加入自适应窗口约束;CVBR 在 CBR 基础上允许小幅波动;QVBR 以质量为目标反向约束码率;FIXQP 固定 QP 完全不受码率约束,适合画质对照测试。GOP 模式决定 I/P/B 帧的排列方式:NormalP 是传统 I/P 交替;DualP 增加双参考帧提升压缩比;SmartP 智能插入 I 帧应对场景切换;SmartCRR 是 SVAC3 专属的智能码率分配模式。开发者应结合实际业务场景选择合适的 RC 与 GOP 组合,例如实时监控推荐 AVBR+SmartP,存储回放推荐 CBR+NormalP,画质测试推荐 FIXQP+NormalP。
本文默认
sensor为HY006-3814-0011,如需适配新sensor,请参考《Sensor 调试指南》和《Sensor适配说明》
2. 执行准备
在编译本样例之前,请参照Hi3516CV610环境搭建指南和快速上手指南完成编译环境的搭建。
2.1 编译
进入样例目录执行 make 即可完成编译:
编译成功之后,在当前目录下会生成一个sample_venc的可执行文件,可以放社区支持的开发板上运行。
2.2 加载 KO 与依赖环境
ko加载脚本位于 output/mpp/ko/load_ko,有两个脚本,load3516cv610_20s和load3516cv610_20s_debug。区别为load3516cv610_20s_debug脚本会打开 logmpp_show=1(日志记录)、proc_show=1(proc信息打印),并将 mem_process_isolation 置为 0(不启用进程间mmz隔离)。
由于当前版本不支持进程间mmz隔离,因此需要在load3516cv610_20s脚本中将 mem_process_isolation 置为 0或者使用load3516cv610_20s_debug脚本,此处以load3516cv610_20s_debug脚本为例,20s内存大小为128MB,默认分配为 32MB OS、96MB MMZ,加载命令为:
可以通过-h命令查看具体用法:
./load3516cv610_20s_debug -h
Usage: ./load3516cv610_20s_debug [-option] [-sensor0~1]
options:
-i insert modules
-r remove modules
-a remove modules first, then insert modules
-sensor0~1 sensor_name config sensor type [default: hy006_3814_0011]
-mmz_start config MMZ start addr [default: 0x42000000]
-mmz_size config MMZ mem size [unit: M, default: 96M]
-ir_auto config ir_auto enable [default: 0]
-profile config sys_profile [default: 0]
-h help information
Available sensors:hy006_3814_0011 bt1120/bt656/bt601
for example: ./load3516cv610_20s_debug -i -sensor0 hy006_3814_0011 -sensor1 hy006_3814_0011 -mmz_start 0x42000000 -mmz_size 96M -ir_auto 1
如果需要调整os和mmz的大小,需要参考《内存布局调整指南》对内存大小进行调整。
如果是使用社区默认提供的镜像,这些ko已经打包到文件系统中,烧录到单板上后位于
/ko目录下,在系统启动后会自动加载这些ko。
2.3 运行时依赖
在运行样例前,需要提前准备:
- 指定运行时依赖的so库路径
MPP样例依赖的so库位于soc/libs/musl下,需要将该目录下的so库拷贝到开发板上(或将这些so库所在的目录挂载到开发板上),并指定运行时依赖库的环境变量,假设这些so库位于/mnt/libs/,执行如下命令:
```shell
export LD_LIBRARY_PATH=/mnt/libs/:$LD_LIBRARY_PATH
```
如果是使用社区默认提供的镜像,这些so库已经打包到文件系统中,烧录到单板上后位于
/usr/lib目录下,该目录是系统默认搜索目录,不需要执行export LD_LIBRARY_PATH命令去指定。
- 启动MPP服务
当前MPP媒体模块处于用户态,通过一个独立进程提供相关接口的调用服务,该进程位于samples/mpp/sdk_server下,执行如下命令即可生成sdk_server可执行文件:
```shell
cd samples/mpp/sdk_server && make
```
在单板上执行./sdk_server &即可启动MPP服务。
- sdk_server同样依赖
soc/libs/musl下的so库,因此也需要参照上述export LD_LIBRARY_PATH指定路径;- 如果是使用社区默认提供的镜像,sdk_server进程已经打包到文件系统中,烧录到单板上后位于
/usr/bin目录下,并在系统启动时会自动启动sdk_server。
- 样例运行时候需要的资源文件
无。
3. 支持的 Case 列表
调用语法:./sample_venc [index]选择case执行,index范围是0-11,运行中按回车键(或Ctrl+C)退出,执行./sample_venc或./sample_venc -h查看帮助。

case0-case11的说明如下:
- case 0
normal— H.265e + H.264e 双路编码,最常用的入门组合,适合验证编码链路是否正常。- case 1
intra_refresh— H.265e + H.264e 双路编码 可选择行(列)刷新,演示周期内帧内刷新以应对I帧附近码率波动大问题。- case 2
roi_bg_frame_rate— H.265e + H.264e 双路编码,带 ROI + 背景帧率控制,前景(ROI区域)高质量、背景(非ROI区域)降帧以节省码率。- case 3
roi_set— MJPEG + MJPEG通过用户 API 设置 ROI,演示 JPEG 编码下的区域优先。- case 4
svac3 encode— SVAC3(Surveillance Video And Audio Coding v3,中国监控标准)编码(暂不支持)。- case 5
inner scale— 两路H.264/H.265/SVAC3(由用户选择 payload),VENC内部缩放,(跳过VPSS通路),适合资源紧张场景。- case 6
qpmap— H.265e + H.264e双路编码,支持用户给对应帧送qpmap表,控制每MB、CU的QP。- case 7
debreath_effect— H.265e + H.264e 对I帧进行滤波,减少脉冲噪声。- case 8
roimap— MJPEG + MJPEG per-region 用户送帧+roi map控制感兴趣区域质量。- case 9
mosaic_map— H.265e + H.264e 用户发帧加马赛克区域遮挡。- case 10
composite— H.265 composite 多流合成。- case 11
single_sp— H.265e + H.264e 单 semi-planar 输入格式,验证 NV12/NV21 直送编码器的能力。
多数case启动时会交互式提示用户选择RC模式与GOP模式,gop mode选择交互式菜单:
rc mode选择交互式菜单(仅case5支持切换编码协议):
gop mode选择交互式菜单:
please input choose gop mode!
0) normal p. (常规 I/P 帧)
1) dual p. (双参考帧)
2) smart p. (智能 I/P 帧)
3) smart crr. (智能码率分配,仅 SVAC3)
- case0、1、2、5、6、7、9、10、11 支持选择gop模式0、1、2。
- case1 I帧刷slice仅支持选择gop模式0,选择其他会报错提示功能不支持,退出用例。
- case2 背景低帧率功能仅支持选择gop模式0,选择其他会报错提示功能不支持,退出用例。
- case3、8由于是mjpeg编码协议,所以不支持选择gop模式。
- case10 复合编码仅支持0、2gop模式。
- case11 演示gop模式singlesp,不提示用户选择gop模式。
rc mode交互式菜单:
please input choose rc mode!
c) cbr.(恒定码率)
v) vbr. (可变码率)
b) abr.(平均码率)
a) avbr.(自适应可变码率)
x) cvbr.(约束可变码率)
q) qvbr.(质量约束可变码率)
f) fix_qp.(固定 QP)
注意,各case的复杂度从基础到高级递增:
- case 0/11 是入门级,验证编码链路是否正常;
- case 1/2/3 演示常见监控特性;
- case 4/5 演示特殊编码标准与无 VPSS 通路,其中5仅Hi3516CV610/Hi3516CV608支持此功能;
- case 6/7/8/9/10 是高级特性,需要DDR内存大的单板上才能运行。
建议开发者按顺序从 case 0 开始验证,逐步过渡到高级 case,以便在出现问题时快速定位是链路基础问题还是高级特性问题。case 4(SVAC3)需要单独的 SVAC3 编码器 KO,若
ot_svac3e.ko未加载会直接失败。case 5(inner scale)跳过 VPSS 直接将 VI 帧送入 VENC 内部缩放,适合 VPSS 资源紧张的场景,但缩放质量略低于 VPSS。
3.1 normal
- 场景介绍: 演示从VI-VPSS-VENC通路的一般配置流程
#### 输出文件
生成的编码码流文件stream_chn0.h265、stream_chn1.h264,分辨率分别为2560x1440@30fps和1280x720@30fps,存储目录为样例执行目录。
#### 控制台日志
启动时若该 case 涉及 RC/GOP 选择,会交互式打印 please input choose rc mode! 与 please input choose gop mode!,等待用户按键。
运行结束成功时打印 program exit normally!,失败时打印 program exit abnormally!。
运行过程中按下回车建(或Ctrl+C)可触发样例的退出,确保 VENC 通道与 VB pool 被正确释放,避免资源泄漏影响下次运行。
#### 正确性判断
1. 用 `ls -l` 确认文件大小随运行时间持续增长,若大小停滞则说明编码链路已断。
2. 用 `ffprobe` 查询编码参数(分辨率、profile、gop间隔);
3. 用 `ffplay` 播放,观察码流播放效果是否OK,确认分辨率是否OK,有无花屏等问题。
-
数据流:

-
流程:
- 初始化VENC前级模块(VI-VPSS)并进行绑定
- 获取用户配置(GOP结构、RC模式)
- 创建编码器,和VPSS进行绑定
- 启动收流。
3.2 intra refresh
- 场景介绍: 演示P帧内刷新的使用方法。P帧帧内刷新,可以为客户提供码率非常平滑的编码方式,每个I帧和P帧的大小可以非常接近。在网络带宽有限(如无线网络)的情况下,降低I帧过大带来的网络冲击,降低网传延时。 P帧帧内刷新的介绍和接口使用请参考《MPP 媒体处理软件 V6.0 开发参考》视频编码第6章“P帧帧内刷新”小节。
#### 输出文件
生成的编码码流文件stream_chn0.h265、stream_chn1.h264,分辨率分别为2560x1440@30fps和1280x720@30fps,存储目录为样例执行目录。
#### 控制台日志
启动时若该 case 涉及 RC/GOP 选择,会交互式打印 please input choose rc mode! 与 please input choose gop mode!,等待用户按键。
运行结束成功时打印 program exit normally!,失败时打印 program exit abnormally!。
运行过程中按下回车建(或Ctrl+C)可触发样例的退出,确保 VENC 通道与 VB pool 被正确释放,避免资源泄漏影响下次运行。
#### 正确性判断
1. 用 `ls -l` 确认文件大小随运行时间持续增长,若大小停滞则说明编码链路已断。
2. 用 `ffprobe` 查询编码参数(分辨率、profile、gop间隔);
3. 用 `ffplay` 播放,观察码流播放效果是否OK,确认分辨率是否OK,有无花屏等问题。
-
数据流: 同sample_venc_normal
-
流程:
- 初始化VENC前级模块(VI-VPSS)并进行绑定
- 获取用户配置(GOP结构、帧内刷新模式、RC模式)
- 创建编码器,和VPSS进行绑定,设置帧内刷新模式。
- 启动收流。
3.3 roi bg
- 场景介绍: 演示背景帧低帧率的配置方法。背景帧低帧率适用于背景区域相对固定的场景,该功能与ROI接口配合,通过降低背景区域的刷新率,降低编码码率。 背景帧低帧率的配置方法和注意事项请参考《MPP 媒体处理软件 V6.0 开发参考》视频编码第6章“非ROI区域的低帧率编码”小节。
#### 输出文件
生成的编码码流文件stream_chn0.h265、stream_chn1.h264,分辨率分别为2560x1440@30fps和1280x720@30fps,存储目录为样例执行目录。
#### 控制台日志
启动时若该 case 涉及 RC/GOP 选择,会交互式打印 please input choose rc mode! 与 please input choose gop mode!,等待用户按键。
运行结束成功时打印 program exit normally!,失败时打印 program exit abnormally!。
运行过程中按下回车建(或Ctrl+C)可触发样例的退出,确保 VENC 通道与 VB pool 被正确释放,避免资源泄漏影响下次运行。
#### 正确性判断
1. 用 `ls -l` 确认文件大小随运行时间持续增长,若大小停滞则说明编码链路已断。
2. 用 `ffprobe` 查询编码参数(分辨率、profile、gop间隔);
3. 用 `ffplay` 播放,观察码流播放效果是否OK,确认分辨率是否OK,有无花屏等问题。
4. 确认画面左上角roi感兴趣区域质量是否较高,非ROI区域会隔一帧降低帧率,播放效果类似抽帧。
-
数据流: 同sample_venc_normal
-
流程:
- 初始化VENC前级模块(VI-VPSS)并进行绑定
- 获取用户配置(GOP结构、RC模式)
- 创建编码器,和VPSS进行绑定,设置ROI属性、背景帧低帧率属性。
- 启动收流。
3.4 mjpeg roi set
- 场景介绍: 演示mjpeg ROI 的配置方法。功能介绍和使用注意事项参考《MPP 媒体处理软件 V6.0 开发参考》视频编码第6章 ss_mpi_venc_set_jpeg_roi_attr接口。
#### 输出文件
生成的编码码流文件stream_chn0.mjp、stream_chn1.mjp,存储目录为样例执行目录。
#### 控制台日志
启动时若该 case 涉及 RC/GOP 选择,会交互式打印 please input choose rc mode! 与 please input choose gop mode!,等待用户按键。
运行结束成功时打印 program exit normally!,失败时打印 program exit abnormally!。
运行过程中按下回车建(或Ctrl+C)可触发样例的退出,确保 VENC 通道与 VB pool 被正确释放,避免资源泄漏影响下次运行。
#### 正确性判断
1. 用 `ls -l` 确认文件大小随运行时间持续增长,若大小停滞则说明编码链路已断。
2. 用 `ffprobe` 查询编码参数(分辨率、profile、gop间隔);
3. 用 `ffplay` 播放,观察码流播放效果是否OK,确认分辨率是否OK,有无花屏等问题。
- 数据流:

- 流程:
- 初始化VENC前级模块(VI-VPSS)并进行绑定
- 获取用户配置(RC模式)
- 创建编码器,设置mjpeg roi属性,和VPSS进行绑定。
- 启动收流。
3.5 svac3 (暂不支持)
-
场景介绍: 演示SVAC3.0的配置方法。配置方式和H.264、H.265协议基本相同
-
数据流:

- 流程:
- 初始化VENC前级模块(VI-VPSS)并进行绑定
- 获取用户配置(GOP结构、RC模式)
- 创建编码器(SVAC3协议),和VPSS进行绑定
- 启动收流。
3.6 inner scale
- 场景介绍: 演示VENC内部缩放功能的配置和使用。内部缩放功能在编码大码流时缩放输出小yuv给小码流进行编码,由于大小码流之间只有一个VB交互,因此相比小码流前级送帧,可以节省VB个数。 功能介绍和使用注意事项请参考《MPP 媒体处理软件 V6.0 开发参考》视频编码第6章“内部缩放”小节。
#### 输出文件
两路同协议码流,生成的编码码流落盘到\.h265、H.264 为 .h264、MJPEG 为 .mjp。
#### 控制台日志
启动时若该 case 涉及 RC/GOP 选择,会交互式打印 please input choose rc mode! 与 please input choose gop mode!,等待用户按键。
运行结束成功时打印 program exit normally!,失败时打印 program exit abnormally!。
运行过程中按下回车建(或Ctrl+C)可触发样例的退出,确保 VENC 通道与 VB pool 被正确释放,避免资源泄漏影响下次运行。
#### 正确性判断
1. 用 `ls -l` 确认文件大小随运行时间持续增长,若大小停滞则说明编码链路已断。
2. 用 `ffprobe` 查询编码参数(分辨率、profile、gop间隔);
3. 用 `ffplay` 播放,观察码流播放效果是否OK,确认分辨率是否OK,有无花屏等问题。
- 数据流:

- 流程:
- 初始化VENC前级模块(VI-VPSS)并进行绑定
- 获取用户配置(协议、GOP结构、RC模式)
- 创建编码器,VPSS chn0(发送方)绑定给VENC chn0(接收方), VENC chn0(发送方)绑定给VENC chn1(接收方)
- 启动收流。
3.7 qpmap
- 场景介绍: 演示QPMAP功能的使用。用户调用vpss接口获取视频帧,送帧到VENC,在此模式下允许用户自由决定码控的策略。 QPMAP的功能介绍以及使用注意事项请参考《MPP 媒体处理软件 V6.0 开发参考》视频编码第6章“码率控制”小节。
#### 输出文件
生成的编码码流文件stream_chn0.h265、stream_chn1.h264,分辨率分别为2560x1440@30fps和1280x720@30fps,存储目录为样例执行目录。
#### 控制台日志
启动时若该 case 涉及 RC/GOP 选择,会交互式打印 please input choose rc mode! 与 please input choose gop mode!,等待用户按键。
运行结束成功时打印 program exit normally!,失败时打印 program exit abnormally!。
运行过程中按下回车建(或Ctrl+C)可触发样例的退出,确保 VENC 通道与 VB pool 被正确释放,避免资源泄漏影响下次运行。
#### 正确性判断
1. 用 `ls -l` 确认文件大小随运行时间持续增长,若大小停滞则说明编码链路已断。
2. 用 `ffprobe` 查询编码参数(分辨率、profile、gop间隔);
3. 用 `ffplay` 播放,观察码流播放效果是否OK,确认分辨率是否OK,有无花屏等问题。
- 数据流:

- 流程:
- 初始化VENC前级模块(VI-VPSS)并进行绑定
- 获取用户配置(GOP结构)
- 创建编码器。
- 从vpss通道获取视频帧,填充qpmap信息后送给编码通道编码。
- 带有QPMAP信息送帧,需要使用ss_mpi_venc_send_frame_ex接口。
- QPMAP内存信息填充示例参考函数sample_comm_venc_vir_addr_temp。
- 启动收流。
3.8 debreath effect
- 场景介绍: 演示去呼吸功能的配置。去呼吸功能可以减少编码后码流的呼吸效应, 去呼吸功能的配置以及使用注意事项请参考《MPP 媒体处理软件 V6.0 开发参考》视频编码第6章 ss_mpi_venc_set_debreath_effect接口。
#### 输出文件
生成的编码码流文件stream_chn0.h265、stream_chn1.h264,分辨率分别为2560x1440@30fps和1280x720@30fps,存储目录为样例执行目录。
#### 控制台日志
启动时若该 case 涉及 RC/GOP 选择,会交互式打印 please input choose rc mode! 与 please input choose gop mode!,等待用户按键。
运行结束成功时打印 program exit normally!,失败时打印 program exit abnormally!。
运行过程中按下回车建(或Ctrl+C)可触发样例的退出,确保 VENC 通道与 VB pool 被正确释放,避免资源泄漏影响下次运行。
#### 正确性判断
1. 用 `ls -l` 确认文件大小随运行时间持续增长,若大小停滞则说明编码链路已断。
2. 用 `ffprobe` 查询编码参数(分辨率、profile、gop间隔);
3. 用 `ffplay` 播放,观察码流播放效果是否OK,确认分辨率是否OK,有无花屏等问题。
- 数据流:

- 流程:
- 初始化VENC前级模块(VI-VPSS)并进行绑定
- 获取用户配置(GOP结构、RC模式)
- 创建编码器,和VPSS进行绑定,设置通道0去呼吸。
- 启动收流。
3.9 mjpeg roimap
- 场景介绍: 演示JPEG ROI map的配置方式。 ROI表的配置说明请参考《MPP 媒体处理软件 V6.0 开发参考》视频编码第6章 ot_venc_user_roimap。
#### 输出文件
生成的编码码流文件stream_chn0.mjp、stream_chn1.mjp,存储目录为样例执行目录。
#### 控制台日志
启动时若该 case 涉及 RC/GOP 选择,会交互式打印 please input choose rc mode! 与 please input choose gop mode!,等待用户按键。
运行结束成功时打印 program exit normally!,失败时打印 program exit abnormally!。
运行过程中按下回车建(或Ctrl+C)可触发样例的退出,确保 VENC 通道与 VB pool 被正确释放,避免资源泄漏影响下次运行。
#### 正确性判断
1. 用 `ls -l` 确认文件大小随运行时间持续增长,若大小停滞则说明编码链路已断。
2. 用 `ffprobe` 查询编码参数(分辨率、profile、gop间隔);
3. 用 `ffplay` 播放,观察码流播放效果是否OK,确认分辨率是否OK,有无花屏等问题。
- 数据流:

- 流程:
- 初始化VENC前级模块(VI-VPSS)并进行绑定
- 获取用户配置(RC模式)
- 创建编码器。
- 从vpss通道获取视频帧,填充ROI map信息后送给编码通道编码。带有ROI map信息送帧,需要使用ss_mpi_venc_send_frame_ex接口。
- 启动收流。
3.10 mosaic map
- 场景介绍: 演示马赛克功能使用。逻辑根据马赛克表和马赛克配置将原始yuv直接改写,再进行编码,那么输出的码流就会带有马赛克的效果。
#### 输出文件
生成的编码码流文件stream_chn0.h265、stream_chn1.h264,分辨率分别为2560x1440@30fps和1280x720@30fps,存储目录为样例执行目录。
#### 控制台日志
启动时若该 case 涉及 RC/GOP 选择,会交互式打印 please input choose rc mode! 与 please input choose gop mode!,等待用户按键。
运行结束成功时打印 program exit normally!,失败时打印 program exit abnormally!。
运行过程中按下回车建(或Ctrl+C)可触发样例的退出,确保 VENC 通道与 VB pool 被正确释放,避免资源泄漏影响下次运行。
#### 正确性判断
1. 用 `ls -l` 确认文件大小随运行时间持续增长,若大小停滞则说明编码链路已断。
2. 用 `ffprobe` 查询编码参数(分辨率、profile、gop间隔);
3. 用 `ffplay` 播放,观察码流播放效果是否OK,确认分辨率是否OK,有无花屏等问题;
4. 确认画面上方是否有mosaic区域。
-
数据流: 同sample_venc_qpmap
-
流程:
- 初始化VENC前级模块(VI-VPSS)并进行绑定
- 获取用户配置(GOP结构,RC模式)
- 创建编码器。
- 从vpss通道获取视频帧,填充mosaic信息后送给编码通道编码。
- 带有MOSAIC_MAP信息送帧,需要使用ss_mpi_venc_send_frame_ex接口。
- 马赛克信息填充示例参考函数sample_comm_venc_mosaic_map_send_frame_proc。
- 启动收流。
3.11 composite
- 场景介绍: 演示复合编码的配置方法。 复合编码功能介绍和具体使用方法参考《MPP 媒体处理软件 V6.0 开发参考》视频编码第6章“复合编码”小节。
#### 输出文件
生成的编码码流文件stream_chn0.h265,存储目录为样例执行目录。
#### 控制台日志
启动时若该 case 涉及 RC/GOP 选择,会交互式打印 please input choose rc mode! 与 please input choose gop mode!,等待用户按键。
运行结束成功时打印 program exit normally!,失败时打印 program exit abnormally!。
运行过程中按下回车建(或Ctrl+C)可触发样例的退出,确保 VENC 通道与 VB pool 被正确释放,避免资源泄漏影响下次运行。
#### 正确性判断
1. 用 `ls -l` 确认文件大小随运行时间持续增长,若大小停滞则说明编码链路已断。
2. 用 `ffprobe` 查询编码参数(分辨率、profile、gop间隔);
3. 用 `ffplay` 播放,观察码流播放效果是否OK,确认分辨率是否OK,有无花屏等问题。播放画面是带有mosaic画面的效果,使用海思硬解码能解码出不带mosaic画面的效果。
- 数据流:

- 流程:
- 初始化VENC前级模块(VI-VPSS)并进行绑定
- 获取用户配置(GOP结构,RC模式)
- 设置通道config(composite_enc_en,mosaic_en,quality_level),创建编码器。通道配置请参考《MPP 媒体处理软件 V6.0 开发参考》视频编码第6章 ss_mpi_venc_set_chn_config接口。
- 从vpss通道获取视频帧,填充mosaic信息后调用ss_mpi_venc_send_multi_frame接口送编码通道编码。复合编码送帧需要使用接口ss_mpi_venc_send_multi_frame
- 启动收流。
3.12 single sp
- 场景介绍: 演示延时GOP模式SINGLE_SP的配置方式。 SINGLE_SP的功能介绍和注意事项请参考《MPP 媒体处理软件 V6.0 开发参考》视频编码第6章“GOP 结构”小节。
#### 输出文件
生成的编码码流文件stream_chn0.h265、stream_chn1.h264,分辨率分别为2560x1440@30fps和1280x720@30fps,存储目录为样例执行目录。
#### 控制台日志
启动时若该 case 涉及 RC/GOP 选择,会交互式打印 please input choose rc mode! 与 please input choose gop mode!,等待用户按键。
运行结束成功时打印 program exit normally!,失败时打印 program exit abnormally!。
运行过程中按下回车建(或Ctrl+C)可触发样例的退出,确保 VENC 通道与 VB pool 被正确释放,避免资源泄漏影响下次运行。
#### 正确性判断
1. 用 `ls -l` 确认文件大小随运行时间持续增长,若大小停滞则说明编码链路已断。
2. 用 `ffprobe` 查询编码参数(分辨率、profile、gop间隔);
3. 用 `ffplay` 播放,观察码流播放效果是否OK,确认分辨率是否OK,有无花屏等问题。
- 数据流:

- 流程:
- 初始化VENC前级模块(VI-VPSS)并进行绑定
- 获取用户配置(RC模式)
- 创建编码器(GOP模式为SINGLE_SP,设置跳帧参考参数(base, enhance, pred_en)=(1, 3, TRUE)),和VPSS进行绑定。
- 启动收流。