motion和MJPG-streamer异同
相同点:都是linux系统上监控用的程序。
不同点:
motion通过motion.conf配置文件,可以设定动态感知的动作。比如有宠物进入摄像头范围内,motion自动捕获截图或者视频,然后触发既定的脚本(sh,python等等)。MJPG-streamer好像不能动态感知(存疑)
motion比较吃资源,且刷新率设定的不能太高,导致视频不连续。MJPG-streamer就比较流畅。
motion安装比较简单,通过apt-get就可以。MJPG-streamer需要下载代码,自己make。当然也得安装必要的依赖包。还好不算很多。
准备
- 树莓派 3B(需要提前安装系统和联网)
- LOGICOOL C270(USB摄像头,请提前测试一下摄像头是否正常)
注意
树莓派经常找不到video0,或者摄像头显示在video1。
现象:执行lsusb的时候,可以看到摄像头的硬件。但是执行ls -l /dev/video*,只能看到video1,却没有video0
那么进行下面的配置文件修改
修改/etc/modules成下面的样子
pi@raspberrypi:~ $ cat /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
i2c-dev
bcm2835-v4l2
安装手顺
更新一下apt-get
sudo apt-get update
sudo apt-get upgrade
安装依赖包
sudo apt-get install subversion libjpeg-dev imagemagick
下载源码
svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer mjpg-streamer
准备make,移动作业目录
cd mjpg-streamer
make
make
安装
sudo make install
※好像不执行安装也可以,我没实验。建议走稳妥的办法,还是安装一下吧。
停止motion
如果motion 还在启动中的话,先停掉
sudo service motion stop
启动MJPG-streamer
sudo ./mjpg_streamer -i "./input_uvc.so -f 10 -r 320x240 -d /dev/video0 -y -n" -o "./output_http.so -w ./www -p 8080"
内网访问
http://192.168.0.7:8080/stream.html
320x240也可以修改为640x480。
设定外网能够访问
-
在路由器中设定树莓派的内网IP(我的是192.168.0.7)和外网的IP的绑定
-
使用外网IP访问监控摄像头
http://此处是外网IP:8080/stream.html
效果图
安全
- 保险起见,还是设定一下登陆帐号和密码,basic认证一下。
关掉服务
一般Ctrl+C就可以,或者执行kill命令
kill -9
pidof mjpg_streamer
]
重启服务
跟之前命令比较,多了一个-c userid:password。(帐号密码改为自己想好的)
sudo ./mjpg_streamer -i "./input_uvc.so -f 10 -r 320x240 -d /dev/video0 -y -n" -o "./output_http.so -w ./www -p 8080 -c userid:password"
效果图
启动脚本
利用脚本执行来启动服务,这样就不用每次在命令行输入一堆内容了。省事!
创建目录
cd ~
mkdir tool
cd tool
做成启动sh
vi ./stream.sh
#!/bin/sh
#This is Web-streaming server start up script.for raspi
#No warrantly.# Config
PORT="8081"
ID="basic认证ID" # 需要修改
PW=basic认证ID密码" # 需要修改
SIZE="640x480" # 320x240也可以
F_RATE="15"
MJPG_STREAMER=/usr/local/bin/mjpg_streamerexport LD_LIBRARY_PATH=/usr/local/lib
$MJPG_STREAMER
-i "input_uvc.so -f $F_RATE -r $SIZE -d /dev/video0 -y"
-o "output_http.so -w /usr/local/www -p $PORT -c $ID:$PW" -b
执行脚本
sh /home/pi/tool/stream.sh
加入自启动中
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi
#以下两行是新追加内容
# MJPG Streamer Start
sh /home/pi/tool/stream.shexit 0
其他
- 删除不用的代码文件夹
rm -r ~/mjpg-streamer/