news 2026/5/11 14:09:49

把树莓派变成监控摄像头:CSI相机+FFmpeg推流到Home Assistant/萤石云完整教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
把树莓派变成监控摄像头:CSI相机+FFmpeg推流到Home Assistant/萤石云完整教程

树莓派智能监控系统搭建:从硬件配置到云端集成实战指南

在智能家居和安防监控领域,树莓派凭借其小巧的体积、强大的性能和极高的可定制性,成为了DIY爱好者的首选平台。本文将带你一步步将树莓派和CSI相机打造成一个功能完备的监控系统,不仅能实现本地高清视频采集,还能通过FFmpeg推流至Home Assistant智能家居平台或萤石云等第三方服务,构建一个低成本、高灵活度的私有监控解决方案。

1. 硬件准备与环境配置

1.1 选择合适的树莓派与相机模块

对于监控系统而言,树莓派4B或更新的型号是最佳选择,其更强的处理能力能够流畅处理视频编码任务。官方CSI相机模块V2版本提供了800万像素的拍摄能力,支持1080p@30fps的视频录制,是监控应用的理想选择。

硬件清单:

  • 树莓派4B/5(建议4GB内存以上版本)
  • 官方CSI相机模块V2
  • 优质CSI排线(长度根据安装位置选择)
  • 合适的散热方案(监控系统可能长时间运行)
  • 大容量存储卡(建议64GB以上,Class 10速度等级)
  • 稳定的电源适配器(5V/3A)

提示:如果需要在低光环境下使用,可以考虑带有红外夜视功能的第三方CSI相机模块。

1.2 系统安装与基础配置

推荐使用Raspberry Pi OS Lite版本(64位)作为基础系统,减少不必要的资源消耗:

# 更新系统并安装必要组件 sudo apt update && sudo apt upgrade -y sudo apt install -y ffmpeg v4l-utils python3-pip

启用CSI相机接口:

sudo raspi-config

在界面中选择"Interface Options" → "Camera"并启用,完成后重启系统。

验证相机是否正常工作:

libcamera-hello -t 0

如果能看到实时视频流,说明相机配置成功。

2. 视频采集与FFmpeg推流配置

2.1 优化视频采集参数

监控场景下,我们需要平衡视频质量、流畅度和系统负载。以下是一组经过优化的采集参数:

# 使用libcamera-vid捕获视频流 libcamera-vid -t 0 --width 1280 --height 720 --framerate 15 --codec h264 --profile high --bitrate 1500000 --output - | \ ffmpeg -i - -c copy -f rtsp rtsp://localhost:8554/mystream

参数说明:

  • --width/--height:分辨率设置为720p,平衡清晰度和带宽
  • --framerate 15:15fps对于监控场景足够流畅
  • --bitrate 1500000:1.5Mbps比特率保证画质
  • --profile high:使用H.264 High Profile提高压缩效率

2.2 FFmpeg推流进阶配置

为了实现更稳定的推流,我们可以添加缓冲和重连机制:

ffmpeg -fflags +genpts -use_wallclock_as_timestamps 1 -i - \ -c:v copy -f rtsp -rtsp_transport tcp \ -max_delay 100000 -reorder_queue_size 1000 \ -resend_headers 10 -stimeout 5000000 \ "rtsp://your_rtsp_server/mystream"

关键参数解析:

  • -rtsp_transport tcp:使用TCP传输,提高稳定性
  • -max_delay 100000:设置最大延迟为100ms
  • -reorder_queue_size 1000:设置重排序缓冲区大小
  • -resend_headers 10:每10秒重发一次头信息
  • -stimeout 5000000:设置超时为5秒

3. 系统集成与智能功能实现

3.1 接入Home Assistant平台

在Home Assistant中,通过configuration.yaml添加摄像头:

camera: - platform: ffmpeg name: Raspberry Pi Camera input: -rtsp_transport tcp -i rtsp://your_pi_ip:8554/mystream extra_arguments: -pred 1 -q:v 2

对于更高级的集成,可以使用以下配置实现运动检测和自动化:

binary_sensor: - platform: ffmpeg_motion input: -rtsp_transport tcp -i rtsp://your_pi_ip:8554/mystream name: Camera Motion changes: 10 reset: 20 automation: - alias: "Record on motion" trigger: platform: state entity_id: binary_sensor.camera_motion to: "on" action: - service: camera.record data: entity_id: camera.raspberry_pi_camera filename: '/media/motion/recording_{{ now().strftime("%Y%m%d_%H%M%S") }}.mp4' duration: 30

3.2 推流至萤石云等第三方平台

如果需要将视频流推送至萤石云等商业平台,可以使用FFmpeg进行转码推流:

ffmpeg -i rtsp://localhost:8554/mystream \ -c:v libx264 -preset ultrafast -tune zerolatency \ -b:v 1000k -maxrate 1000k -bufsize 2000k \ -f flv "rtmp://publish.ys7.com:2935/your_stream_key"

