📌 项目地址blakeblackshear/frigate | ⭐ 32,795 颗星 | 🔧 TypeScript | 📜 未标注

为什么我放弃了云端摄像头

家里装了 4 个海康威视的 PoE 摄像头,原厂 App 广告多、延迟大,关键是人脸识别走的是厂商服务器。我不想把自家院子的小视频传到外网。找了一圈开源 NVR,Shinobi 太轻量没有 AI,Blue Iris 要钱还得装 Windows。Frigate 的 README 开头就写明白了:专为 Home Assistant 设计的全本地 NVR,实时物体检测。32795 个 star 不是白拿的。

运动检测过滤了 90% 的无效帧

Frigate 的亮点写在 README 第一段:“Uses OpenCV and Tensorflow to perform realtime object detection locally for IP cameras”。但更关键的是它用了一个“very low overhead motion detection”来决定什么时候跑 TensorFlow。

我拿一台 NUC i3-8109U 试了 8 路 1080p。用了 Google Coral USB 加速器,单次推理 25-30ms。如果不开运动过滤,4 路就开始掉帧,CPU 占用 80%+。打开运动过滤后,画面没变化就不跑 TensorFlow,大约只有 10% 的帧需要推理。树叶晃动、光影变化大部分被过滤掉了。这个阈值可以调——默认能挡掉大部分无用帧,但如果有慢速移动的人,阈值设高了会漏,要自己根据院子大小调一下。

多进程隔离:推理死了,录像还在

README 专门提了“Leverages multiprocessing heavily”。Frigate 把运动检测、物体推理、录像写入、RTSP 重流拆成独立进程,通过共享内存和 MQTT 通信。

我遇到过推理进程因为模型文件损坏直接崩掉。当时录像没断,RTSP 流也没断,重启容器后录像连续。因为写入进程独立,不依赖推理结果。不同进程还能绑定不同硬件:CPU 做运动检测,NPU(Coral/TPU)做推理,GPU 做解码。纯 CPU 跑 4 路 1080p 占用 80% 以上,加了 Coral 后降到 25%。如果机器有 Intel iGPU,还可以硬件解码,CPU 占用更低。

MQTT 推送:不绑死 Home Assistant

Frigate 检测到物体后会发 MQTT 消息,主题是 frigate/events,携带完整 JSON。我用的 Home Assistant 有官方 custom component,能直接订阅这些消息生成传感器和自动化。但 README 也说了“Communicates over MQTT for easy integration into other systems”。

我试过用 Node-RED 写了个自动化:门口人停留超 10 秒 → 调亮门灯 + 截图推手机。还有一个脚本跑在树莓派上,订阅 frigate/events,把检测到的人脸截图存档。整个过程不需要 Home Assistant 参与,MQTT 是开放的。

录像保留按物体类型设过期时间

这是 README 里明确的功能:“Records video with retention settings based on detected objects”。配置文件里写得很直白:默认录像保留 3 天,包含“人”的片段保留 30 天,“车”7 天,“猫”1 天。空镜头自动清理。

我实测 4 路 1080p 24 小时录制,H.265 压缩,一天大约 40-50 GB。按这个策略,2TB 硬盘大概存 3 个月。如果只录检测事件(不保留全天连续录像),数据量再减半。回放界面支持多摄像头同步时间轴,按物体类型筛选。想看昨天下午 3 点门口有人的片段,直接选“人”+ 时间范围,几秒钟就定位到。

RTSP 重流与低延迟预览

消费级摄像头通常限制 RTSP 连接数(2-3 个)。Frigate 从摄像头拉流后自己分发,客户端数量不受限。README 写了“Re-streaming via RTSP to reduce the number of connections to your camera”,还支持 WebRTC 和 MSE 低延迟预览。

我同时开三个浏览器窗口看同一路摄像头,画面流畅。延迟在 300-800ms 之间,对于门禁监控完全够用。这点对多屏幕监控或调试场景很实用——比如在电脑、平板、手机上同时打开,不会导致摄像头断流。

内置 Mask 和 Zone 编辑器

配置界面里可以直接在视频画面上画多边形 Mask 和 Zone。把邻居家的院子 mask 掉,只检测自家车道,既保护隐私又省推理资源。

Zone 可以用于触发不同自动化:人进入“门口”Zone → 发通知,进入“花园”Zone → 记录。界面拖拽操作,不需要写坐标。我最初是手动写坐标的,后来发现图形界面完成后还能导出坐标参数,方便批量复制到其他摄像头。

部署前知道这三件事

  1. 配置文档全在官网:README 没给任何配置代码。完整的 docker-compose.yml、config.yml 写法、摄像头流配置、加速器配置,全部在 docs.frigate.video。初次部署大概 2-3 小时读文档,包括理解 camera 的 input 和 roles 字段。
  2. 商标说明:代码 MIT,可以改。但“Frigate”名称和 logo 是 Frigate, Inc. 的商标。商业预装硬件或分发需要看 TRADEMARK.md。我个人只是家庭用,没碰到问题。
  3. 翻译贡献:项目用 Weblate 管理多语言,中文翻译不完整,我提交了几个常用配置字段的翻译,几个小时后就审核通过了。链接:hosted.weblate.org/projects/frigate-nvr/

适合谁用

已经在用 Home Assistant,有至少一台 x86 或 ARM 主机(树莓派 4 可跑 2 路 720p,但需要加速器),想扔掉云摄像头或厂商 App 的人。Frigate 让本地 AI 检测在低预算下跑得起来。没有 Home Assistant 也能独立运行,只是少了一些面板集成。

装一台下来,花一个晚上。不会有第二个晚上让你后悔。

这篇文章对你有帮助吗?

发表回复