跳到主要内容

MPP 视频类功能

获取视频帧

Sample 描述

Sample 名称sample_drivervipp
功能概述演示直接调用 vin 驱动接口获取视频帧。
组件依赖
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_driverVipp
输入文件
输出文件每隔若干帧保存一帧到指定的 output 目录。

参数配置

video_device: 指定vipp设备节点,通常取值0、1、4、5
capture_width: 指定camera采集的图像宽度。
capture_height: 指定camera采集的图像高度。
pixel_format: 指定camera采集的图像格式。
fps: 指定camera采集的帧率。
test_frame_count: 指定测试采集的frame总数,0表示无限。
store_count: 指定保存的图像数量。
store_interval: 指定保存图像的周期,即每n帧图像保存1帧。
frame_saving_path: 指定保存图像的目录,该目录要确保存在。

测试通路

image-20250221110821184

测试指令

# cd /mnt/extsd/
# ./sample_driverVipp # 需要逐个指定参数。
或者一次性指定所有测试参数
# ./sample_driverVipp 0 1920 1080 8 60 0 10 60 /mnt/extsd/

退出测试

不自动退出测试,需要按 “ctrl + c” 退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 使用 YUView 软件分析生成的YUV文件正常。

VI 采集图像帧

Sample 描述

Sample 名称sample_virvi
功能概述演示采集图像帧,最多可支持 2 路 vipp 采集
组件依赖mpp_vi
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_virvi
输入文件
输出文件1. 连续YUV文件:/mnt/extsd/test.yuv
2. 单帧YUV文件
存放在指定路径/mnt/extsd 下面。

参数配置

第 0 路 vipp 的参数配置

dev_num_0: 指定vipp设备ID,通常取值0,表示vipp0
isp_dev_num_0: 指定isp设备ID,通常取值0,表示isp0
pic_width_0: 指定vipp采集图像的宽度。
pic_height_0: 指定vipp采集图像的高度。
frame_rate_0: 指定vipp采集图像的帧率。
pic_format_0: 指定vipp采集图像的像素格式。
color_space_0: 指定vipp采集图像的颜色空间格式。
enable_wdr_mode_0: 指定vipp采集图像是否开启WDR。
drop_frm_num_0: 指定vipp开始前丢弃的帧数。

第 1 路 vipp 的参数配置

dev_num_1: 指定vipp设备ID,通常取值4,表示vipp4
isp_dev_num_1: 指定isp设备ID,通常取值0,表示isp0。
pic_width_1: 指定vipp采集图像的宽度。
pic_height_1: 指定vipp采集图像的高度。
frame_rate_1: 指定vipp采集图像的帧率。
pic_format_1: 指定vipp采集图像的像素格式。
color_space_1: 指定vipp采集图像的颜色空间格式。
enable_wdr_mode_1: 指定vipp采集图像是否开启WDR。
drop_frm_num_1: 指定vipp开始前丢弃的帧数。

其他配置

指定需要保存哪一路vipp的YUV数据,以及保存的帧数和文件
save_pic_dev: 保存指定vipp的YUV数据。
yuv_frm_count: 指定保存的图像帧数。
yuv_file: 指定保存的路径和文件名。

保存 save_pic_dev 指定vipp的单帧YUV数据的总帧数、间隔和位置
raw_store_count: 指定保存单帧YUV数据的总帧数。
raw_store_interval: 指定保存单帧YUV数据的间隔,单位: 帧。
store_dir: 指定保存单帧YUV数据的位置。

指定保存 YUV 的 buffer 长度和个数
save_pic_buffer_len: 指定保存 YUV 的 buffer 长度,默认值0,表示根据像素格式和分辨率自动换算 buffer 长度。
save_pic_buffer_num: 指定保存 YUV 的 buffer 个数。

test_duration: 测试时间,单位: s。

测试通路

image-20250221113103836

测试指令

./sample_virvi -path ./sample_virvi.conf

退出测试

测试达到设定的时间后自动退出测试,或者按 “ctrl + c” 提前结束测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 使用 YUView 软件查看测试生成的 YUV 文件正常。

视频采集屏幕预览

Sample 描述

Sample 名称sample_virvi2vo
功能概述创建 mpi_vi 和 mpi_vo,将它们绑定,再分别启动。mpi_vi采集图像,直接传输给mpi_vo显示。
组件依赖mpp_vi
mpp_hw_display
mpp_vo
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_virvi2vo
输入文件
输出文件

参数配置

vipp0 采集 + vo layer0 预览的配置

dev_num: 指定vipp设备号,通常取值为0,表示vipp0。
capture_width: 指定vipp0采集图像的宽度。
capture_height: 指定vipp0采集图像的高度。
display_x: 指定vo显示输出图像的x坐标。
display_y: 指定vo显示输出图像的y坐标。
display_width: 指定vo显示输出图像的宽度。
display_height: 指定vo显示输出图像的高度。
layer_num: 指定vo显示的层数,通常取值为0,表示vo的layer0。

vipp4 采集 + vo layer4预览的配置

dev_num2: 指定vipp设备号,通常取值为4,表示vipp4。
capture_width2: 指定vipp0采集图像的宽度。
capture_height2: 指定vipp0采集图像的高度。
display_x2: 指定vo显示输出图像的x坐标。
display_y2: 指定vo显示输出图像的y坐标。
display_width2: 指定vo显示输出图像的宽度。
display_height2: 指定vo显示输出图像的高度。
layer_num2: 指定vo显示的层数,通常取值为4,表示vo的layer4。

测试通路

image-20250221113433966

测试指令

./sample_virvi2vo -path ./sample_virvi2vo.conf

退出测试

测试达到设定的时间后自动退出测试,或者按 “ctrl + c” 提前结束测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 屏幕实时显示视频图像正常,无卡顿、花屏等。

VI 组件的 Reset 流程演示

Sample 描述

Sample 名称sample_vi_reset
功能概述该 sample 演示 vi 组件的 reset 流程。
组件依赖mpp_vi
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/uncommonly_samples/sample_vi_reset
输入文件
输出文件

参数配置

test_count: 指定测试的次数。

指定测试vipp id的起止范围
vipp_id_start: 指定测试起始的vipp id,通常取值0,表示vipp0。
vipp_id_end: 指定测试结束的vipp id,通常取值1(即测试前2个vipp)。

测试通路

image-20250221113938254

测试指令

./sample_vi_reset -path ./sample_vi_reset.conf

退出测试

到达测试次数后自动退出测试,或者按 “ctrl + c” 提前结束测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。

测试 ISP 相关功能

Sample 描述

Sample 名称sample_isposd
功能概述创建 mpi_vi 和 mpi_venc,将它们绑定,再分别启动。mpi_vi 采集图像,调用 mpi_vi 相关接口获取实时的 ISP 参数添加 overlay 到 VENC 通道。
组件依赖mpp_vi
mpp_venc
mpp_system_rgb_ctrl
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/uncommonly_samples/sample_isposd
输入文件
输出文件/mnt/extsd/testRegion.h264

参数配置

capture_width: 指定camera采集图像的宽度。
capture_height: 指定camera采集图像的高度。
pic_format: 指定camera采集图像的像素格式。
frame_rate: 指定camera采集的帧率。
test_duration: 指定测试时间,单位: s。
overlay_x,overlay_y,overlay_w,overlay_h: 指定overlay类型的region参数。
cover_x,cover_y,cover_w,cover_h: 指定cover类型的region参数。
add_venc_channel: 指定是否选择VENC通道,默认0,表示不选择编码通道。
encoder_count: 保存编码视频的帧数。
bit_rate: 指定编码的码率,单位: bps。
encoder_type: 指定编码类型(H.264、MJPEG)。
output_file_path: 指定编码视频的保存路径。

测试通路

image-20250221114817590

测试指令

./sample_isposd -path ./sample_isposd.conf

退出测试

到达测试时间后自动退出测试,或者按 “ctrl + c” 提前结束测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 生成的编码文件 testRegion.h264 的 osd 效果正常,且位置正确。

调用 ISP 接口抓图

Sample 描述

Sample 名称sample_vin_isp_test
功能概述该 sample 用于测试ISP通路,是通过调用 isp 接口抓图的 demo。
组件依赖
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/uncommonly_samples/sample_vin_isp_test
输入文件
输出文件

参数配置

参数1:选择通道
参数2:分辨率宽
参数3:分辨率高
参数4:保存路径
参数5:保存帧数
参数6:测试次数
参数7:FPS
参数8:WDR开关

测试通路

image-20250221115617933

测试指令

./sample_vin_isp_test

退出测试

测试达到指定次数后自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 使用YUView 软件分析生成的YUV文件正常。

VIPP 和 VENC 的 OSD

Sample 描述

Sample 名称sample_region
功能概述演示vipp和venc的osd功能。该sample测试mpi_vi和mpi_vo组件或者mpi_vi和mpi_venc组件绑定。
创建mpi_vi和mpi_vo,将它们绑定,再分别启动。mpi_vi采集图像,添加overlay和cover不同的region到VI通道,传输给mpi_vo显示。
也可以选择加入mpi_vi和mpi_venc组件绑定,把region添加到VENC通道上,保存编码后的视频数据文件,可以用VLC播放。
组件依赖mpi_vi
mpi_vo
mpi_venc
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_region
输入文件
输出文件/mnt/extsd/testRegion.h264

参数配置

