米尔-TI AM62x开发板除了可以用官方的CSI摄像头,还可以直接使用第三方的USB摄像头,我手头正好有几个个USB摄像头:
经过实测,可以很好的在米尔-TI AM62x开发板上使用。
这篇分享,就是在这块开发板上部署流媒体服务,通过USB摄像头实现监控功能。
一、软件准备
要在Linux上面部署流媒体服务,mjpg-streamer是最合适的。
首先,在应用开发环境中,进行 mjpg-streamer 跨平台编译,具体步骤如下:
git clone https://github.com/jacksonliam/mjpg-streamer
cd mjpg-streamer/mjpg-streamer-experimental
find -name "Makefile" -exec sed -i "s/CC = gcc/#CC = gcc/g" {} \;
grep -rn 'CC = gcc' *
make clean
make
file mjpg_streamer
# mjpg_streamer: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=48d2a902d1672913291a75a055d224d340d77649, for GNU/Linux 3.14.0, with debug_info, not stripped
上面代码步骤中,使用find+sed,来替换Makefile中的CC配置。
因为应用开发环境提供了CC变量,可以直接使用。
将最终编译出来的mjpg_streamer,部署到开发板上备用,具体如下:
ssh root@192.168.10.11 "mkdir ~/mjpeg_server/"
scp mjpg_streamer root@192.168.10.11:~/mjpeg_server/
scp *.so root@192.168.10.11:~/mjpeg_server/
最终,开发板上部署的文件如下:
二、摄像头信息获取
米尔官方的系统,提供了v4l2工具,可以直接使用。
1. 查看当前的摄像头设备:
v4l2-ctl --list-devices
可以看到,找到了USB接口的摄像头,对应的设备地址为 /dev/video0
2. 查看摄像头的支持的格式类型
v4l2-ctl --list-formats -d /dev/video0
3. 查看摄像头的具体参数:
v4l2-ctl -D -d /dev/video0
三、流媒体服务启用
前面安装好了mjpeg_server,现在可以启用测试了:
cd ~/mjpg_streamer
./mjpg_streamer -i "input_uvc.so -d /dev/video0 -n -r 640x480 -f 10" -o "output_http.so -p 8081 -w ./ -c test:test123"
上述命令中,使用/dev/video0做为输入,分辨率为640x480,输出端口为8081。
为了安全起见,设置了一个简单的账户密码test/test123。实际使用中,应该使用复杂的用户名和密码。
成功后,显示如下表示成功:
启动成功后,就可以通过网址 http://192.168.10.11:8081/?action=stream 进行访问了。其中192.168.10.11为开发板的地址。
整体环境如下:
实际操作效果如下:
15065_1708679587
摄像头视频录制结果:【二次测试录制】
4632_1708679768
四、总结
从上面的实测视频可以看到,视频流的延迟非常非常低低,而且也非常的流畅,没有丝毫的卡顿。
另外,也看了一下当时的CPU负载:
资源占用非常低。
不过,有一点小小遗憾的是,该开发板暂时还不支持双USB摄像头,不然可以上多个一起玩了。
总的来说,虽然米尔-TI AM6231属于米尔-TI AM62x中三个型号的最低配版本,但是做一下工业基础应用,完全足够了。