朋友的花园需要装监控,摄像头比较多,市面上的 NVR 方案要么太贵,要么不灵活。作为一个喜欢动手的人,我萌生了自己写一套监控系统的想法。
这也是我的「简」系列第 N 个项目——之前已经做了工单追踪、分账单等小工具,这次轮到监控了。
当前状态:抢先版已跑通
目前系统已经在我的飞牛云 NAS 上稳定运行,接入了一台小米和一台 TP-LINK 摄像头。以下功能已经全部实现:
🎥 画面预览
- 多路摄像头同时抓帧,2秒自动刷新
- 桌面端3列网格,手机端自适应1列大图
- WebRTC 实时视频流,内网直连 + 外网 HTTPS 反代,手机4G也能秒开
💾 录像存储
- 每10分钟自动分段录制,H.264编码,浏览器直接播放
- 录像回放列表,点击即播
- 定时清理,按天数自动滚动删除
⚙️ 系统管理面板
- 不再是终端敲命令的玩具,所有配置都在前端完成
- 按摄像头独立配置:定时备份、定时清理、移动侦测开关
- 备份路径可自定义(支持多存储盘)
- 配置保存后自动写入 cron,立即生效
- 已配置任务列表,可随时查看和删除
📡 移动侦测 + Bark 推送
- 按摄像头独立开启/关闭
- 基于像素对比,检测到移动后通过 Bark 推送到 iPhone
- 10分钟防重复,不会轰炸式推送
🔐 安全
- 系统管理面板需要密码验证
- 关闭面板自动注销,防止误操作
🌐 外网访问
- 阿里云 FRP + Nginx 反代
- 全站 HTTPS,WebRTC 也通过 Nginx 代理
待完成:两个重要功能卡在硬件上
坦率说,目前系统还有一个关键模块没跑通:ONVIF 自动发现 和 PTZ 云台控制。
原因很现实——我手头的 TP-LINK 家用摄像头对标准 ONVIF 协议支持非常拉胯,各种406、并发限制、GOP过长导致抓帧黑屏,调试到崩溃。小米的 RTSP 又是通过 go2rtc 虚拟出来的,没法测 ONVIF。
这几天被萤石 C6c 增强版也坑了一道——买回来发现它阉割了 RTSP/ONVIF,只能退货。已经重新下单萤石 C6CN 标准版,**后这两个功能预计很快就能跑通。
后续计划
| 阶段 |
内容 |
| 短期 |
萤石** → ONVIF 自动发现 + PTZ 云台控制 |
| 中期 |
前端增加「扫描设备」一键添加摄像头 |
| 长期 |
封装为授权版产品,机器码 + .key 授权 |
技术栈
- 后端:Python Flask + ffmpeg + SQLite
- 前端:原生 HTML/CSS/JS(不依赖任何框架)
- 推流:go2rtc + WebRTC
- 部署:Docker Compose
- 推送:Bark(iOS)
关于「简」系列
这个系列的特点就是极简部署、不依赖第三方云服务、数据完全本地化。之前的工单追踪系统已经出了买断版,监控系统稳定后也会走同样的路。
有兴趣的朋友可以留言交流,也欢迎推荐靠谱的支持标准ONVIF协议的摄像头型号。
#监控 #NAS #Python #自部署 #简系列
截图