online_en: 指定是否开启在线编码,默认0,表示不开启在线编码,即当前为离线编码。
online_share_buf_num: 指定在线编码的共享buffer个数(1或2),默认2,表示2个buffer。注意该配置仅当配置在线模式时才生效。

vipp_dev: 指定vipp设备号,默认0,表示vipp0。
ve_ch_id: 指定编码通道,默认0,表示venc ch0。

rgn_attach_to_vi: 指定是否测试vipp的osd,默认1,表示测试vipp的osd,其实主要是测试vipp orl功能。

add_venc_channel: 指定是否进行编码,默认yes,表示vipp采集后图像后送给venc编码。
rgn_attach_to_ve: 指定是否测试编码osd,默认1,表示测试编码osd。注意该配置仅当配置add_venc_channel=yes时才生效。

change_disp_attr_enable: 指定开启/关闭改变osd显示位置测试,默认1,表示开启该测试。

以下编码相关参数仅当配置add_venc_channel=yes时生效
encoder_count: 指定编码的总帧数。
bit_rate: 指定编码的码率,单位: bps。
encoder_type: 指定编码格式(H.264、H265)。(V821仅支持H264)
output_file_path: 指定编码文件的存放路径。

配置vipp采集参数
capture_width: 指定camera采集图像的宽度。
capture_height: 指定camera采集图像的高度。

pic_format: 指定像素格式(nv21,nv12,yu12,yv12; aw_lbc_2_5x,aw_lbc_2_0x,aw_lbc_1_5x,aw_lbc_1_0x)。

frame_rate: 指定帧率,单位: fps。

注:当设置以下显示的宽度和高度为0时,表示不显示。
disp_width: 指定显示的宽度。
disp_height: 指定显示的高度。

bitmap_format: 指定位图的格式(ARGB8888、ARGB1555)。

注:当设置以下overlay、cover、orl的宽度和高度为0时,表示不进行该项测试。

overlay_x: 指定overlay的x坐标。
overlay_y: 指定overlay的y坐标。
overlay_w: 指定overlay的宽度。
overlay_h: 指定overlay的高度。

cover_x: 指定cover的x坐标。
cover_y: 指定cover的y坐标。
cover_w: 指定cover的宽度。
cover_h: 指定cover的高度。

orl_x: 指定orl矩形的x坐标。
orl_y: 指定orl矩形的y坐标。
orl_w: 指定orl矩形的宽度。
orl_h: 指定orl矩形的高度。
orl_thick: 指定orl线条的宽度,单位: 像素个数,默认2,表示2个像素的宽度。

test_duration: 指定测试时间,单位: s。

测试通路

image-20250222100707269

测试指令

./sample_region -path ./sample_region.conf

退出测试

测试达到设定的时间后自动退出测试,或者按 “ctrl + c” 提前结束测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 生成的编码文件 testRegion.h264 的 osd 效果正常,且位置正确。
3. 屏幕实时显示 Camera 采集的视频图像,同时,显示一个绿色的框。

视频编码功能

Sample 描述

Sample 名称sample_venc
功能概述该sample 演示从yuv(sample中格式限定为yuv420p)原始数据文件xxx.yuv中读取视频帧,编码,将取得的编码往输出文件里面直接写。生成裸码流视频文件。
注意:
如果是h264编码sample会自动在目标文件的开始加上spspps信息,其他格式则不加。
组件依赖mpp_venc
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_venc
输入文件/mnt/extsd/test.yuv
输出文件/mnt/extsd/test.raw

参数配置

src_file: 指定原始yuv文件的路径。
src_width: 指定原始视频的宽度。
src_height: 指定原始视频的高度。
dst_file: 指定生成的裸码流视频文件路径。
dst_width: 指定生成的裸码流视频的宽度。
dst_height: 指定生成的裸码流视频的高度。

src_pixfmt: 指定像素格式(YUV类型: nv21(yvu420sp), yu12(yuv420p), yv12, nv12。LBC压缩类型: aw_lbc_2_0x, aw_lbc_2_5x, aw_lbc_1_5x, aw_lbc_1_0x)。
color_space: 指定颜色空间(jpeg, rec709, rec709_part_range)。
encoder: 指定编码格式(H.264、MJPEG)。
profile: 指定编码质量,对于H264,建议配置High(2)
framerate: 指定帧率,单位: fps。
bitrate: 指定编码的码率,单位: bps。

rotate: 指定编码旋转角度(0, 90, 180, 270),顺时针方向。
rc_mode: 指定码率控制模式(0:CBR, 1:VBR, 2:FIXQP, 3:QPMAP)。
gop_mode: 指定GOP模式(0:NormalP, 1:DualP, 2:SmartP)。
gop_size: 指定GOP大小,当前只针对H265有效,V821不使用。取值范围[1, 63]。
product_mode: 指定产品类型(0:Normal, 1:IPC)。
sensor_type: 指定sensor类型(0:DisWdr, 1:EnWdr)。
key_frame_interval: 指定I帧间隔。

VBR、CBR模式,编码参数
init_qp: 指定初始QP值,取值范围(0, 51)。
min_i_qp: 指定I帧最小QP值,取值范围(0, 51)。
max_i_qp: 指定I帧最大QP值,取值范围(0, 51)。
min_p_qp: 指定P帧最小QP值,取值范围(0, 51)。
max_p_qp: 指定P帧最大QP值,取值范围(0, 51)。

FIXQP模式,编码参数
i_qp: 指定I帧的QP值,取值范围(0, 51)
p_qp: 指定P帧的QP值,取值范围(0, 51)

VBR模式,编码参数
moving_th:指定mb16x16中MAD的阈值,取值范围[0, 31]。
quality: 指定静态P帧的位系数,取值范围[1, 20]。
p_bits_coef: 指定移动P帧的位系数,取值范围[1, 50]。
i_bits_coef: 指定I帧的位系数,取值范围[1, 20]。

test_duration: 测试时间,单位: s。

测试通路

image-20250222101907197

测试指令

./sample_venc -path ./sample_venc.conf

退出测试

测试达到设定的时间后自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 使用VLC 软件播放裸码流文件test.raw正常。

视频编码和封装 MP4

Sample 描述

Sample 名称sample_venc2muxer
功能概述从yuv原始数据文件xxx.yuv中读取视频帧,编码,并由muxer进行封装生成相应的视频输出文件。
组件依赖mpp_venc
mpp_muxer
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/uncommonly_samples/sample_venc2muxer
输入文件/mnt/extsd/1080p.yuv
输出文件/mnt/extsd/1080p.mp4

参数配置

yuv_src_file: 指定原始yuv文件的路径。
yuv_src_size: 指定原始视频文件的视频大小,如1080p。

视频源的region区域,当设置region_w=0时,不开启该功能。
以下宽高和坐标要求16对齐。
region_x: 指定region区域的x坐标。
region_y: 指定region区域的y坐标。
region_w: 指定region区域的宽度。
region_h: 指定region区域的高度。

yuv_src_pixfmt: 指定像素格式(nv21)。

video_dst_file: 指定生成的视频文件路径。
video_size: 指定生成的视频文件视频大小,如1080p。

video_encoder: 指定视频编码格式(H.264、MJPEG)。
profile: 指定编码质量,对于H264,建议配置High(2)
rc_mode: 指定码率控制模式(0:CBR, 1:VBR, 2:FIXQP, 3:QPMAP)。

video_framerate: 指定生成视频文件的帧率,单位: fps。
video_bitrate: 指定生成视频文件的码率,单位: bps。

video_duration: 指定生成一个视频文件的最大持续时间(如:每个视频文件长度一分钟),单位: s。
media_file_format: 指定视频文件的封装格式,支持mp4和ts。

test_duration: 指定测试时间,单位: s。

测试通路

image-20250222102244016

测试指令

./sample_venc2muxer -path ./sample_venc2muxer.conf

退出测试

测试达到设定的时间后自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 使用 VLC 软件播放生成的 mp4 文件正常。

采集到编码功能

Sample 描述

Sample 名称sample_virvi2venc
功能概述该sample测试mpi_vi和mpi_venc组件的绑定组合。创建mpi_vi和mpi_venc,将它们绑定,再分别启动。
mpi_vi采集图像,直接传输给mpi_venc进行编码。
组件依赖mpp_vi
mpp_venc
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_virvi2venc
输入文件
输出文件/mnt/extsd/test.raw

参数配置

online_en: 指定是否开启在线编码,默认0,表示不开启在线编码,即当前为离线编码。
online_share_buf_num: 指定在线编码的共享buffer个数(1或2),默认2,表示2个buffer。注意该配置仅当配置在线模式时才生效。

vipp_id: 指定vipp设备号,默认0,表示vipp0。
wdr_en: 指定是否开启WDR,默认0,表示不开WDR。

drop_frm_num: 指定丢帧个数,对于离线编码是vipp丢帧,对于在线编码是ve编码前丢帧。

src_width: 指定原始视频的宽度。
src_height: 指定原始视频的高度。

vi_buffer_num: 指定VI的buffer个数,仅对离线编码有效。
saturation_change: 指定饱和度改变的值,默认0,表示不调整。取值范围[-256, 512]。

src_pixfmt: 指定像素格式(YUV类型: nv21(yvu420sp), yu12(yuv420p), yv12, nv12。LBC压缩类型: aw_lbc_2_0x, aw_lbc_2_5x, aw_lbc_1_5x, aw_lbc_1_0x)。
color_space: 指定颜色空间(jpeg, rec709, rec709_part_range)。

