目前市面上有很多摄像头,而且大部分都不是Z301,且免驱。如果选取的摄像头不合适,在使用mjpg-stream过程中,就会报如下错误:
系统信息如下:
root@OpenWrt:/# ls -lh /dev/video0
crw-r--r-- 1 root root 81, 0 Jan 1 08:00 /dev/video0
root@OpenWrt:/# /etc/init.d/mjpg-streamer start
root@OpenWrt:/# MJPG Streamer Version.: 2.0
i: Using V4L2 device.: /dev/video0
i: Desired Resolution: 640 x 480
i: Frames Per Second.: 5
i: Format............: MJPEG
Unable to set format: Invalid argument
Init v4L2 failed !! exit fatal
i: init_VideoIn failed
从这里可以看出问题就出在摄像头不支持jpeg格式,因为市面上大部分都是支持YUV的,而不是JPEG的。找到问题就好办了,经过查找发现mjpg-stream支持JPEG和YUV两种格式,但是我们拿到的固件都没有对摄像头采编格式的设置(希望各位固件大侠能够加上),所以mjpg-stream就使用默认格式--jpeg。
在/etc/init.d/mjpg-stream 文件中我找到了启动设置,如下:
[ $enabled -gt 0 -a -c $device ] && sleep 3 && $SSD -S -m -p $PIDF -q -x $PROG -- --input "input_uvc.so --device $device --fps $fps --resolution $resolution" --output "output_http.so --port $port -c user:pass" &
请修改为:
[ $enabled -gt 0 -a -c $device ] && sleep 3 && $SSD -S -m -p $PIDF -q -x $PROG -- --input "input_uvc.so --device $device --fps $fps --resolution $resolution -y" --output "output_http.so --port $port -c user:pass" &
保存后,./mjpg-stream restart
这样就可以了!!哈哈
同时告诉大家motion也是一个不错的选择,因为它的motion.conf文件中包含了多达8种采编格式的选择。
有的朋友会说motion占用资源较多,和mjpg-stream比较如下:
1)进程数 motion:4个 mjpg-stream:4个
2)内存 motion:12%*4 mjpg-stream:8% * 4
3)CPU motion:51% mjpg-stream:56% (因为motion只在图像有变化的情况下才工作)
4)磁盘 motion:只要有图像变化,就产生一个图片文件 mjpg-stream:不占用 (在计划任务中加一个语句 */02 * * * * rm /tmp/cam1/*.jpg 这样就可以每2分钟清一次图片空间,可以保证FLASH不会被塞满)
如果做监控,还是建议使用motion,因为他可以识别画面;如果是用于机器人控制建议用mjpg-stream。
系统信息如下:
root@OpenWrt:/# ls -lh /dev/video0
crw-r--r-- 1 root root 81, 0 Jan 1 08:00 /dev/video0
root@OpenWrt:/# /etc/init.d/mjpg-streamer start
root@OpenWrt:/# MJPG Streamer Version.: 2.0
i: Using V4L2 device.: /dev/video0
i: Desired Resolution: 640 x 480
i: Frames Per Second.: 5
i: Format............: MJPEG
Unable to set format: Invalid argument
Init v4L2 failed !! exit fatal
i: init_VideoIn failed
从这里可以看出问题就出在摄像头不支持jpeg格式,因为市面上大部分都是支持YUV的,而不是JPEG的。找到问题就好办了,经过查找发现mjpg-stream支持JPEG和YUV两种格式,但是我们拿到的固件都没有对摄像头采编格式的设置(希望各位固件大侠能够加上),所以mjpg-stream就使用默认格式--jpeg。
在/etc/init.d/mjpg-stream 文件中我找到了启动设置,如下:
[ $enabled -gt 0 -a -c $device ] && sleep 3 && $SSD -S -m -p $PIDF -q -x $PROG -- --input "input_uvc.so --device $device --fps $fps --resolution $resolution" --output "output_http.so --port $port -c user:pass" &
请修改为:
[ $enabled -gt 0 -a -c $device ] && sleep 3 && $SSD -S -m -p $PIDF -q -x $PROG -- --input "input_uvc.so --device $device --fps $fps --resolution $resolution -y" --output "output_http.so --port $port -c user:pass" &
保存后,./mjpg-stream restart
这样就可以了!!哈哈
同时告诉大家motion也是一个不错的选择,因为它的motion.conf文件中包含了多达8种采编格式的选择。
有的朋友会说motion占用资源较多,和mjpg-stream比较如下:
1)进程数 motion:4个 mjpg-stream:4个
2)内存 motion:12%*4 mjpg-stream:8% * 4
3)CPU motion:51% mjpg-stream:56% (因为motion只在图像有变化的情况下才工作)
4)磁盘 motion:只要有图像变化,就产生一个图片文件 mjpg-stream:不占用 (在计划任务中加一个语句 */02 * * * * rm /tmp/cam1/*.jpg 这样就可以每2分钟清一次图片空间,可以保证FLASH不会被塞满)
如果做监控,还是建议使用motion,因为他可以识别画面;如果是用于机器人控制建议用mjpg-stream。