跳至主要內容

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

Aurorataro原创大约 5 分钟SoftwareRaspberrypi

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

设备清单

  • Raspberrypi4B+

  • CSI摄像模块

  • 互联网连接(可选)

注意事项

  • CSI摄像头可以不用买官方的版本,官方卖100来块还不如直接去买个米家监控来的方便,第三方的CSI摄像头只需20元左右,便宜实惠。
  • 如果没有在外浏览摄像头的需求,可以忽略内网穿透部分。
  • 摄像头的排线一定要插在开发板的CAMERA接口上,且卡扣一定要锁死。
  • 插拔摄像头先断电,否则会对摄像头造成不可逆伤害。

正式开始

连接并启用摄像头模块

  • 将开发板断电,将CSI模块插进CAMERA接口中。

  • 在系统配置中启用对摄像头的支持(默认关闭)

    Raspbian系统

    请见 https://linux.cn/article-3650-1.html

    其他系统

    这里以树莓派爱好者基地自编译的 Debian-Pi-Aarch64 为例 (项目地址:https://github.com/openfans-community-offical/Debian-Pi-Aarch64)

    sudo vim /boot/config.txt
    

    找到以下字段,将

    image-20210521003420019
    start_x=1
    

    取消注释

    然后执行

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

    如果得到

    supported=1 detected=1
    

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

安装motion

  • 终端输入

    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

    sudo motion
    
  • 修改配置文件之后,重启motion

    sudo killall -SIGHUP motion
    
  • 然后浏览器进入 http://<你的树莓派主机IP>:8081

  • 就可以看见你摄像头的画面了

    image-20210523184702851
    image-20210523184702851

内网穿透实现任意地点访问

在云服务器部署frp服务端,在你的终端设备运行frp客户端。设置映射关系后,就可以做到任意地点访问,还可绑定自定义域名。网上教程过多,这里不再阐述。

上次编辑于:
贡献者: 流云心