推流参数优化建议:

  1. 使用-preset ultrafast降低编码延迟
  2. -tune zerolatency启用零延迟模式
  3. 根据网络状况调整比特率(-b:v
  4. 设置适当的缓冲区大小(-bufsize

4. 系统优化与高级功能

4.1 存储管理与循环录制

监控系统通常需要长时间运行,合理的存储管理至关重要。以下是使用logrotate管理录像文件的配置示例:

# /etc/logrotate.d/pi_camera /media/motion/*.mp4 { daily rotate 7 compress delaycompress missingok notifempty create 640 pi pi }

对于更精细的存储控制,可以使用以下Python脚本实现基于运动检测的智能录制:

import subprocess import time import os REC_DIR = "/media/motion" MAX_SIZE_GB = 32 MIN_FREE_SPACE_GB = 5 def get_free_space(): stat = os.statvfs(REC_DIR) return stat.f_bavail * stat.f_frsize / 1024 / 1024 / 1024 def cleanup_oldest(): files = sorted([os.path.join(REC_DIR, f) for f in os.listdir(REC_DIR)], key=os.path.getmtime) while get_free_space() < MIN_FREE_SPACE_GB and files: os.remove(files[0]) files = files[1:] while True: if get_free_space() < MIN_FREE_SPACE_GB: cleanup_oldest() time.sleep(3600) # 每小时检查一次

4.2 低功耗与稳定性优化

对于7×24运行的监控系统,稳定性至关重要。以下是一些优化建议:

  1. 温度控制

    # 安装温度监控 sudo apt install -y lm-sensors sudo sensors-detect
  2. 内存优化

    # 调整swappiness echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf sudo sysctl -p
  3. 看门狗定时器

    # 启用硬件看门狗 sudo apt install -y watchdog sudo systemctl enable watchdog sudo systemctl start watchdog
  4. 自动恢复服务: 创建systemd服务单元文件/etc/systemd/system/camera_stream.service

    [Unit] Description=Raspberry Pi Camera Stream After=network.target [Service] Type=simple User=pi ExecStart=/home/pi/start_stream.sh Restart=always RestartSec=10 [Install] WantedBy=multi-user.target

5. 安全防护与远程访问

5.1 基础安全加固

监控系统往往涉及隐私数据,安全防护不可忽视:

# 更改默认密码 passwd # 禁用SSH密码认证 sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config sudo systemctl restart ssh # 配置防火墙 sudo apt install -y ufw sudo ufw allow 22/tcp sudo ufw allow 8554/tcp # RTSP端口 sudo ufw enable

5.2 安全的远程访问方案

如果需要从外部网络访问监控流,建议使用以下安全方案:

  1. VPN接入:通过路由器或专用设备建立VPN通道
  2. 反向代理:使用Nginx进行加密代理

Nginx配置示例:

stream { server { listen 443; proxy_pass localhost:8554; ssl_certificate /etc/ssl/certs/nginx.crt; ssl_certificate_key /etc/ssl/private/nginx.key; ssl_protocols TLSv1.2 TLSv1.3; } }
  1. 端口随机化:避免使用默认RTSP端口
  2. 流媒体加密:启用RTSP over SSL/TLS

5.3 视频流加密与隐私保护

对于敏感场景,可以对视频流进行加密:

# 生成自签名证书 openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes # 使用加密的RTSP流 ffmpeg -i /dev/video0 -c:v libx264 -f rtsp -rtsp_transport tcp \ -encryption_scheme cenc-aes-ctr -encryption_key 12345678901234567890123456789012 \ -encryption_kid aabbccddeeff00112233445566778899 rtsp://your_server:8554/secure_stream

在客户端播放时,需要提供相应的解密密钥才能观看视频内容。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 14:07:29

空降的技术总监活不过半年?这3条生存法则救了我

这几乎是每个软件测试团队在迎来新任技术领导者时&#xff0c;心底都会冒出的疑问。我们见过太多这样的案例&#xff1a;一位履历光鲜的技术总监&#xff0c;带着大厂的成熟经验空降而来&#xff0c;踌躇满志地准备大干一场。然而&#xff0c;几个月后&#xff0c;他便在复杂的…

作者头像 李华
网站建设 2026/5/11 14:03:32

m4s-converter:B站缓存视频快速转换工具,永久保存你的珍贵收藏

m4s-converter&#xff1a;B站缓存视频快速转换工具&#xff0c;永久保存你的珍贵收藏 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾为…

作者头像 李华
网站建设 2026/5/11 14:00:40

海棠山铁哥 “手搓”《凰标》:从代码到文字的文化突围@凤凰标志

凰标&#xff1a;一个程序员“手搓”出的全民创作时代 “当资本筑起高墙&#xff0c;他用一行行代码&#xff0c;把墙变成了桥。” 01 行业铁律被打破 传统认知海棠山铁哥的答案优质内容 雄厚资本 专业团队 工业化流水线优质内容 1 台电脑 1 套自研 AI 创作系统普通人只能…

作者头像 李华
网站建设 2026/5/11 14:00:01

避坑指南:在RT-Thread下用软件I2C驱动BH1750传感器的那些事儿

避坑指南&#xff1a;RT-Thread软件I2C驱动BH1750传感器的实战排错手册 当你在RT-Thread的msh终端输入sensor read却只得到一片沉默&#xff0c;或是list_device列表里始终找不到那个熟悉的i2c设备时&#xff0c;那种挫败感我深有体会。去年在智能农业项目中&#xff0c;我们团…

作者头像 李华
网站建设 2026/5/11 13:49:51

QGIS实战指南 | 三大几何投影的选型策略与场景适配

1. 投影基础&#xff1a;为什么选对几何投影如此重要&#xff1f; 第一次打开QGIS加载地图数据时&#xff0c;你可能遇到过这样的场景&#xff1a;明明在北方城市采集的GPS轨迹&#xff0c;显示在地图上却变成了倾斜的曲线&#xff1b;或者做省级行政区划分析时&#xff0c;相邻…

作者头像 李华