三、示例程序使用指南
4 示例程序使用指南&功能演示
4.1 实时预览与录制 (evs_live_player)
4.1.1 功能说明
evs_live_player 是最基础的示例程序,提供两个核心功能:
- 实时预览:在屏幕上显示事件相机捕获的画面
- 数据录制:将事件数据保存为 RAW8 格式文件
4.1.2 使用前准备
确保:
- ✓ EVS 相机已正确连接
- ✓ 显示器已连接(用于预览)
4.1.3 使用说明
先进入到工程目录,赋予程序可执行权限后查看可用的传感器:
cd /app/cdev_demo/sample_evs/evs_mode_release/sample/01_evs_live_player/
chmod +x evs_live_player.RAW8
sudo ./evs_live_player -s
注意目前只适配了apx003c-4096x256-240fps-4line这组配置文件,这里选择索引40执行
执行后:
- 程序启动,打开相机
- 弹出预览窗口显示实时画面

如果需要进行录制,可以通过快捷键r切换录制开关,数据会写入到内存中,录制结束后写到SD卡中

录制结束以后,文件会自动命名并保存到当前目录。
注意
模块内部集成加密芯片,本程序只适用于 shimeta 的 evs 模块。
4.1.4 FAQ
这里解释一下为什么要先把数据写入到内存中:
由于RDKX5并没有集成EMMC存储,只配备了4/8G可选的DDR4内存,系统文件都存储在SD卡中,大部分的SD卡在非连续文件读写的时的速度都不高,加上SD卡的质量参差不齐,而EVS相机的一大特点就是高帧率,虽然数据量不大,但是耐不住帧率高,笔者了解到国产的EVS相机传感器帧率最大已经达到了64K!
我们再对使用的SD卡和板卡自带的DDR进行读写速度测试,笔者使用的SD卡测试结果如下:
SD卡写入测试(12MB/S):
dd if=/dev/zero of=/tmp/test_write bs=1M count=256 conv=fdatasyncSD卡读取测试(24MB/S):
fio --name=read_test --ioengine=sync --rw=read --bs=1M --size=256M --numjobs=1 --filename=/tmp/test_write
内存读写速度测试(写765MB/S ; 读 1.7GB/S)
写入测试:
dd if=/dev/zero of=/dev/shm/memtest bs=1M count=1024 conv=fdatasync读取测试:
dd if=/dev/shm/memtest of=/dev/null bs=1M count=1024
实测发现两者的速度差距快达到100倍了! 高帧率时开启录制,SD卡的读写速度就明显吃力了,把数据暂存到内存也是无奈之举。
4.2 格式转换工具
4.2.1 RAW8 转 EVT2 (raw8_to_evt2)
为什么需要转换?
虽然说RDKX5宣传有10T的算力,但这一块的算力主要集中于BPU,而我们解码主要使用CPU资源 经过实测,将原始mipi数据包进行解码并实时显示,CPU无法完成如此大算力的计算,大于120FPS时画面出现明显卡顿。 为了显示的实时性,我们只对每个mipi包第一个完整帧进行解码显示。录制时,剩下的原始数据直接保存到内存用于后续解码。 那为什么不对原始数据包直接进行分析,而是先转换成EVT2格式呢? 而EVT2 格式是Metavision SDK 标准格式,可以兼容我们的windows上位机软件和Ubuntu上的完整算法库,所有提供了保存的原始数据转换成EVT2格式的中间过程。
使用方法:
cd /app/cdev_demo/sample_evs/evs_mode_release/sample/02_raw8_to_evt2/
chmod +x raw8_to_evt2
# 转换后的文件直接生成在当前目录
./raw8_to_evt2 /userdata/hand_wave.RAW8
# 指定转换后的文件到指定目录
./raw8_to_evt2 /userdata/hand_wave.RAW8 /userdata/output.raw转换过程:

4.2.2 EVT2 转 CSV (evt2_to_csv)
为什么转换为 CSV?
CSV 是通用的表格格式,便于:
- 在 Excel 中查看和分析
- 使用 Python/MATLAB 进行数据处理
- 可视化工具绘图
CSV 文件格式:
x,y,polarity,timestamp
352,240,1,1234567890
120,180,0,1234567920
425,305,1,1234568100
...| 列名 | 含义 | 取值范围 |
|---|---|---|
| x | 横坐标 | 0-767 |
| y | 纵坐标 | 0-607 |
| polarity | 极性 | 0(变暗)或 1(变亮) |
| timestamp | 时间戳 | 微秒 |
使用方法:
cd /app/cdev_demo/sample_evs/evs_mode_release/sample/02_evt2_to_csv
chmod +x evt2_to_csv
# 转换后的文件直接生成在当前目录
./evt2_to_csv /userdata/hand_wave.raw
# 指定转换后的文件到指定目录
./evt2_to_csv /userdata/hand_wave.raw /userdata/events.csv
转换后的文本文件可以直接打开查看

注意,不要轻易打开长时间录制的转换文件,几百MB的纯txt文件,电脑不好的话大概率宕机了
4.3 录制文件回放 (evs_recode_player)
4.3.1 功能说明
evs_recode_player 用于回放录制的事件数据,支持变速播放(x1, x1/2, x1/8)
4.3.2 使用方法
cd /app/cdev_demo/sample_evs/evs_mode_release/sample/04_evs_recode_player
# 播放 EVT2 格式文件
./evs_recode_player /userdata/hand_wave.raw4.3.3 使用说明

画面循环播放,按快捷键1 正常倍速播放 ,2以1/2速度播放 , 3以1/8速度播放
