USB摄像头
开发板提供了两个USB口,但是都是排针的方式,因此都需要转接座才能使用。 开发板开机后,执行如下命令查看接入开发板的设备。 ls /dev 当接入USB摄像头后,重新执行ls /dev 会看见多出来一个video设备,说明它就是我们刚才接入的摄像头。
依次执行下列命令
su root
cd /root/C/mjpg-streamer
make
等待make完成后执行 vi start.sh 找到下面的内容,把设备名称改为刚才接入的。
./mjpg_streamer -i “./input_uvc.so -d /dev/video0 -y 1 -r 1280x720 -f 30 -q 90 -n -fb 0” -o “./output_http.so -w ./www” mjpg_streamer命令相关参数的含义如下: -i: 选择输入插件,input_uvc.so表示从摄像头采集数据; -o: 选择输出插件,output_http.so表示使用http协议传输数据; -d: 输入插件的子参数,指定摄像头设备节点; -y: 输入插件的子参数,指定摄像头采集数据的格式,1:yuyv, 2:yvyu, 3:uyvy 4:vyuy,如果不使用-y参数,则表示采集MJPEG格式; -r: 输入插件的子参数,指定摄像头采集分辨率; -f: 输入插件的子参数,指定想使用的摄像头采集fps,具体是否支持依赖于驱动; -q: 输入插件的子参数,指定libjpeg软编码的图像质量; -n: 输入插件的子参数, 禁止dynctrls功能; -fb: 输入插件的子参数, 指定是否在/dev/fbX上显示采集的图像; -w: 输出插件的子参数, 指定包含网页的目录;
执行下面命令运行shell脚本。 ./start.sh 如果顺利,会有如下的输出:
root@ql:~/C/mjpg-streamer# ./start.sh
MJPG Streamer Version.: 2.0
i: Using V4L2 device.: /dev/video1
i: Desired Resolution: 1280 x 720
i: Frames Per Second.: 30
i: Format............: YUV
i: Display framebuffer: /dev/fb0
i: JPEG Quality......: 90
i: Current Resolution: 1280x720
o: www-folder-path...: ./www/
o: HTTP TCP port.....: 8080
o: username:password.: disabled
o: commands..........: enabled
成功运行start.sh脚本后,假设开发板的IP地址为192.168.1.230,在PC的浏览器中输入 192.168.1.230:8080 就能浏览摄像头采集的画面了,效果如下: mjpg-streamer是用libjpeg对摄像头数据进行软编码,Linux-4.14内核的ROM目前并不支持视频硬编码, 但是如果使用H3板子 + Linux-3.4内核的ROM的话, 可以使用ffmpeg对摄像头数据进行硬编码,这样能大大降低CPU的占用率并提高编码速度。 可以使用下面的命令录制视频,默认会录制30秒的视频,输入q能终止录制。录制完成后会在当前目录生成一个名为test.mp4的视频文件,可将其拷贝到PC上进行播放验证。
ffmpeg -t 30 -f v4l2 -channel 0 -video_size 1280x720 -i /dev/video0 -pix_fmt nv12 -r 30 -b:v 64k -c:v cedrus264 test.mp4
DVP摄像头模块(CAM500B)
开发板专门带了个DVP摄像头接口,如下:
对于NanoPi-NEO-Air,CAM500B可配合Linux-3.4内核和Linux-4.14内核使用。 CAM500B是一款500万像素摄像头模块,以DVP并行信号输出,详细信息请参考Matirx-CAM500B的介绍章节。 连接开发板和摄像头,然后上电启动系统,连接网络。执行下列命令:
su root
cd /root/C/mjpg-streamer
make
等待make完成后执行 vi start.sh 找到下面的内容,把设备名称改为刚才接入的。
./mjpg_streamer -i “./input_uvc.so -d /dev/video0 -y 1 -r 1280x720 -f 30 -q 90 -n -fb 0” -o “./output_http.so -w ./www” mjpg_streamer命令相关参数的含义如下: -i: 选择输入插件,input_uvc.so表示从摄像头采集数据; -o: 选择输出插件,output_http.so表示使用http协议传输数据; -d: 输入插件的子参数,指定摄像头设备节点; -y: 输入插件的子参数,指定摄像头采集数据的格式,1:yuyv, 2:yvyu, 3:uyvy 4:vyuy,如果不使用-y参数,则表示采集MJPEG格式; -r: 输入插件的子参数,指定摄像头采集分辨率; -f: 输入插件的子参数,指定想使用的摄像头采集fps,具体是否支持依赖于驱动; -q: 输入插件的子参数,指定libjpeg软编码的图像质量; -n: 输入插件的子参数, 禁止dynctrls功能; -fb: 输入插件的子参数, 指定是否在/dev/fbX上显示采集的图像; -w: 输出插件的子参数, 指定包含网页的目录;
执行下面命令运行shell脚本。 ./start.sh 如果顺利,会有如下的输出:
$ ./start.sh
i: Using V4L2 device.: /dev/video1
i: Desired Resolution: 1280 x 720
i: Frames Per Second.: 30
i: Format............: YUV
i: JPEG Quality......: 90
o: www-folder-path...: ./www/
o: HTTP TCP port.....: 8080
o: username:password.: disabled
o: commands..........: enabled
成功运行start.sh脚本后,假设开发板的IP地址为192.168.1.230,在PC的浏览器中输入 192.168.1.230:8080 就能浏览摄像头采集的画面了,效果如下:
|