想法
使用老旧笔记本电脑使用Docker运行Frigate NVR™程序来实现监控项目并借助Rclone实现定期上传至115网盘
传统监控系统基本上是直接被厂商定制化绑定,尤其是提供网络摄像头的各种方案
网盘的功能越来越强大,且支持api调用及rclone挂载
很多网盘动不动就是送几T空间
这些网盘基本都对视频在线预览有很好的支持
监控录像保存的逻辑基本上也是按照天的形式保存
那么只要自动化的将监控文件内容上传到网盘,在需要查监控的时候即可直接打开网盘在线播放,并且理论上数据丢失风险很低
想实时看监控的话,在内网中可以直接访问页面观看
在外网的话也有很多解决方案,frp?
这样似乎有一个巨大的缺点就是吃上传
粗略计算一下24小时下各个质量下的存储占用
| 画面质量 | 单路码率 | 5 路总计码率 | 24 小时总数据量 |
|---|---|---|---|
| 1080P (2MP) | 2Mbps | 10Mbps | 约 105 GB |
| 2K (4MP) | 4Mbps | 20Mbps | 约 211 GB |
| 4K (8MP) | 8Mbps | 40Mbps | 约 422 GB |
我来把一天划成工作时间和休息时间 工作时间:8:00 --- 22:00 共计 14 小时 休息时间:22:00 --- 8:00 共计 10 小时
一般家庭宽带的上传拿30M来计算 工作时间我们将上传限速15M,休息时间满速
工作时间理论可上传:96.26G
休息时间理论课上传:131.8G
理论状态下上传总量:224.06G

对于8MP的话那是远远不够了,5路计算全4MP刚刚好,但是可以重点区域4MP,非重点区域2MP
但是时间长了运营商治不治那就不好说了
依赖项目
项目地址
https://github.com/blakeblackshear/frigate
官网
思路
旧笔记本是联想小新Air15
旧电脑信息:
主板:Manufacturer: LENOVO Product: INVALID
处理器:11th Gen Intel(R) Core(TM) i5-1155G7 @ 2.50GHz
总内存:16167 MB
显卡:Intel(R) Iris(R) Xe Graphics | GameViewer Virtual Display Adapter
刷入主流流行Linux发行版本Debian 安装必要环境与Docker 配置rclone .......
需要准备的材料

备忘录
禁止合盖休眠
编辑文件:
sudo nano /etc/systemd/logind.conf
找到并修改这两行:
HandleLidSwitch=ignore
LidSwitchIgnoreInhibited=no
重启服务:
sudo systemctl restart systemd-logind
开启电池保护
长年插电运行,电池容易鼓包。联想 Ideapad 系列(包括小新)在 Linux 下支持固定在 60% 电量:
echo 1 | sudo tee /sys/bus/platform/drivers/ideapad_acpi/VPC2004:00/conservation_mode
注:路径可能因内核版本略有差异,可以通过
find /sys -name "conservation_mode"
查找具体位置。
HDD 外部硬盘的长效挂载
获取 UUID:执行 sudo blkid 找到你的HDD硬盘 UUID。
修改 fstab:
编辑
/etc/etc/fstab
添加如下行:
UUID=你的UUID /mnt/cctv ext4 defaults,nofail,noatime 0 2
nofail 参数非常关键:万一硬盘盒没上电,系统依然能正常启动,不会卡在启动界面。
Frigate 核心配置
在 docker-compose.yml 中分配显卡权限:
devices:
- /dev/dri/renderD128:/dev/dri/renderD128 # 映射 Intel 核显
在 frigate.yml 中优化检测:
ffmpeg:
hwaccel_args: preset-intel-qsv-h264 # 4路高清解码毫无压力
detectors:
ov:
type: openvino
device: GPU # 利用 Iris Xe 的 80 个执行单元进行 AI 推理
错峰上传方案:Rclone 动态限速脚本逻辑
针对“今天传前天、白天限速、晚上全速”的构想,建议在 Debian 中使用 Systemd Timer 配合 Rclone: 限速配置:利用 Rclone 内置的 --bwlimit 参数实现时段控制。 逻辑示例
# 白天 06:00 到 23:00 限速 1.5M (12Mbps 左右)
# 晚上 23:00 到 06:00 不限速 (off)
rclone move /mnt/hdd/archive remote:backup \
--min-age 2d \
--bwlimit "06:00,1.5M 23:00,off" \
--delete-empty-src-dirs
在 Frigate 中把“USB 拾音器”和“摄像头”结合
Frigate 内置的 go2rtc 模块可以像“搭积木”一样合并音视频流。 配置逻辑参考 (frigate.yml):
go2rtc:
streams:
counter_full_stream:
- rtsp://admin:password@192.168.1.10/h265/main # 摄像头的视频
- ffmpeg:device?audio=hw:CARD=Device,DEV=0 # 你的 USB 拾音器音频
效果:Frigate 会实时将这两个不同来源的流压在一起,生成一个带高清音频的录像文件,存入 HDD硬盘。
拓扑结构
物理层
电力供应层
- 墙上插座 --> 原装 65W 充电器 --> 拓展坞 PD 口 (100W 支持) --> 笔记本 USB-C
- 墙上插座 --> 绿联硬盘盒电源适配器 (12V) --> 硬盘盒
- 墙上插座 --> TP-LINK 交换机电源 --> 交换机
网络数据层
- 5 路 IP 摄像头 --> Cat6 类网线 --> TP-LINK SG2210LPF (PoE 供电口 1-8)
- TP-LINK 交换机 (第 9 号级联口) --> 网线 --> 小米拓展坞 RJ45 千兆网口
本地外设层 (全部连接至小米拓展坞 USB-A 口)
- 绿联 3.5 寸硬盘盒 (内置 HDD硬盘)
- 海康 DS-VM1 USB 麦克风阵列
系统逻辑架构
接入层
- Video: Frigate 通过 FFmpeg 抓取交换机传来的 RTSP 视频流。
- Audio: Debian 系统通过 ALSA/PipeWire 驱动识别 USB 麦克风音频设备 (/dev/snd)。
处理层
- AI 识别: 利用 i5-1155G7 的 Iris Xe 核显,通过 OpenVino 进行人形/车辆过滤。
- 混流 (MUX): Go2RTC 模块将 6mm 摄像头的画面与 USB 麦克风的声音实时合并。
存储层
- 热数据: 实时视频帧缓存在内存 (SHM) 或自带 NVMe SSD 中
- 温数据: 24 小时高清录像存入外挂的 HDD硬盘(UUID 挂载至 /mnt/cctv)
- 冷数据: 凌晨时段,Rclone 脚本将“昨天”的录像加密上传至云端。
文章评论