venc_ch_id: 指定编码通道,默认0,表示venc ch0。

video_dst_file: 指定编码文件的存放路径。
video_framerate: 指定帧率,单位: fps。
video_bitrate: 指定编码的码率,单位: bps。

video_width: 指定生成的裸码流视频的宽度。
video_height: 指定生成的裸码流视频的高度。

video_encoder: 指定编码格式(H.264、H.265、MJPEG)。(V821只支持H264)
profile: 指定编码质量,对于H264,建议配置High(2),对于H265,建议配置Main(0)。

ve_freq: 指定VE的频率,默认0,表示300MHz,单位: MHz。

product_mode: 指定产品类型(0:Normal, 1:IPC)。
sensor_type: 指定sensor类型(0:DisWdr, 1:EnWdr)。
key_frame_interval: 指定I帧间隔。

enable_gdc: 指定是否开启GDC功能,默认0,表示不开GDC。
rc_mode: 指定码率控制模式(0:CBR, 1:VBR, 2:FIXQP, 3:QPMAP)。

VBR、CBR模式,编码参数
init_qp: 指定初始QP值,取值范围(0, 51)。
min_i_qp: 指定I帧最小QP值,取值范围(0, 51)。FIXQP模式时,取其值为i_qp。
max_i_qp: 指定I帧最大QP值,取值范围(0, 51)。
min_p_qp: 指定P帧最小QP值,取值范围(0, 51)。FIXQP模式时,取其值为p_qp。
max_p_qp: 指定P帧最大QP值,取值范围(0, 51)。
mb_qp_limit_en: 指定是否开启mb qp限制,默认0,表示不开启。

VBR模式,编码参数
moving_th:指定mb16x16中MAD的阈值,取值范围[0, 31]。
quality: 指定静态P帧的位系数,取值范围[1, 20]。
p_bits_coef: 指定移动P帧的位系数,取值范围[1, 50]。
i_bits_coef: 指定I帧的位系数,取值范围[1, 20]。

gop_mode: 指定GOP模式(0:NormalP, 1:DualP, 2:SmartP)。
gop_size: 指定GOP大小,当前只针对H265有效,取值范围[1, 63]。

高级跳帧参数
AdvancedRef_Base: 设置该值大于0表示开启高级跳帧功能,等于0表示关闭高级跳帧功能。
AdvancedRef_Enhance: 设置Enhance为5。
AdvancedRef_RefBaseEn: 设置该值为1表示开启参考帧,等于0表示关闭参考帧。

enable_fast_enc: 指定是否开启快速编码,默认0,表示不开启。

encode_rotate: 指定编码旋转角度(0, 90, 180, 270),顺时针方向。
mirror: 指定编码镜像是否开启,默认0,表示不开启。取值范围[0, 1]。

video_duration: 指定生成一个视频文件的最大持续时间(如:每个视频文件长度一分钟),单位: s。
test_duration: 指定测试时间,单位: s。

color2grey: 指定是否开启彩转灰功能,默认"no",表示不开启。取值范围[“no”, "yes"]。

2D降噪参数配置
2dnr_en: 编码器2DNR使能,默认1,表示开启。取值范围[0, 1]。
2dnr_strength_y: 亮度降噪强度系数。该值越大,滤波强度越高。默认127,取值范围[0, 255]。
2dnr_strength_c: 色度降噪强度系数。该值越大,滤波强度越高。默认127,取值范围[0, 255]。
2dnr_threshold_y: 亮度邻域像素降噪开关阈值。该值越大,越容易触发2d滤波。默认7,取值范围[0, 15]。
2dnr_threshold_c: 色度邻域像素降噪开关阈值。该值越大,越容易触发2d滤波。默认7,取值范围[0, 15]。

3D降噪参数配置
3dnr_en: 编码器3DNR使能,默认1,表示开启。取值范围[0, 1]。
3dnr_pix_level_en: 3d滤波权重系数自适应修正开关。默认0,表示不开启。取值范围[0, 1]。
3dnr_smooth_en: 像素级3x3平滑滤波使能。默认1,表示开启。取值范围[0, 1]。
3dnr_pix_diff_th: 仅当3d_adjust_pix_level_enable为1时生效,自适应修正幅度阈值。该值越大,滤波强度越高。默认6,取值范围[0, 31]。
3dnr_max_mv_th: 源图像素块运动矢量最大阈值,单个像素块仅当其水平和垂直MV皆小于该阈值,才会进行3d滤波。该值越大,越容易触发3d滤波。默认2,取值范围[0, 63]。
3dnr_max_mad_th: 源图与参考图之间像素块的MAD最大阈值,单个像素块仅当其MAD值小于该阈值,才会进行3d滤波。该值越大,越容易触发3d滤波。默认11,取值范围[0, 63]。
3dnr_min_coef: 3d滤波权重系数的最小阈值。该值越小,自适应3d滤波的强度上限越高。默认14,取值范围[0, 3dnr_max_coef]。
3dnr_max_coef: 3d滤波权重系数的最大阈值。该值越大,自适应3d滤波的强度下限越低。默认16,取值范围[3dnr_min_coef, 16]。

ROI测试参数配置
roi_num: 指定ROI的个数,默认0,表示不开启ROI测试。取值范围[0, 8]。
roi_qp: 指定ROI区域的QP值,默认50,表示最差质量。取值范围(0, 51)。
roi_BgFrameRateEnable: 指定是否开启非ROI区域低帧率编码,默认0,表示不开启。
roi_BgFrameRateAttenuation: 指定非ROI区域的帧率衰减比例,默认3,表示非ROI区域的帧率是正常帧率的1/3。

IntraRefresh_BlockNum: 指定P帧帧内刷新的block个数,默认0,表示不开启P帧帧内刷新功能。
orl_num: 指定ORL(Object Rectangle Label)的个数,取值范围[0,16]。

配置vbv buffer大小和vbv buffer阈值大小
vbvBufferSize: 指定vbv buffer大小,默认0,表示由mpp middleware自行计算并设置给编码器,大于0,表示由app设置。
vbvThreshSize: 指定vbv buffer阈值大小,默认0,表示由mpp middleware自行计算并设置给编码器,大于0,表示由app设置。

裁剪编码参数设置
crop_en: 指定是否开启裁剪编码,默认0,表示不开启。
crop_rect_x: 指定裁剪区域的x坐标。
crop_rect_y: 指定裁剪区域的y坐标。
crop_rect_w: 指定裁剪区域的宽度。
crop_rect_h: 指定裁剪区域的高度。

vui_timing_info_present_flag: 指定是否添加VUI信息,默认0,表示不添加。

encpp_disable: 指定是否禁用encpp新通路,默认0,表示不禁用。

super_frm_mode: 指定超级帧模式,默认0,表示不启用。(0:none, 1:discarded, 2:re-encode)。

测试通路

image-20250222102320330

测试指令

./sample_virvi2venc -path ./sample_virvi2venc.conf

退出测试

测试达到设定的时间后自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 使用VLC 软件播放生成的裸码流文件/mnt/extsd/test.raw正常。

缩时录影功能

Sample 描述

Sample 名称sample_timelapse
功能概述演示缩时录影。
从camera节点取vi输入数据,对venc组件设置取帧间隔,设置编码帧率,并对数据进行编码封装,生成对应的视频输出文件。
组件依赖mpp_vi
mpp_venc
mpp_muxer
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_timelapse
输入文件
输出文件/mnt/extsd/timelapse.mp4

参数配置

vipp_index: 获取视频数据的VIPP设备号,默认0,表示vipp0。通常取值0/4。
vipp_width: vipp输出视频图像的宽度。
vipp_height: vipp输出视频图像的高度。
vipp_frame_rate: vipp的采集帧率,单位: fps。
timelapse: 缩时录影模式下取帧的帧间隔,单位: us。
video_frame_rate: 编码帧率,即设置编码文件的播放帧率。
video_duration: 编码文件的播放时长。
video_bitrate: 编码码率,单位: Mbps。
video_file_path: 编码文件的存储路径。

测试通路

image-20250222102450200

测试指令

./sample_timelapse -path ./sample_timelapse.conf

退出测试

最终自动退出测试,默认测试时间有点长,可以按“ctrl + c”退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 使用VLC 软件播放生成的mp4文件/mnt/extsd/timelapse.mp4正常。

视频输入编码和封装 MP4

Sample 描述

Sample 名称sample_virvi2venc2muxer
功能概述从camera 节点取vi 输入数据,并对数据进行编码封装,生成对应的视频输出文件。
组件依赖mpi_vi
mpp_venc
mpp_muxer
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_virvi2venc2muxer
输入文件
输出文件/mnt/extsd/test.mp4

参数配置

online_en: 指定是否开启在线编码,默认0,表示不开启在线编码,即当前为离线编码。
online_share_buf_num: 指定在线编码的共享buffer个数(1或2),默认2,表示2个buffer。注意该配置仅当配置在线模式时才生效。

vipp_id: 指定vipp设备号,默认0,表示vipp0。
wdr_en: 指定是否开启WDR,默认0,表示不开WDR。

drop_frm_num: 指定丢帧个数,对于离线编码是vipp丢帧,对于在线编码是ve编码前丢帧。

src_width: 指定原始视频的宽度。
src_height: 指定原始视频的高度。

vi_buffer_num: 指定VI的buffer个数,仅对离线编码有效。
saturation_change: 指定饱和度改变的值,默认0,表示不调整。取值范围[-256, 512]。

