Motion + 树莓派 CSI 模块实现视频监控

用现有的树莓派加上 CSI 摄像模块,就可以搭建起一套廉价的视频监控系统。

🤔 开始前准备

🗒️ 设备清单

  • Raspberrypi 4B+
  • CSI 摄像模块
  • 互联网连接

❗️ 注意事项

  • CSI 无需买官方版本,第三方在 1688 只需 20 元左右
  • CSI 不支持热插拔,移除、插入前必须将 Rpi 断电
  • 如果不在外浏览摄像头或者有公网 IPV4/6 ,可以忽略内网穿透

▶️ 正式开始

📹️ 连接并启用摄像头模块

将 Rpi 断电,将 CSI 排线插进 CAMERA 接口中,并且锁死卡扣。

在系统配置中启用对摄像头的支持

这里以 Debian-Pi-Aarch64 为例

1
sudo vim /boot/config.txt

找到以下字段,将 start_x=1 取消注释。

1
2
3
4
####################
## Camera Module used: start_x=1

start_x=1

检查摄像头连接是否成功

1
2
sudo reboot #重启系统
vcgencmd get_camera #检查摄像头连接情况

如果输出

1
supported=1 detected=1

则摄像头连接成功,默认的视频位置在 /dev/video0

👷 安装motion

1
2
3
4
# 终端输入
sudo apt install motion -y
# 修改motion的默认配置文件
sudo vim /etc/default/motion

具体配置文件作用见下表格

选项Range/Values Default说明
auto_brightnessValues: on,off Default: off让motion自动调节视频的的亮度,只适用于不带有自动亮度调节的摄像机
brightnessValues: 0-255 Default: 0 (disabled)调整摄像机的亮度
saturationValues: 0 - 255 Default: 0 (disabled)调整摄像机的颜色饱和度
hueValues: 0 - 255 Default: 0 (disabled)调整摄像机的色调
contrastValues: 0-255 Default: 0 (disabled)调整摄像机的对比度
daemonValues: on,off Default: off以守护进程在后台运行。这个选项只能放在motion.conf,不能放在 thread config file
emulate_motionValues: on, off Default: off即使没有运动物体也要保存图像
ffmpeg_output_moviesValues: on, off Default: off是否保存视频
ffmpeg_bpsValues: 0 - 9999999 Default: 400000视频比特率
ffmpeg_variable_bitrateValues: 0, 2 - 31 Default: 0 (disabled)动态比特率,如果开启这个功能ffmpeg_bps将被忽略,0为关闭,2为最好质量,31为最差质量
ffmpeg_duplicate_framesValues: on, off Default: on为了达到每秒的帧数要求,会复制一下帧填充空白时间,关掉这个功能后每个帧都紧接下一个帧,看起来像快进
ffmpeg_output_debug_moviesValues: on, off Default: off调试模式,只看到变化的图像
ffmpeg_video_codecValues: mpeg4, msmpeg4, swf, flv, ffv1, mov, ogg, mp4, mkv, hevc Default: mpeg4视频格式
framerateValues: 2 - 100 Default: 100 (no limit)帧速率,每秒多少帧
frequencyValues: 0 - 999999 Default: 0 (Not set)频率协调 Hz,(不清楚作用)
lightswitchValues: 0 - 100 Default: 0 (disabled)忽略光照强度改变引起的变化
locate_motion_modeValues: on, off, preview Default: off给运动物体用方框标出
locate_motion_styleValues: box, redbox, cross, redcross Default: box标记风格
max_movie_timeValues: 0 (infinite) - 2147483647 Default: 3600最大视频时间
minimum_frame_timeValues: 0 - 2147483647 Default: 0最小帧间隔,设置为0表示采用摄像头的帧率
minimum_motion_framesValues: 1 - 1000s Default: 1捕捉持续至少指定时间的运动帧
movie_filenameValues: Max 4095 characters Default: %v-%Y%m%d%H%M%S视频的文件名
ffmpeg_timelapseValues: 0-2147483647 Default: 0 (disabled)间隔时间,拍摄延时视频
ffmpeg_timelapse_modeValues: hourly, daily, weekly-sunday, weekly-monday, monthly, manual Default: daily延时拍摄模式
timelapse_filenameValues: Max 4095 characters Default: %v-%Y%m%d-timelapse延时拍摄的文件名
output_picturesValues: on,off,first,best,center Default: on是否保存图片和模式设置
output_debug_picturesValues: on,off Default: off图片调试模式,只输出运动物体
picture_filenameValues: Max 4095 characters Default: %v-%Y%m%d%H%M%S-%q图片文件名
picture_typeValues: jpeg,ppm Default: jpeg图片类型
post_captureValues: 0 - 2147483647 Default: 0 (disabled)运动在持续多少帧之后才被捕捉
pre_captureValues: 0 - 100s Default: 0 (disabled)输出图像包括捕捉到运动的前几秒
qualityValues: 1 - 100 Default: 75jpg图像的质量
quietValues: on, off Default: off安静模式,检测到运动不输出哔
rotateValues: 0, 90, 180, 270 Default: 0 (not rotated)旋转图像角度
stream_auth_methodValues: 0,1,2 Default: 0网页监控身份认证方法:0-无,1-基本,2-MD5
stream_authenticationValues: username:password Default: Not defined网页监控用户名和密码
stream_limitValues: 0 - 2147483647 Default: 0 (unlimited)限制帧的数量
stream_localhostValues: on, off Default: on是否只能本地访问网络摄像头
stream_maxrateValues: 1 - 100 Default: 1限制网络摄像头帧速率
stream_portValues: 0 - 65535 Default: 0 (disabled)网络摄像头端口
stream_qualityValues: 1 - 100 Default: 50网络摄像头传输质量
switchfilterValues: on, off Default: off过滤器开关,过滤器用来区分真正的运动和噪声
target_dirValues: Max 4095 characters Default: Not defined = current working directory视频和图片的保存路径
videodeviceValues: Max 4095 characters Default: /dev/video0摄像头设备名
heightValues: Device Dependent Default: 288图像高度,范围跟摄像机相关
widthValues: Device Dependent Default: 352图像宽度,范围跟摄像机相关
process_id_fileValues: Max 4095 characters Default: Not defined保存PID的文件,推荐/var/run/motion.pid
database_busy_timeoutValues: 0 .. positive integer Default: 0数据库等待超时时间,毫秒

启动 Motion

1
2
3
4
# 启动 Motion
sudo motion
# 修改配置文件之后,重启motion
sudo killall -SIGHUP motion

浏览器进入 http://<HOST_IP>:8081,就可以看见你摄像头的画面了。

rpi-motion-success.webp


Motion + 树莓派 CSI 模块实现视频监控
https://auro.moe/post/rpi-video-monitor/
作者
Aurorataro
发布于
2021年5月20日
更新于
2025年12月19日
许可协议