本帖最后由 咸味土豆 于 2018-3-30 08:57 编辑
前段时间折腾USB摄像头,参考坛友的帖子基本就能接入使用了,只是有些参数没有搞明白,最近好好看了看帖子,解决了一些以前没搞明白的地方,发出来记录一下,给和我一样的小白做个参考,大神们请无视。
一、我的环境
运行环境:树莓派3,Debian9+Docker+hassio。
摄像头硬件:USB免驱摄像头,手头有一个罗技的C270,还有一个是前段时间坛子里大神们推荐的ps3的摄像头(25块钱包邮,640*480,60fps,还带阵列麦克风),这俩在树莓派(linux)下都是免驱的。
二、参考教程
1、坛友发的:小白第一帖~USB摄像头通过MJPEG_streamer接入hass,图像识别
2、L大发的:【玩转docker】【usb摄像头接入ha】【mjpg_streamer】【mjpg组件】
3、csdn的多个帖子: 【手把手教你树莓派3 (六)】使用 motion 和 mjpg 做视频监控器
mjpg-streamer学习笔记3----主进程 等等
三、经验补充
1、安装编译软件
参考上面的链接一,原教程很详细了,请看坛友原帖,安装依赖、下载源文件进行编译;原帖第3步中,如果下载后,解压的时候如果提示找不到源文件,可以自己下载后放在自己记得住的路径下,手动cd到该目录进行第4步操作,编译会花较长的时间,慢慢等就好了,具体请看原贴,附件我会提供编译好的文件,一样的环境的可以尝试。
2、复制文件:
原贴中的第5步,把编译好的文件拷贝复制到树莓派对应的目录中,注意权限,完成后应该是这个样子的(winSCP查看):
3、开启mjpg-streamer :
开启之前,先查看一下自己的USB摄像头是否被识别:
输入后显示:
pi@raspberrypi:~ $ lsusb
Bus 001 Device 005: ID 1415:2000 Nam Tai E&E Products Ltd. or OmniVision Technologies, Inc.Sony Playstation Eye
Bus 001 Device 025: ID 046d:0825 Logitech, Inc. Webcam C270
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
复制代码
其中第一个是ps3摄像头,第二个是罗技C270,都能识别。
查看摄像头的位置:
输入后显示:
pi@raspberrypi:~ $ ls /dev/vid*
/dev/video0 /dev/video1
复制代码
输入命令开启mjpg_streamer、查看效果:
打开/dev/video1位置的摄像头,输入命令:
sudo /usr/local/bin/mjpg_streamer -i "/usr/local/lib/input_uvc.so -y -d /dev/video1 -r 320x240 -f 15" -o "/usr/local/lib/output_http.so -p 8090 -w /usr/local/www" &
复制代码
打开/dev/video0位置的摄像头,输入命令:
sudo /usr/local/bin/mjpg_streamer -i "/usr/local/lib/input_uvc.so -y -d /dev/video0 -r 320x240 -f 15" -o "/usr/local/lib/output_http.so -p 8080 -w /usr/local/www" &
复制代码
输入命令之后,有时候会开启失败,我的办法就是先输入lsusb命令查看设备,确认设备能识别出来之后再试,基本能成功。
开启成功:
开启失败:
在浏览器输入你的树莓派地址加上对应端口,就能在Web页面查看图像了:
http://1x.xx.xx.xx:8080
复制代码
相关参数:
路径相关的需要和前面的文件位置对应一致;
-i为输入参数设置,其中:-d为输入节点,-r为分辨率,-f为帧率;
-o为输出参数设置,其中:-p为端口设置,-c为用户名和密码(比如:-o "/usr/local/lib/output_http.so -p 8090 -w /usr/share/mjpeg-streamer/www/ -c admin:admin");
最早参照坛友的帖子接入的时候发现在退出ssh客户端或者ctrl+c之后,mjpg_streamer进程就会跟着结束了,(网上专业的解释和解决方法的帖子很多,我一个linux门外汉就不解释了),其实很简单,在启动命令后面加上符号“&”即可。
本来想参考别的帖子写个自启动的脚本的,不会也不想搞了,现在已经能满足我的要求了,想用的时候就手动开启,不想看了就结束进程。
结束命令:
sudo killall -TERM mjpg_streamer
复制代码
四、接入HA
1、配置camera
camera:
- platform: mjpeg
mjpeg_url: [url=http://10.16.100.110:8080/?action=stream]http://10.16.100.110:8080/?action=stream[/url]
# still_image_url: http://IP/image.jpg
name: usb_camera01
- platform: mjpeg
mjpeg_url: [url=http://10.16.100.110:8090/?action=stream]http://10.16.100.110:8090/?action=stream[/url]
# still_image_url: http://IP/image.jpg
name: usb_camera02
复制代码
2、效果展示:
五、资源占用
未开启摄像头:
开启摄像头:
数据仅供参考。
当然,HA里会有一堆报错信息,我已经麻木了,HA不报错太不正常了,好在不影响使用。
over!
附上我的附件:
output_http.rar
(15.17 KB, 下载次数: 25)
input_uvc.rar
(17.79 KB, 下载次数: 26)
mjpg_streamer.rar
(7.52 KB, 下载次数: 28)
www.rar
(110 KB, 下载次数: 38)