src_pixfmt: 指定像素格式(YUV类型: nv21(yvu420sp), yu12(yuv420p), yv12, nv12。LBC压缩类型: aw_lbc_2_0x, aw_lbc_2_5x, aw_lbc_1_5x, aw_lbc_1_0x)。
color_space: 指定颜色空间(jpeg, rec709, rec709_part_range)。

venc_ch_id: 指定编码通道,默认0,表示venc ch0。

video_dst_file: 指定编码文件的存放路径。
add_repair_info: 指定是否为mp4文件添加文件修复信息。默认0,表示不添加。
frmsTag_backup_interval: 指定mp4文件修复的frame tag备份的时间间隔,单位:us。
dst_file_max_cnt: 指定muxer封装mp4文件,最多保留的文件个数。默认3,表示最多只允许保留3个mp4文件。

video_framerate: 指定帧率,单位: fps。
video_bitrate: 指定编码的码率,单位: bps。

video_width: 指定生成的裸码流视频的宽度。
video_height: 指定生成的裸码流视频的高度。

video_encoder: 指定编码格式(H.264、MJPEG)。
profile: 指定编码质量,对于H264,建议配置High(2)

ve_freq: 指定VE的频率,默认0,表示300MHz,单位: MHz。

product_mode: 指定产品类型(0:Normal, 1:IPC)。
sensor_type: 指定sensor类型(0:DisWdr, 1:EnWdr)。
key_frame_interval: 指定I帧间隔。

enable_gdc: 指定是否开启GDC功能,默认0,表示不开GDC。
rc_mode: 指定码率控制模式(0:CBR, 1:VBR, 2:FIXQP, 3:QPMAP)。

VBR、CBR模式,编码参数
init_qp: 指定初始QP值,取值范围(0, 51)。
min_i_qp: 指定I帧最小QP值,取值范围(0, 51)。FIXQP模式时,取其值为i_qp。
max_i_qp: 指定I帧最大QP值,取值范围(0, 51)。
min_p_qp: 指定P帧最小QP值,取值范围(0, 51)。FIXQP模式时,取其值为p_qp。
max_p_qp: 指定P帧最大QP值,取值范围(0, 51)。
mb_qp_limit_en: 指定是否开启mb qp限制,默认0,表示不开启。

VBR模式,编码参数
moving_th:指定mb16x16中MAD的阈值,取值范围[0, 31]。
quality: 指定静态P帧的位系数,取值范围[1, 20]。
p_bits_coef: 指定移动P帧的位系数,取值范围[1, 50]。
i_bits_coef: 指定I帧的位系数,取值范围[1, 20]。

gop_mode: 指定GOP模式(0:NormalP, 1:DualP, 2:SmartP)。
gop_size: 指定GOP大小,当前只针对H265有效,取值范围[1, 63]。

高级跳帧参数
AdvancedRef_Base: 设置该值大于0表示开启高级跳帧功能,等于0表示关闭高级跳帧功能。
AdvancedRef_Enhance: 设置Enhance为5。
AdvancedRef_RefBaseEn: 设置该值为1表示开启参考帧,等于0表示关闭参考帧。

enable_fast_enc: 指定是否开启快速编码,默认0,表示不开启。

encode_rotate: 指定编码旋转角度(0, 90, 180, 270),顺时针方向。
mirror: 指定编码镜像是否开启,默认0,表示不开启。取值范围[0, 1]。

video_duration: 指定生成一个视频文件的最大持续时间(如:每个视频文件长度一分钟),单位: s。
test_duration: 指定测试时间,单位: s。

color2grey: 指定是否开启彩转灰功能,默认"no",表示不开启。取值范围[“no”, "yes"]。

2D降噪参数配置
2dnr_en: 编码器2DNR使能,默认1,表示开启。取值范围[0, 1]。
2dnr_strength_y: 亮度降噪强度系数。该值越大,滤波强度越高。默认127,取值范围[0, 255]。
2dnr_strength_c: 色度降噪强度系数。该值越大,滤波强度越高。默认127,取值范围[0, 255]。
2dnr_threshold_y: 亮度邻域像素降噪开关阈值。该值越大,越容易触发2d滤波。默认7,取值范围[0, 15]。
2dnr_threshold_c: 色度邻域像素降噪开关阈值。该值越大,越容易触发2d滤波。默认7,取值范围[0, 15]。

3D降噪参数配置
3dnr_en: 编码器3DNR使能,默认1,表示开启。取值范围[0, 1]。
3dnr_pix_level_en: 3d滤波权重系数自适应修正开关。默认0,表示不开启。取值范围[0, 1]。
3dnr_smooth_en: 像素级3x3平滑滤波使能。默认1,表示开启。取值范围[0, 1]。
3dnr_pix_diff_th: 仅当3d_adjust_pix_level_enable为1时生效,自适应修正幅度阈值。该值越大,滤波强度越高。默认6,取值范围[0, 31]。
3dnr_max_mv_th: 源图像素块运动矢量最大阈值,单个像素块仅当其水平和垂直MV皆小于该阈值,才会进行3d滤波。该值越大,越容易触发3d滤波。默认2,取值范围[0, 63]。
3dnr_max_mad_th: 源图与参考图之间像素块的MAD最大阈值,单个像素块仅当其MAD值小于该阈值,才会进行3d滤波。该值越大,越容易触发3d滤波。默认11,取值范围[0, 63]。
3dnr_min_coef: 3d滤波权重系数的最小阈值。该值越小,自适应3d滤波的强度上限越高。默认14,取值范围[0, 3dnr_max_coef]。
3dnr_max_coef: 3d滤波权重系数的最大阈值。该值越大,自适应3d滤波的强度下限越低。默认16,取值范围[3dnr_min_coef, 16]。

ROI测试参数配置
roi_num: 指定ROI的个数,默认0,表示不开启ROI测试。取值范围[0, 8]。
roi_qp: 指定ROI区域的QP值,默认50,表示最差质量。取值范围(0, 51)。
roi_BgFrameRateEnable: 指定是否开启非ROI区域低帧率编码,默认0,表示不开启。
roi_BgFrameRateAttenuation: 指定非ROI区域的帧率衰减比例,默认3,表示非ROI区域的帧率是正常帧率的1/3。

IntraRefresh_BlockNum: 指定P帧帧内刷新的block个数,默认0,表示不开启P帧帧内刷新功能。
orl_num: 指定ORL(Object Rectangle Label)的个数,取值范围[0,16]。

配置vbv buffer大小和vbv buffer阈值大小
vbvBufferSize: 指定vbv buffer大小,默认0,表示由mpp middleware自行计算并设置给编码器,大于0,表示由app设置。
vbvThreshSize: 指定vbv buffer阈值大小,默认0,表示由mpp middleware自行计算并设置给编码器,大于0,表示由app设置。

裁剪编码参数设置
crop_en: 指定是否开启裁剪编码,默认0,表示不开启。
crop_rect_x: 指定裁剪区域的x坐标。
crop_rect_y: 指定裁剪区域的y坐标。
crop_rect_w: 指定裁剪区域的宽度。
crop_rect_h: 指定裁剪区域的高度。

vui_timing_info_present_flag: 指定是否添加VUI信息,默认0,表示不添加。

encpp_disable: 指定是否禁用encpp新通路,默认0,表示不禁用。

super_frm_mode: 指定超级帧模式,默认0,表示不启用。(0:none, 1:discarded, 2:re-encode)。

测试通路

image-20250222102654400

测试指令

./sample_vi2venc2muxer -path ./sample_vi2venc2muxer.conf

退出测试

测试达到设定的时间后自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 使用 VLC 软件播放生成的 mp4 文件正常。

视频输入编码封装 MP4 同步模式

Sample 描述

Sample 名称sample_virvi2venc2Sync
功能概述mpi_vi采集图像,通过同步接口AW_MPI_VENC_SendFrameSync传输给mpi_venc进行编码。到达编码帧数后,分别停止运行并销毁,同时保存裸码流视频文件。
组件依赖mpi_vi
mpp_venc
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/uncommonly_samples/sample_virvi2vencSync
输入文件
输出文件/mnt/extsd/test.raw

参数配置

auto_test_count:指定自动测试次数
encoder_count:指定每次测试编码帧数
dev_num:指定VI Dev设备节点
src_width:指定camera采集的图像宽度
src_height:指定camera采集的图像高度
src_frame_rate:指定camera采集图像的帧率
dest_encoder_type:指定编码格式
dest_width:指定编码后图像的宽度
dest_height:指定编码后图像的高度
dest_frame_rate:指定编码帧率
dest_bit_rate:指定编码码率
dest_pic_format:指定编码后图像的格式
output_file_path:指定编码后视频文件的路径

测试通路

image-20250222103003399

测试指令

./sample_virvi2vencSync -path sample_virvi2vencSync.conf

退出测试

测试达到设定的时间后自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 使用VLC 软件播放生成的raw文件正常。

多路编码功能

Sample 描述

