Frigate 完整安装教程:30 分钟部署本地监控 AI NVR 与实时对象检测
【免费下载链接】frigateNVR with realtime local object detection for IP cameras项目地址: https://gitcode.com/GitHub_Trending/fr/frigate
Frigate 是一款面向 IP 摄像头的本地监控 NVR,内置实时对象检测:所有视频分析都在你自己的机器上完成,不依赖云端,适合家庭门口、店铺前台这类场景。本文按"选硬件 → 部署第一路摄像头 → 进阶优化"的顺序讲完整流程。
三分钟看懂:Frigate 是什么
Frigate 的定位是"本地优先的 NVR"。它拉取摄像头的 RTSP 流后,先用开销极低的运动检测(帧差法加高斯模糊)判断画面哪里在动,再只对运动区域运行对象检测。底层基于 OpenCV 与 TensorFlow,检测运行在独立进程中以保证实时性,结果通过 MQTT 对外广播,方便接入其他系统。
核心能力一次说清:
- 实时对象检测:人、车等目标出现即画框,只在必要时分析
- 事件录像:支持 7x24 小时录像,按检测到的对象决定保留多久,旧片段自动清理
- 通知推送:事件可经 MQTT 集成推送到 Home Assistant 或手机
- 鸟瞰图:一个画面看所有摄像头,支持按连续、运动、对象三种模式过滤
更多背景可以看官方文档。
开始之前:硬件与环境怎么选
Frigate 推荐跑在安装了 Docker 的 Debian 系 Linux 上;虚拟机(Proxmox、ESXi 等)不推荐,因为加速器设备透传不稳定、开销更大。
硬件起步建议(按摄像头路数,可以先低配后升级):
| 场景 | CPU | 内存 | 存储 | 加速器建议 |
|---|---|---|---|---|
| 单路摄像头 | 双核 2.0GHz 以上 | 4GB | 64GB SSD | 可选,内置 OpenVINO CPU 推理即可 |
| 4 路摄像头 | 四核(i5 级) | 8GB | 256GB SSD | 推荐 Google Coral USB 或 Hailo-8L |
| 8 路及以上 | 八核(i7 级) | 16GB | 1TB SSD 或 NAS | Hailo-8 或独立显卡 |
软件前提:
- Docker Engine + Docker Compose(不需要 Docker Desktop),按官方文档用 apt 源安装
- 摄像头建议 H.264 视频 + AAC 音频,兼容性最好;WiFi 摄像头流不稳定,优先有线
- 共享内存:默认 128MB 约够 2 路 720p 检测,摄像头多时需在 compose 里加
shm_size
加速器是可选项,官方支持 Google Coral(USB/M.2)、Hailo-8/8L(树莓派 5 与 x86)、Intel 显卡(OpenVINO)、AMD/Nvidia 显卡等,具体选型见检测模块与文档中的硬件推荐章节。
🚀 首次部署:第一路摄像头上线
第一步:准备目录。在服务器上建两个目录:
mkdir storage config && touch docker-compose.yml第二步:写docker-compose.yml(按官方文档示例精简):
services: frigate: restart: unless-stopped # 异常退出自动拉起 image: ghcr.io/blakeblackshear/frigate:stable environment: FRIGATE_RTSP_PASSWORD: "changeme" # RTSP 密码,配置里引用 volumes: - ./config:/config # 配置文件 - ./storage:/media/frigate # 录像与事件存储 ports: - "8971:8971" # Web 界面与 API - "8554:8554" # RTSP 重推流第三步:写config/config.yml。文件可以留空——Frigate 首次启动会自动生成基础配置,之后在设置界面里补。这里给一个最小示例:
mqtt: enabled: False # 不接 Home Assistant 时保持关闭 cameras: front_door: # 摄像头名称,改成你自己的 ffmpeg: inputs: - path: "rtsp://user:{FRIGATE_RTSP_PASSWORD}@192.168.1.10:554/stream1" roles: - detect # 该流用于运动检测与对象检测 record: enabled: True # 开启录像第四步:启动并验证。
docker compose up -d首次启动会生成管理员账号和初始密码,用docker logs frigate查看。浏览器打开https://服务器IP:8971登录,在"添加摄像头"向导里填 RTSP 地址即可。Live 页面有人或车经过时,应能看到检测框实时出现。
🎯 进阶用法:三个高频配置
接入 Coral 或 Hailo 加速器
先把设备透传给容器,再在配置里声明检测器:
# docker-compose.yml 的 services.frigate 下添加(二选一) devices: - /dev/bus/usb:/dev/bus/usb # USB Coral - /dev/hailo0 # Hailo-8/8L # config.yml 中声明检测器(以 Coral 为例) detectors: coral: type: edgetpu device: usbHailo 需先在宿主机装好驱动(安装指南附一键脚本),默认模型 YOLOv6n 会自动生效,无需手选;Coral 主要适配 ssdlite、mobilenet 一类模型。改完 compose 后重新docker compose up -d。
录像保留多久:事件驱动的策略
思路一句话:平时少留,有事多留。默认 Frigate 会为所有被跟踪的对象保留 10 天视频,可按"连续录像 → 有运动 → 有告警/检测"分级设置:
record: enabled: True # 开启录像 continuous: days: 3 # 连续录像保留 3 天(可省略) motion: days: 7 # 出现运动的画面保留 7 天 alerts: retain: days: 30 # 触发告警的事件保留 30 天 mode: all文件按日期存放在/media/frigate/recordings,过期自动清理。实现细节见录像模块。
低配设备降载
- 调小 detect 流的
width/height/fps,720p @ 5fps 是常见的检测起步点 - 给低配机器配一条专门的低清流只承担
detect角色,高清流仅用于录像 - 用 Docker 的资源限制(cpus / memory)给容器封顶
- 日志反复出现
Bus error一般是共享内存不足,调大shm_size
❓ 常见问题与优化
问:模型要手动下载吗?
不用。默认走 CPU 上的 OpenVINO(容器自带 ssdlite_mobilenet_v2 模型),Hailo 默认 YOLOv6n。想换自定义模型时,在model段指定path与labelmap_path即可。
问:日志出现 Connection refused / 401 / 404?
refused 表示地址无人监听或摄像头并发连接数已满;401 是账号密码错误;404 是流地址路径写错。先用 VLC 或摄像头 Web 管理页逐项核对,再改配置。
问:摄像头连上了但没有检测框?
按顺序排查:detect.enabled是否为 True;要跟踪的目标(person、car 等)是否在 objects 配置里;运动遮罩是否误盖住整屏。可在单摄像头视图打开调试开关,观察运动框是否在目标区域触发。
问:硬盘快写满了怎么办?
保留策略自动执行,不会无限增长。某个片段想长期保存时,在 WebUI 里"导出"它——导出的文件不受保留策略影响,不会被删除。
小结
到这里,一套完全本地运行的 Frigate 本地监控系统已经可用:实时对象检测、事件录像、通知、鸟瞰图全部就绪。配置项的完整参考和逐条错误说明都在官方文档的 troubleshooting 章节,社区也非常活跃,遇到问题优先查那里。家里有摄像头的,选一路信号最稳定的先跑起来,半小时内就能见到效果。
【免费下载链接】frigateNVR with realtime local object detection for IP cameras项目地址: https://gitcode.com/GitHub_Trending/fr/frigate
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考