motion是Linux下一款开源的摄像头监控软件,用命名行运行,只保存有运动物体的图像。
sudo apt-get install motion
执行以下指令,将文件中 “start_motion_daemon=no” 的no改为yes。
sudo nano /etc/default/motion
sudo nano /etc/motion/motion.conf
这个文件中保存了许多motion的基本设置,文件内容很多,感兴趣的话可以慢慢研究。可以参考motion官网上的documents,那里面写得很详尽,每个参数的解释都有。motion.conf里自带的注释也很完整。在本blog的最后会列出部分设置的解释。
修改配置文件,这个文件比较长,一定要确保以下参数的配置。
在nano编辑器下,可以使用ctrl+w快速查找到如下配置内容。
#Start in daemon (background) mode and release terminal (default: off)
daemon on
# The mini-http server listens to this port for requests (default: 0 = disabled)
stream_port 8081
# Restrict stream connections to localhost only (default: on)
stream_localhost off
# TCP/IP port for the http server to listen on (default: 0 = disabled)
webcontrol_port 8080
# Restrict control connections to localhost only (default: on)
webcontrol_localhost off
# Output for http server, select off to choose raw text plain(default: on)
webcontrol_html_output on
# Image width (pixels). Valid range: Camera dependent, default: 320
width 800
# Image height (pixels). Valid range: Camera dependent, default: 240
height 600
# Maximum number of frames to be captured per second.
# Valid range: 2-100. Default: 100 (almost no limit).
framerate 2
若你之前打开过motion,那么在每次更改完配置后,需要先关闭motion进程,并再次打开,相当于对motion进行一次重启。关闭motion服务的命令如下:
sudo killall -TERM motion
sudo motion
还可以设置成开机自动运行:
sudo nano /etc/rc.local
在exit 0前添加 motion , 保存,就会开机自动运行了。
在局域网内的设备,不管是手机还是电脑,均可打开浏览器访问:http://树莓派IP:8080
,看到相应的视频图像。
图像看起来还行,除了有一点点卡 。
sudo service motion stop
# 或者 sudo killall -TERM motion
选项 | 取值范围 | 默认值 | 说明 |
---|---|---|---|
auto_brightness | Values: on,off | off | 让motion自动调节视频的的亮度,只适用于不带有自动亮度调节的摄像机 |
brightness | Values: 0-255 | 0 (disabled) | 调整摄像机的亮度 |
saturation | Values: 0 - 255 | 0 (disabled) | 调整摄像机的颜色饱和度 |
hue | Values: 0 - 255 | 0 (disabled) | 调整摄像机的色调 |
contrast | Values: 0-255 | 0 (disabled) | 调整摄像机的对比度 |
daemon | Values: on,off | off | 以守护进程在后台运行。这个选项只能放在motion.conf,不能放在 thread config file |
emulate_motion | Values: on, off | off | 即使没有运动物体也要保存图像 |
ffmpeg_output_movies | Values: on, off | off | 是否保存视频 |
ffmpeg_bps | Values: 0 - 9999999 | 400000 | 视频比特率 |
ffmpeg_variable_bitrate | Values: 0, 2 - 31 | 0 (disabled) | 动态比特率,如果开启这个功能ffmpeg_bps将被忽略,0为关闭,2为最好质量,31为最差质量 |
ffmpeg_duplicate_frames | Values: on, off | on | 为了达到每秒的帧数要求,会复制一下帧填充空白时间,关掉这个功能后每个帧都紧接下一个帧,看起来像快进 |
ffmpeg_output_debug_movies | Values: on, off | off调试模式,只看到变化的图像 | |
ffmpeg_video_codec | Values: mpeg4, msmpeg4, swf, flv, ffv1, mov, ogg, mp4, mkv, hevc | mpeg4视频格式 | |
framerate | Values: 2 - 100 | 100 (no limit) | 帧速率,每秒多少帧 |
frequency | Values: 0 - 999999 | 0 (Not set) | 频率协调 Hz(不清楚作用) |
lightswitch | Values: 0 - 100 | 0 (disabled) | 忽略光照强度改变引起的变化 |
locate_motion_mode | Values: on, off, preview | off | 给运动物体用方框标出 |
locate_motion_style | Values: box, redbox, cross, redcross | box | 标记风格 |
max_movie_time | Values: 0 (infinite) - 2147483647 | 3600 | 最大视频时间 |
minimum_frame_time | Values: 0 - 2147483647 | 0 | 最小帧间隔,设置为0表示采用摄像头的帧率 |
minimum_motion_frames | Values: 1 - 1000s | 1 | 捕捉持续至少指定时间的运动帧 |
movie_filename | Values: Max 4095 characters | %v-%Y%m%d%H%M%S | 视频的文件名 |
ffmpeg_timelapse | Values: 0-2147483647 | 0 (disabled) | 间隔时间,拍摄延时视频 |
ffmpeg_timelapse_mode | Values: hourly, daily, weekly-sunday, weekly-monday, monthly, manual | daily | 延时拍摄模式 |
timelapse_filename | Values: Max 4095 characters | %v-%Y%m%d-timelapse | 延时拍摄的文件名 |
output_pictures | Values: on,off,first,best,center | on | 是否保存图片和模式设置 |
output_debug_pictures | Values: on,off | off | 图片调试模式,只输出运动物体 |
picture_filename | Values: Max 4095 characters | %v-%Y%m%d%H%M%S-%q | 图片文件名 |
picture_type | Values: jpeg,ppm | jpeg | 图片类型 |
post_capture | Values: 0 - 2147483647 | 0 (disabled) | 运动在持续多少帧之后才被捕捉 |
pre_capture | Values: 0 - 100s | 0 (disabled) | 输出图像包括捕捉到运动的前几秒 |
quality | Values: 1 - 100 | 75jpg | 图像的质量 |
quiet | Values: on, off | off | 安静模式,检测到运动不输出哔 |
rotate | Values: 0, 90, 180, 270 | 0 (not rotated) | 旋转图像角度 |
stream_auth_method | Values: 0,1,2 | 0 | 网页监控身份认证方法:0-无,1-基本,2-MD5 |
stream_authentication | Values: username:password | Not defined | 网页监控用户名和密码 |
stream_limit | Values: 0 - 2147483647 | 0 (unlimited) | 限制帧的数量 |
stream_localhost | Values: on, off | on | 是否只能本地访问网络摄像头 |
stream_maxrate | Values: 1 - 100 | 1 | 限制网络摄像头帧速率 |
stream_port | Values: 0 - 65535 | 0 (disabled) | 网络摄像头端口 |
stream_quality | Values: 1 - 100 | 50 | 网络摄像头传输质量 |
switchfilter | Values: on, off | off | 过滤器开关,过滤器用来区分真正的运动和噪声 |
target_dir | Values: Max 4095 characters | Not defined = current working directory | 视频和图片的保存路径 |
videodevice | Values: Max 4095 characters | /dev/video0 | 摄像头设备名 |
height | Values: Device Dependent | 288 | 图像高度,范围跟摄像机相关 |
width | Values: Device Dependent | 352 | 图像宽度,范围跟摄像机相关 |
process_id_file | Values: Max 4095 characters | Not defined | 保存PID的文件,推荐/var/run/motion.pid |
database_busy_timeout | Values: 0 … positive integer | 0 | 数据库等待超时时间,毫秒 |