Sample 名称sample_multi_vi2venc2muxer
功能概述最多允许4路编码加1路jpeg拍照。每个编码通道都可以选择vipp,以及timelapse模式等。
默认的配置如下:
VIPP0->venc0->muxerGrp0:bufferNum=5,采集分辨率1920x1080,格式LBC2.5,h264编码帧率30,码率1Mbit/s,threshSize:wh/10, 普通NormalP编码,vbv缓存1秒。
VIPP1->venc1->muxerGrp1: bufferNum=5,采集分辨率640x480,格式NV21,h264编码帧率30,码率500Kbit/s,threshSize:w
h/10, 普通NormalP编码,vbv缓存1秒。
VIPP1->venc2->muxerGrp2: h264编码帧率30,码率500Kbit/s,threshSize:wh/10,普通NormalP编码,vbv缓存1秒,timelapse = 200ms。
VIPP1->venc3->muxerGrp3: h264编码帧率30,码率500Kbit/s,threshSize:w
h/10,普通NormalP编码,vbv缓存1秒,timelapse = 1000ms。
VIPP0->venc_jpeg:每隔30秒拍照一张。
组件依赖mpp_vi
mpp_venc
mpp_muxer
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_multi_vi2venc2muxer
输入文件
输出文件/mnt/extsd/1080p_1.mp4
/mnt/extsd/1080p_2.mp4
/mnt/extsd/1080p_3.mp4
/mnt/extsd/1080p_4.mp4
/mnt/extsd/360p_1.mp4
/mnt/extsd/360p_2.mp4
/mnt/extsd/360p_3.mp4
/mnt/extsd/360p_4.mp4
/mnt/extsd/timelapse_first.mp4
/mnt/extsd/timelapse_second.mp4
/mnt/extsd/1080p_1.jpeg
/mnt/extsd/1080p_2.jpeg
/mnt/extsd/1080p_3.jpeg

参数配置

vipp0:第1条vpp通路的vipp设备号。
vipp0_format:图像采集格式。
vipp0_capture_width:图像采集宽度。
vipp0_capture_height:图像采集高度。
vipp0_framerate:图像采集帧率,单位: fps。

vipp1:第2条vpp通路的vipp设备号。
vipp1_format:图像采集格式。
vipp1_capture_width:图像采集宽度。
vipp1_capture_height:图像采集高度。
vipp1_framerate:图像采集帧率,单位: fps。

主码流
videoA_vipp:视频编码通路连接的vipp设备号。
videoA_file:录制的视频文件路径。
videoA_file_cnt:循环录制允许的最大文件数目,超过就开始删除最早的文件。
videoA_framerate:编码目标帧率,单位: fps。
videoA_bitrate:编码码率,单位: bps。
videoA_width;编码输出宽度。
videoA_height:编码输出高度。
videoA_encoder:编码格式。
videoA_rc_mode;码率模式,0:CBR 1:VBR。
videoA_duration:文件时长。
videoA_timelapse:timelapse模式,-1:禁止timelapse; 0:慢摄影; >0:timelapse模式, 数值为采集帧的帧间隔,单位us。

子码流
videoB_vipp:视频编码通路连接的vipp设备号。
videoB_file:录制的视频文件路径。
videoB_file_cnt:循环录制允许的最大文件数目,超过就开始删除最早的文件。
videoB_framerate:编码目标帧率,单位: fps。
videoB_bitrate:编码码率,单位: bps。
videoB_width;编码输出宽度。
videoB_height:编码输出高度。
videoB_encoder:编码格式。
videoB_rc_mode;码率模式,0:CBR 1:VBR。
videoB_duration:文件时长。
videoB_timelapse:timelapse模式,-1:禁止timelapse; 0:慢摄影; >0:timelapse模式, 数值为采集帧的帧间隔,单位us。

缩时录影1
videoC_vipp:视频编码通路连接的vipp设备号。
videoC_file:录制的视频文件路径。
videoC_file_cnt:循环录制允许的最大文件数目,超过就开始删除最早的文件。
videoC_framerate:编码目标帧率,单位: fps。
videoC_bitrate:编码码率,单位: bps。
videoC_width;编码输出宽度。
videoC_height:编码输出高度。
videoC_encoder:编码格式。
videoC_rc_mode;码率模式,0:CBR 1:VBR。
videoC_duration:文件时长。
videoC_timelapse:timelapse模式,-1:禁止timelapse; 0:慢摄影; >0:timelapse模式, 数值为采集帧的帧间隔,单位us。

缩时录影2
videoD_vipp:视频编码通路连接的vipp设备号。
videoD_file:录制的视频文件路径。
videoD_file_cnt:循环录制允许的最大文件数目,超过就开始删除最早的文件。
videoD_framerate:编码目标帧率,单位: fps。
videoD_bitrate:编码码率,单位: bps。
videoD_width;编码输出宽度。
videoD_height:编码输出高度。
videoD_encoder:编码格式。
videoD_rc_mode;码率模式,0:CBR 1:VBR。
videoD_duration:文件时长。
videoD_timelapse:timelapse模式,-1:禁止timelapse; 0:慢摄影; >0:timelapse模式, 数值为采集帧的帧间隔,单位us。

JPEG拍照
videoE_vipp: 拍照通路连接的vipp设备号。
videoE_file_jpeg: 拍照的图片路径。
videoE_file_jpeg_cnt: 拍照的图片张数。
videoE_width:编码输出宽度。
videoE_height:编码输出高度。
videoE_encoder:编码格式。
videoE_photo_interval:拍照时间间隔,单位: s。

test_duration:测试时间,单位: s。0表示无限时长。

测试通路

image-20250222103503513

测试指令

./sample_multi_vi2venc2muxer -path ./sample_multi_vi2venc2muxer.conf

退出测试

到达设定的测试时长后会自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 使用VLC 软件播放生成的mp4文件正常。

视频编码后 RTSP 传输

Sample 描述

Sample 名称sample_rtsp
功能概述演示视频编码后的rtsp传输的场景。
组件依赖mpp_vi
mpp_venc
mpp_system_rtsp
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_rtsp
输入文件
输出文件AW_VirviEncoder.H264

参数配置

主码流
main_vipp: 指定vipp设备号,默认0,表示vipp0。
main_src_width: 指定原始视频的宽度。
main_src_height: 指定原始视频的高度。
main_pixel_format: 指定像素格式(YUV类型: nv21(yvu420sp), yu12(yuv420p), yv12, nv12。LBC压缩类型: aw_lbc_2_0x, aw_lbc_2_5x, aw_lbc_1_5x, aw_lbc_1_0x)。
main_wdr_enable: 指定是否开启WDR,默认0,表示不开WDR。
main_vi_buf_num: 指定VI的buffer个数,仅对离线编码有效。
main_src_frame_rate: 指定vipp采集的帧率,单位: fps。
main_viChn: 指定vi虚通道号,默认0,表示vi ch0。配置为-1表示不测试主码流。
main_venc_chn: 指定ve通道号,默认0,表示ve ch0。配置为-1表示不测试主码流。
main_encode_type: 指定编码格式(H.264)。
main_encode_width: 指定生成的裸码流视频的宽度。
main_encode_height: 指定生成的裸码流视频的高度。
main_encode_frame_rate: 指定编码视频的帧率,单位: fps。
main_encode_bitrate: 指定编码的码率,单位: bps。
main_file_path: 指定编码裸流文件的存放路径。若不指定,则不会保存到文件。
main_online_en: 指定是否开启在线编码,默认0,表示不开启在线编码,即当前为离线编码。
main_online_share_buf_num: 指定在线编码的共享buffer个数(1或2),默认2,表示2个buffer。注意该配置仅当配置在线模式时才生效。
main_encpp_disable: 指定是否禁用encpp新通路,默认0,表示不禁用。

子码流
sub_vipp: 指定vipp设备号,默认1,表示vipp4。
sub_vipp_crop_en: 指定是否开启vipp crop功能。默认1,表示开启。
sub_vipp_crop_rect_x: 指定vipp crop的x坐标。
sub_vipp_crop_rect_y: 指定vipp crop的y坐标。
sub_vipp_crop_rect_w: 指定vipp crop的宽度。
sub_vipp_crop_rect_h: 指定vipp crop的高度。
sub_src_width: 指定原始视频的宽度。
sub_src_height: 指定原始视频的高度。
sub_pixel_format: 指定像素格式(YUV类型: nv21(yvu420sp), yu12(yuv420p), yv12, nv12。LBC压缩类型: aw_lbc_2_0x, aw_lbc_2_5x, aw_lbc_1_5x, aw_lbc_1_0x)。
sub_wdr_enable: 指定是否开启WDR,默认0,表示不开WDR。
sub_vi_buf_num: 指定VI的buffer个数,仅对离线编码有效。
sub_src_frame_rate: 指定vipp采集的帧率,单位: fps。

sub_viChn: 指定vi虚通道号,默认0,表示vi ch0。配置为-1表示不测试子码流。
sub_venc_chn: 指定ve通道号,默认1,表示ve ch1。配置为-1表示不测试子码流。
sub_encode_type: 指定编码格式(H.264)。
sub_encode_width: 指定生成的裸码流视频的宽度。
sub_encode_height: 指定生成的裸码流视频的高度。
sub_encode_frame_rate: 指定编码视频的帧率,单位: fps。
sub_encode_bitrate: 指定编码的码率,单位: bps。
sub_file_path: 指定编码裸流文件的存放路径。若不指定,则不会保存到文件。
sub_encpp_disable: 指定是否禁用encpp新通路,默认0,表示不禁用。

缩时录影
lapse_viChn: 指定vi虚通道号,默认1,表示vi ch1。配置为-1表示不测试子码流。
lapse_venc_chn: 指定ve通道号,默认2,表示ve ch2。配置为-1表示不测试子码流。
lapse_encode_type: 指定编码格式(H.264)。
lapse_encode_width: 指定生成的裸码流视频的宽度。
lapse_encode_height: 指定生成的裸码流视频的高度。
lapse_encode_frame_rate: 指定编码视频的帧率,单位: fps。
lapse_encode_bitrate: 指定编码的码率,单位: bps。
lapse_file_path: 指定编码裸流文件的存放路径。若不指定,则不会保存到文件。
lapse_time: 指定缩时录影的帧间隔时间,单位: ms。
lapse_encpp_disable: 指定是否禁用encpp新通路,默认0,表示不禁用。

ISP2VE联动机制参数配置
isp_ve_linkage_enable: 指定是否开启ISP2VE联动机制。默认0,表示不开启。
isp_ve_linkage_test_stream: 指定ISP2VE联动机制应用到哪一路,默认0,表示主码流。(0:main stream, 1:sub stream, 2:lapse stream)
ve2isp_param_update_interval: 指定ISP2VE联动参数更新的时间间隔,单位: ms。

rtsp_net_type: 指定RTSP网络类型。默认1,表示以太网。(0: "lo", 1: "eth0", 2: "br0", 3: "wlan0")

test_duration: 测试时间,单位: s。0表示无限时长。

测试通路

image-20250222104313177

测试指令

./sample_rtsp -path ./sample_rtsp.conf

退出测试

按“ctrl + c”退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 通过 VLC 可以正常播放 rtsp 链接。

同编同解功能

Sample 描述

Sample 名称sample_CodecParallel
功能概述演示同编同解。
组件依赖mpp_vi
mpp_venc
mpp_demuxer
mpp_vdec
mpp_muxer
mpp_hw_display
mpp_vo
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_CodecParallel
输入文件/mnt/extsd/test.mp4
输出文件/mnt/extsd/1080p.mp4

参数配置

# 通用配置
test_duration:指定测试时间

# 录制配置
record_vipp_id:指定VIPP设备号
record_vipp_format:指定camera采集的图像格式
record_vipp_capture_width:指定camera采集的图像宽度
record_vipp_capture_height:指定camera采集的图像高度
record_vipp_frame_rate:指定camera采集的帧率
record_dest_file:指定录制文件的路径
record_video_file_format:指定视频封装格式
record_video_frame_rate:指定视频编码的帧率
record_video_bitrate:指定视频编码的码率
record_video_width:指定视频编码的图像宽度
record_video_heigth:指定视频编码的图像高度
record_video_encoder_type:指定视频编码格式
record_video_rc_mode:指定视频编码的码率控制模式
record_video_duration:指定视频编码的图像宽度

# 预览配置
preview_vipp_id:指定VIPP设备号
preview_vipp_format:指定camera采集的图像格式
preview_vipp_capture_width:指定camera采集的图像宽度
preview_vipp_capture_height:指定camera采集的图像高度
preview_vipp_frame_rate:指定camera采集的帧率
preview_vo_dev_id:指定VO设备号
preview_vo_display_x:指定输出图像的X 轴位置
preview_vo_display_y:指定输出图像的Y 轴位置
preview_vo_display_width:指定输出图像宽度
preview_vo_display_height:指定输出图像高度
preview_vo_layer_num:指定图像显示的图层
preview_vo_disp_type:指定显示设备(hdmi, lcd, cvbs)

# 播放配置
play_src_file:指定原始视频文件的路径
play_vo_dev_id:指定VO设备号
play_vo_display_x:指定输出图像的X 轴位置
play_vo_display_y:指定输出图像的Y 轴位置
play_vo_display_width:指定输出图像宽度
play_vo_display_height:指定输出图像高度
play_vo_layer_num:指定图像显示的图层
play_vo_disp_type:指定显示设备(hdmi, lcd, cvbs)

测试通路

image-20250222105602169

测试指令

./sample_CodecParallel -path ./sample_CodecParallel.conf

退出测试

1. 达到设定的测试时间后,自动退出测试。
2. 播放完test.mp4 文件后,自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. LCD屏幕一半显示预览画面,一半显示播放画面,同时会生成编码文件1080p.mp4。

视频解码功能

Sample 描述

Sample 名称sample_vdec
功能概述连续解码jpg格式图片或者h264裸码流,然后保存为yuv格式文件。
组件依赖mpp_vdec
Sample 路径
输入文件/mnt/extsd/vbs1.h264
/mnt/extsd/vbs1.len
输出文件/mnt/extsd/h264.yuv

参数配置

提示

V821仅支持jpeg解码

vdecoder_format: 指定解码格式,jpeg或者h264。
yuv_file_path: 指定解码后生成的yuv文件的路径。
jpeg_file_path: 指定原jpg图片路径,该文件必须为jpeg格式的文件。
h264_vbs_path: 指定原264裸码流路径。
h264_len_path: 指定原264裸码流祯大小描述文件路径。
h265_vbs_path: 指定原265裸码流路径。
h265_len_path: 指定原265裸码流祯大小描述文件路径。

测试通路

image-20250222112042933

测试指令

./sample_vdec -path ./sample_vdec.conf

退出测试

文件解码完后会自动结束测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 使用YUView 软件查看生成的YUV文件正常。

在线编码功能

Sample 描述

Sample 名称sample_OnlineVenc
功能概述该sample演示IPC在线编码使用场景:主码流在线编码、子码流离线编码。
针对主码流和子码流分别创建mpi_vi和mpi_venc,将它们绑定,再分别启动。mpi_vi采集图像,直接传输给mpi_venc进行编码。
组件依赖mpi_vi
mpp_venc
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_OnlineVenc
输入文件
输出文件/mnt/extsd/mainStream.raw
/mnt/extsd/subStream.raw
/mnt/extsd/lapseStream.raw

参数配置

主码流
main_vipp: 指定vipp设备号,默认0,表示vipp0。
main_src_width: 指定原始视频的宽度。
main_src_height: 指定原始视频的高度。
main_pixel_format: 指定像素格式(YUV类型: nv21(yvu420sp), yu12(yuv420p), yv12, nv12。LBC压缩类型: aw_lbc_2_0x, aw_lbc_2_5x, aw_lbc_1_5x, aw_lbc_1_0x)。
main_wdr_enable: 指定是否开启WDR,默认0,表示不开WDR。
main_vi_buf_num: 指定VI的buffer个数,仅对离线编码有效。
main_src_frame_rate: 指定vipp采集的帧率,单位: fps。
main_viChn: 指定vi虚通道号,默认0,表示vi ch0。配置为-1表示不测试主码流。
main_venc_chn: 指定ve通道号,默认0,表示ve ch0。配置为-1表示不测试主码流。
main_encode_type: 指定编码格式(H.264)。
main_encode_width: 指定生成的裸码流视频的宽度。
main_encode_height: 指定生成的裸码流视频的高度。
main_encode_frame_rate: 指定编码视频的帧率,单位: fps。
main_encode_bitrate: 指定编码的码率,单位: bps。
main_file_path: 指定编码裸流文件的存放路径。若不指定,则不会保存到文件。
main_online_en: 指定是否开启在线编码,默认0,表示不开启在线编码,即当前为离线编码。
main_online_share_buf_num: 指定在线编码的共享buffer个数(1或2),默认2,表示2个buffer。注意该配置仅当配置在线模式时才生效。
main_encpp_disable: 指定是否禁用encpp新通路,默认0,表示不禁用。

子码流
sub_vipp: 指定vipp设备号,默认4,表示vipp4。
sub_vipp_crop_en: 指定是否开启vipp crop功能。默认1,表示开启。
sub_vipp_crop_rect_x: 指定vipp crop的x坐标。
sub_vipp_crop_rect_y: 指定vipp crop的y坐标。
sub_vipp_crop_rect_w: 指定vipp crop的宽度。
sub_vipp_crop_rect_h: 指定vipp crop的高度。
sub_src_width: 指定原始视频的宽度。
sub_src_height: 指定原始视频的高度。
sub_pixel_format: 指定像素格式(YUV类型: nv21(yvu420sp), yu12(yuv420p), yv12, nv12。LBC压缩类型: aw_lbc_2_0x, aw_lbc_2_5x, aw_lbc_1_5x, aw_lbc_1_0x)。
sub_wdr_enable: 指定是否开启WDR,默认0,表示不开WDR。
sub_vi_buf_num: 指定VI的buffer个数,仅对离线编码有效。
sub_src_frame_rate: 指定vipp采集的帧率,单位: fps。

sub_viChn: 指定vi虚通道号,默认0,表示vi ch0。配置为-1表示不测试子码流。
sub_venc_chn: 指定ve通道号,默认1,表示ve ch1。配置为-1表示不测试子码流。
sub_encode_type: 指定编码格式(H.264)。
sub_encode_width: 指定生成的裸码流视频的宽度。
sub_encode_height: 指定生成的裸码流视频的高度。
sub_encode_frame_rate: 指定编码视频的帧率,单位: fps。
sub_encode_bitrate: 指定编码的码率,单位: bps。
sub_file_path: 指定编码裸流文件的存放路径。若不指定,则不会保存到文件。
sub_encpp_disable: 指定是否禁用encpp新通路,默认0,表示不禁用。

缩时录影
lapse_viChn: 指定vi虚通道号,默认1,表示vi ch1。配置为-1表示不测试子码流。
lapse_venc_chn: 指定ve通道号,默认2,表示ve ch2。配置为-1表示不测试子码流。
lapse_encode_type: 指定编码格式(H.264)。
lapse_encode_width: 指定生成的裸码流视频的宽度。
lapse_encode_height: 指定生成的裸码流视频的高度。
lapse_encode_frame_rate: 指定编码视频的帧率,单位: fps。
lapse_encode_bitrate: 指定编码的码率,单位: bps。
lapse_file_path: 指定编码裸流文件的存放路径。若不指定,则不会保存到文件。
lapse_time: 指定缩时录影的帧间隔时间,单位: ms。
lapse_encpp_disable: 指定是否禁用encpp新通路,默认0,表示不禁用。

ISP2VE联动机制参数配置
isp_ve_linkage_enable: 指定是否开启ISP2VE联动机制。默认0,表示不开启。
isp_ve_linkage_test_stream: 指定ISP2VE联动机制应用到哪一路,默认0,表示主码流。(0:main stream, 1:sub stream, 2:lapse stream)
ve2isp_param_update_interval: 指定ISP2VE联动参数更新的时间间隔,单位: ms。

wb_yuv_enable: 指定是否开启存储回写yuv功能。默认0,表示不开启。
wb_yuv_buf_num: 指定存储回写yuv的buffer个数,单位: 一帧图像的大小。
wb_yuv_start_index: 指定存储回写yuv从第几帧开始保存。
wb_yuv_total_cnt: 指定存储回写yuv一共保存多少帧。
wb_yuv_stream_channel: 指定存储回写yuv的编码通道号,默认0,表示主码流。(0:main stream, 1:sub stream, 2:sub lapse stream)
wb_yuv_file_path: 指定存储回写yuv的文件路径。

test_duration: 测试时间,单位: s。0表示无限时长。

测试通路

image-20250222113506849

测试指令

./sample_OnlineVenc -path ./sample_OnlineVenc.conf

退出测试

达到设定的测试时间后,自动退出测试。

测试结果

1.测试程序运行正常,测试过程没有异常打印。
2.使用PC软件VLC播放测试生成的视频文件正常。
3.使用MediaInfo软件检查编码参数符合预期。
4.观察实际帧率打印,主码流和子码流均符合预期。

单拍和连拍功能

Sample 描述

Sample 名称sample_takePicture
功能概述演示拍照功能。支持通过配置开启单拍和连拍测试。
组件依赖mpp_vi
mpp_venc
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_takePicture
输入文件
输出文件照片文件,单拍:图片编号pic[n][0].jpg,连拍:图片编号pic[0][n].jpg

参数配置

dev_num: 指定VI Dev设备节点。
src_width: 指定camera采集的图像宽度。
src_height: 指定camera采集的图像高度。
frame_rate: 指定camera采集图像的帧率。
src_format: 指定camera采集图像像素格式。
color_space:指定颜色空间类型。
drop_frm_num:指定VIPP丢帧的帧数。

take_picture_mode:拍照模式(0:不拍,1:单拍,2:连拍)。
take_picture_num:拍照的图片张数。
take_picture_interval:拍照时间间隔,单位: ms。
jpeg_width: jpeg拍照图片的宽度。
jpeg_height: jpeg拍照图片的高度。
store_dir: jpeg拍照文件的存储路径(单拍:图片编号pic[n][0],连拍:图片编号pic[0][n])。

测试通路

image-20250222113651671

测试指令

./sample_takePicture -path ./sample_takePicture.conf

退出测试

达到设定的测试时间后,自动退出测试。

测试结果

1.测试程序运行正常,测试过程没有异常打印。
2.使用PC图片查看工具检查拍照图片显示正常。
单拍模式下,拍照后,图片的编号是:pic[0][0]、pic[1][0]、pic[1][0] ... pic[n][0]。
3.使用MediaInfo软件检查编码参数符合预期。
检查拍照的图片格式和分辨率:
格式: JPEG
宽度: 1920 像素
高度: 1080 像素

多路录制编码封装或者预览显示

Sample 描述

Sample 名称sample_recorder
功能概述支持多路录制编码封装或者预览显示(对于V821只有2个VIPP,一个SERSON最大支持2路vipp录制)。
每路创建一个vipp和虚通道,根据参数的不同与编码器绑定测试录制编码,与VO绑定测试预览显示。
组件依赖mpp_vi
mpp_venc
mpp_vo
mpp_muxer
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_recorder
输入文件
输出文件recorder1_1080p@20.mp4
recorder2_1080p@20.mp4
recorder3_1080p@20.mp4
recorder4_1080p@20.mp4

参数配置

最多支持2路录像和预览,以下是第1路的参数配置,其他路与其类似。
recorder1_vi_dev: VIPP设备号。
recorder1_isp_dev: ISP设备号。
recorder1_cap_width: 录制分辨率宽度。
recorder1_cap_height: 录制分辨率高度。
recorder1_cap_frmrate: 录制帧率。
recorder1_cap_format: 录制视频格式。
recorder1_vi_bufnum: 配置VIPP设备buffer数量。
recorder1_enable_WDR: 是否启用WDR模式(0:不启用 1:启用)。
recorder1_enc_online: 是否启用在线编码模式(0:不启用 1:启用)。
recorder1_enc_online_share_bufbum: 在线编码共享buffer个数。
recorder1_enc_type: 编码器类型。
recorder1_enc_width: 编码视频分辨率宽度。
recorder1_enc_height: 编码视频分辨率高度。
recorder1_enc_frmrate: 编码视频帧率。
recorder1_enc_bitrate: 编码视频码率。
recorder1_enc_rcmode: 编码码率控制模式。
recorder1_disp_x: 显示区域X坐标。
recorder1_disp_y: 显示区域y坐标。
recorder1_disp_width: 显示区域宽度。
recorder1_disp_height: 显示区域高度。
recorder1_disp_dev: 显示设备类型。
recorder1_rec_duration: 视频文件录制时长。
recorder1_rec_file_cnt: 视频文件最大分片数。
recorder1_rec_file: 视频文件保存路径。

参数配置说明:
1. 支持录制格式:nv21、yv12、nv12、yu12、aw_fbc、aw_lbc_2_0x、aw_lbc_2_5x、aw_lbc_1_5x、aw_lbc_1_0x
2. 支持编码格式:H.264、MJPEG
3. 支持封装格式:MP4、TS
4. 特殊参数配置
- 将recordern_vi_dev设置为 -1 ,表示不启用这组配置测试。
- 将recordern_enc_width 或者 recordern_enc_height设置为 0,表示不测试这组配置的视频编码与封装。
- 将recordern_disp_width 或 recordern_disp_width设置为0,表示不测试这组配置的预览显示。
- 视频编码与预览显示不可在同一组配置中同时使用。

测试通路

V821只有2个VIPP,一个 SERSON 最大支持 2 路 VIPP 录制,图示中只支持VIPP0,VIPP1

image-20250222113916444

测试指令

./sample_recorder -path ./sample_recorder.conf

退出测试

达到设定的测试时间后,自动退出测试。

测试结果

1.测试程序运行正常,测试过程没有异常打印。
2.使用PC软件VLC播放测试生成的视频文件正常。
3.使用MediaInfo软件检查编码参数符合预期。

动态配置编码格式帧率码率

Sample 描述

Sample 名称sample_vencRecreate
功能概述演示动态配置编码格式、帧率、码率等功能。
该sample测试mpi_vi和mpi_venc组件的绑定组合。创建mpi_vi和mpi_venc,将它们绑定,再分别启动。
mpi_vi采集图像,直接传输给mpi_venc进行编码。
组件依赖mpi_vi
mpi_venc
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/uncommonly_samples/sample_vencRecreate
输入文件
输出文件/mnt/extsd/test.raw

参数配置

online_en: 指定是否开启在线编码,默认0,表示不开启在线编码,即当前为离线编码。
online_share_buf_num: 指定在线编码的共享buffer个数(1或2),默认2,表示2个buffer。注意该配置仅当配置在线模式时才生效。

vipp_id: 指定vipp设备号,默认0,表示vipp0。
wdr_en: 指定是否开启WDR,默认0,表示不开WDR。

drop_frm_num: 指定丢帧个数,对于离线编码是vipp丢帧,对于在线编码是ve编码前丢帧。

src_width: 指定原始视频的宽度。
src_height: 指定原始视频的高度。

vi_buffer_num: 指定CSI的buffer个数,仅对离线编码有效。
saturation_change: 指定饱和度改变的值,默认0,表示不调整。取值范围[-256, 512]。

src_pixfmt: 指定像素格式(YUV类型: nv21(yvu420sp), yu12(yuv420p), yv12, nv12。LBC压缩类型: aw_lbc_2_0x, aw_lbc_2_5x, aw_lbc_1_5x, aw_lbc_1_0x)。
color_space: 指定颜色空间(jpeg, rec709, rec709_part_range)。

venc_ch_id: 指定编码通道,默认0,表示venc ch0。

video_dst_file: 指定编码文件的存放路径。
video_framerate: 指定帧率,单位: fps。
video_bitrate: 指定编码的码率,单位: bps。

video_width: 指定生成的裸码流视频的宽度。
video_height: 指定生成的裸码流视频的高度。

video_encoder: 指定编码格式(H.264、MJPEG)
profile: 指定编码质量,对于H264(V821只支持H264),建议配置High(2),对于H265,建议配置Main(0)。
ve_freq: 指定VE的频率,默认0,表示300MHz,单位: MHz。

product_mode: 指定产品类型(0:Normal, 1:IPC)。
sensor_type: 指定sensor类型(0:DisWdr, 1:EnWdr)。
key_frame_interval: 指定I帧间隔。

enable_gdc: 指定是否开启GDC功能,默认0,表示不开GDC。
rc_mode: 指定码率控制模式(0:CBR, 1:VBR, 2:FIXQP, 3:QPMAP)。

VBR、CBR模式,编码参数
init_qp: 指定初始QP值,取值范围(0, 51)。
min_i_qp: 指定I帧最小QP值,取值范围(0, 51)。FIXQP模式时,取其值为i_qp。
max_i_qp: 指定I帧最大QP值,取值范围(0, 51)。
min_p_qp: 指定P帧最小QP值,取值范围(0, 51)。FIXQP模式时,取其值为p_qp。
max_p_qp: 指定P帧最大QP值,取值范围(0, 51)。
mb_qp_limit_en: 指定是否开启mb qp限制,默认0,表示不开启。

VBR模式,编码参数
moving_th:指定mb16x16中MAD的阈值,取值范围[0, 31]。
quality: 指定静态P帧的位系数,取值范围[1, 20]。
p_bits_coef: 指定移动P帧的位系数,取值范围[1, 50]。
i_bits_coef: 指定I帧的位系数,取值范围[1, 20]。

gop_mode: 指定GOP模式(0:NormalP, 1:DualP, 2:SmartP)。
gop_size: 指定GOP大小,当前只针对H265有效,取值范围[1, 63]。

高级跳帧参数
AdvancedRef_Base: 设置该值大于0表示开启高级跳帧功能,等于0表示关闭高级跳帧功能。
AdvancedRef_Enhance: 设置Enhance为5。
AdvancedRef_RefBaseEn: 设置该值为1表示开启参考帧,等于0表示关闭参考帧。

enable_fast_enc: 指定是否开启快速编码,默认0,表示不开启。

encode_rotate: 指定编码旋转角度(0, 90, 180, 270),顺时针方向。
mirror: 指定编码镜像是否开启,默认0,表示不开启。取值范围[0, 1]。
color2grey: 指定是否开启彩转灰功能,默认"no",表示不开启。取值范围[“no”, "yes"]。

2D降噪参数配置
2dnr_en: 编码器2DNR使能,默认1,表示开启。取值范围[0, 1]。
2dnr_strength_y: 亮度降噪强度系数。该值越大,滤波强度越高。默认127,取值范围[0, 255]。
2dnr_strength_c: 色度降噪强度系数。该值越大,滤波强度越高。默认127,取值范围[0, 255]。
2dnr_threshold_y: 亮度邻域像素降噪开关阈值。该值越大,越容易触发2d滤波。默认7,取值范围[0, 15]。
2dnr_threshold_c: 色度邻域像素降噪开关阈值。该值越大,越容易触发2d滤波。默认7,取值范围[0, 15]。

3D降噪参数配置
3dnr_en: 编码器3DNR使能,默认1,表示开启。取值范围[0, 1]。
3dnr_pix_level_en: 3d滤波权重系数自适应修正开关。默认0,表示不开启。取值范围[0, 1]。
3dnr_smooth_en: 像素级3x3平滑滤波使能。默认1,表示开启。取值范围[0, 1]。
3dnr_pix_diff_th: 仅当3d_adjust_pix_level_enable为1时生效,自适应修正幅度阈值。该值越大,滤波强度越高。默认6,取值范围[0, 31]。
3dnr_max_mv_th: 源图像素块运动矢量最大阈值,单个像素块仅当其水平和垂直MV皆小于该阈值,才会进行3d滤波。该值越大,越容易触发3d滤波。默认2,取值范围[0, 63]。
3dnr_max_mad_th: 源图与参考图之间像素块的MAD最大阈值,单个像素块仅当其MAD值小于该阈值,才会进行3d滤波。该值越大,越容易触发3d滤波。默认11,取值范围[0, 63]。
3dnr_min_coef: 3d滤波权重系数的最小阈值。该值越小,自适应3d滤波的强度上限越高。默认14,取值范围[0, 3dnr_max_coef]。
3dnr_max_coef: 3d滤波权重系数的最大阈值。该值越大,自适应3d滤波的强度下限越低。默认16,取值范围[3dnr_min_coef, 16]。

ROI测试参数配置
roi_num: 指定ROI的个数,默认0,表示不开启ROI测试。取值范围[0, 8]。
roi_qp: 指定ROI区域的QP值,默认50,表示最差质量。取值范围(0, 51)。
roi_BgFrameRateEnable: 指定是否开启非ROI区域低帧率编码,默认0,表示不开启。
roi_BgFrameRateAttenuation: 指定非ROI区域的帧率衰减比例,默认3,表示非ROI区域的帧率是正常帧率的1/3。

IntraRefresh_BlockNum: 指定P帧帧内刷新的block个数,默认0,表示不开启P帧帧内刷新功能。
orl_num: 指定ORL(Object Rectangle Label)的个数,取值范围[0,16]。

配置vbv buffer大小和vbv buffer阈值大小
vbvBufferSize: 指定vbv buffer大小,默认0,表示由mpp middleware自行计算并设置给编码器,大于0,表示由app设置。
vbvThreshSize: 指定vbv buffer阈值大小,默认0,表示由mpp middleware自行计算并设置给编码器,大于0,表示由app设置。

裁剪编码参数设置
crop_en: 指定是否开启裁剪编码,默认0,表示不开启。
crop_rect_x: 指定裁剪区域的x坐标。
crop_rect_y: 指定裁剪区域的y坐标。
crop_rect_w: 指定裁剪区域的宽度。
crop_rect_h: 指定裁剪区域的高度。

vui_timing_info_present_flag: 指定是否添加VUI信息,默认0,表示不添加。

normal_test_duration: 指定正常测试时间,单位: s。

编码recreate参数配置
venc_recreate_enable: 指定是否开启编码recreate,默认1,表示开启。
dynamic_video_encoder: 指定编码格式(H.264)。
dynamic_video_framerate: 指定帧率,单位: fps。
dynamic_video_bitrate: 指定编码的码率,单位: bps。
dynamic_video_width: 指定生成的裸码流视频的宽度。
dynamic_video_height: 指定生成的裸码流视频的高度。
dynamic_key_frame_interval: 指定I帧间隔。
dynamic_rc_mode: 指定码率控制模式(0:CBR, 1:VBR)。

venc_recreate_test_duration: 指定recreate测试时间,单位: s。

测试通路

image-20250222114513959

测试指令

./sample_vencRecreate -path ./sample_vencRecreate.conf

退出测试

测试达到设定的时间后自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 使用VLC 软件播放生成的raw文件正常。

音视频的采集、编码、封装

Sample 描述

Sample 名称
功能概述sample_avmuxer用来演示音视频的采集、编码、封装流程,并支持长期老化验证音视频同步。
组件依赖mpp_muxer
mpp_ai
mpp_aenc
mpp_vi
mpp_venc
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_avmuxer
输入文件
输出文件/mnt/extsd/test.mp4

参数配置

#图像
src_width: 指定camera采集的图像宽度。
src_height: 指定camera采集的图像高度。
video_dst_file : 生成的路径文件
src_pixfmt:指定图像格式

#音频
pcm_chn_cnt:开启音频采集
pcm_channel_cnt:指定通道数。
pcm_bit_width:指定位宽,bit_width须为16。
bitRate 指定音频编码率

测试通路

image-20250301154336324

测试指令

./sample_avmuxer -path /mnt/extsd/sample_avmuxer.conf

退出测试

1. 达到设定的测试时间后,自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 生成test.mp4。

移动侦测功能

Sample 描述

Sample 名称sample_MotionDetect
功能概述该sample演示视频编码库的移动侦测功能的使用。
创建mpi_vi和mpi_venc,将它们绑定,再分别启动。mpi_vi采集图像,直接传输给mpi_venc进行编码。
编码过程中获取移动侦测信息,可保存裸码流视频文件。支持手动按ctrl-c,终止测试。
注意:视频编码驱动只支持在VBR, IPC-MODE模式下做移动侦测。
组件依赖mpp_vi
mpp_venc
Sample 路径platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_MotionDetect
输入文件
输出文件/mnt/extsd/md.h264

参数配置

online_en: 指定是否开启在线编码,默认0,表示不开启在线编码,即当前为离线编码。
online_share_buf_num: 指定在线编码的共享buffer个数(1或2),默认2,表示2个buffer。注意该配置仅当配置在线模式时才生效。

encoder_count: 指定每次测试编码帧数。
dev_num: 指定VI Dev设备节点。
src_pic_format: 指定采集图像的格式。
src_width: 指定camera采集的图像宽度。
src_height: 指定camera采集的图像高度。
src_frame_rate: 指定camera采集图像的帧率。
dst_encoder_type: 指定编码格式。
dst_width: 指定编码后图像的宽度。
dst_height: 指定编码后图像的高度。
dst_frame_rate: 指定编码帧率。
dst_bit_rate: 指定编码码率。
output_file_path: 指定编码后视频文件的路径。

测试指令

./sample_MotionDetect -path ./sample_MotionDetect.conf

退出测试

达到设定的测试时间后,自动退出测试。

测试结果

1. 测试程序运行正常,测试过程没有异常打印。
2. 使用VLC 软件分析生成的raw文件正常。