Frigate 0.18.2 配置参数详解

Frigate v0.18.2 config.yml 全参数详解:go2rtc/mqtt/detectors/detect/objects/record/snapshots/live 等逐项给出作用、默认值与修改-验证闭环,含 record.retain 迁移等 0.18 schema 实测排障(2026-10-27 实测)。

Frigate流媒体监控自托管2026/10/27

Frigate 0.18.2 配置参数详解

目标:把 Frigate v0.18.2 的 config.yml 全部常用参数讲透——每个参数给「作用 + 默认值 + 修改方法 + 验证闭环」,全部验证在真实服务器上逐项跑通(2026-10-27 实测)。测试环境使用本地 ffmpeg 推流的 RTSP 模拟摄像头源(Intel 开源样例视频循环推流),无真实摄像头硬件;所有验证方式与回显对真实摄像头同样适用。部署过程见《Frigate 0.18.2 Docker Compose 部署指南》。

一、环境信息

本篇参数验证的实测环境:

项目值
服务器Ubuntu 22.04,6 核 CPU / 19GB 内存,无独立显卡
Frigate0.18.2-cfa08c5(GET /api/stats 实测版本号)
摄像头源本地 ffmpeg 循环推流模拟(H.264 源 768x432@12fps,检测配置 1280x720@5fps)
检测器cpu0(type: cpu,num_threads: 2)
检测模型默认 CPU 模型 /cpu_model.tflite(SSD,输入 320x320,COCO 90 类标签)
MQTTEclipse Mosquitto 2.0.22,账号 admin/q1w2e3r4
配置 schema 版本version: 0.18-1
Web 端口8138(映射服务端口 5000,本篇验证命令统一用 http://127.0.0.1:8138)

二、前置条件

  1. 已按《Frigate 0.18.2 Docker Compose 部署指南》跑起单摄像头检测环境,GET /api/stats 能返回 camera_fps。
  2. 服务器可执行 curl(调用 Frigate API 验证参数生效)。
  3. MQTT 服务器(Mosquitto)已就绪且账号可登录(验证 MQTT 相关参数)。
  4. 能编辑 /config/config.yml 并重启 Frigate 服务(重启命令见《Frigate 0.18.2 Docker Compose 部署指南》第九节常用运维命令)。

三、参数查看与修改方式

3.1 查看当前生效配置

最权威的「当前生效值」来自 API(它返回的是合并默认值后的完整配置,比手写 config.yml 更全):

curl -s http://127.0.0.1:8138/api/config | python3 -c "
import json,sys
d=json.load(sys.stdin)
print('version:', d['version'])
print('mqtt:', d['mqtt'])
print('detectors:', d['detectors'])
print('cam1.detect:', d['cameras']['cam1']['detect'])
"

实测回显(0.18.2 初始配置,未改 detect.fps 前):

version: 0.18-1
mqtt: {'enabled': True, 'host': 'mosquitto', 'port': 1883, 'user': 'admin', 'password': 'q1w2e3r4', 'stats_interval': 60, 'topic_prefix': 'frigate', 'client_id': 'frigate'}
detectors: {'cpu0': {'type': 'cpu', 'num_threads': 2, 'device': 'auto'}}
cam1.detect: {'enabled': True, 'max_disappeared': None, 'height': 720, 'width': 1280, 'fps': 5, 'min_initialized': None, 'stationary': None}

注意两个细节:①mqtt.client_id 默认即 frigate;②detect.fps 未在文件里写默认会展开为实际值。任何一次修改后想确认是否生效,都优先查这个接口而不是翻文件。

3.2 修改配置的三条途径

途径操作适用
直接改文件 + 重启服务编辑 /config/config.yml,重启 Frigate 服务批量修改、版本化管理的首选
Web UI 配置编辑器界面 Settings → Configuration Editor,保存后选择保存方式单点微调,所见即所得
APIGET /api/config 读、POST /api/restart 远程重启脚本化运维

其中 API 的实测情况:GET /api/config 返回完整 JSON(见 3.1);配置保存端点为 POST /api/config/save(Web UI 编辑器内部即调用它,实测带非法参数返回 422 校验错误,属服务端正常行为);POST /api/restart 可远程触发服务重启(实测 HTTP 200)。直接改文件仍是最稳的主路径。

3.3 通用验证套路

每个参数的验证都是同一闭环:改 config.yml → 重启 Frigate 服务 → 用 API/日志确认。重启后 Frigate 会先做配置校验,校验失败进程退出并在日志精确指出错误行号(第六节有实测示例),校验通过则依次打印 Starting Frigate 与各摄像头处理器启动日志。

四、参数总览

config.yml 按层级组织,树形一览(★ 为本篇有实测验证的参数):

go2rtc/                    ★ 对外再分发的流注册
mqtt/                      ★ MQTT 连接与主题前缀
detectors/                 ★ 检测器类型与线程
model/                     检测模型路径与标签
objects/                   顶层全局目标过滤默认值
auth/                      ★ 登录认证开关与角色
logger/                    日志级别
ui/                        界面行为(时区/统计日志等)
telemetry/                 网络探测开关
cameras/
  <摄像头名>/               ★ 摄像头唯一 ID
    enabled/               ★ 启用开关
    ffmpeg/inputs/         ★ 拉流地址与角色(detect/record/restream)
    detect/                ★ 检测分辨率与帧率
    objects/               ★ 目标类别与置信度过滤
    motion/                运动检测灵敏度
    zones/                 检测区域多边形
    record/                ★ 录像与保留策略
    snapshots/             ★ 快照与保留策略
    live/                  浏览器直播画质
    review/                审核视图策略
    birdseye/              全景画布参数
    audio/                 音频事件(whisper)
    timestamp_style/       时间戳水印样式
version/                   ★ 配置 schema 版本(0.18-1)

💡 生效方式速查:mqtt/detectors/model/cameras 等绝大多数参数需要重启服务;record 的 pre_capture/post_capture 等少数录像参数为运行时热读。拿不准时统一重启,代价只是几秒初始化。

五、顶层全局参数详解

5.1 go2rtc:流再分发与浏览器直播

go2rtc:
  streams:
    cam1:
      - rtsp://mediamtx:8554/cam1
  • 作用:把摄像头流注册进 Frigate 内置的 go2rtc 流网关,供 Web UI 低延迟直播(WebRTC/MSE)与对外 RTSP 再分发(服务端口 8554)。
  • ⚠️ 实测坑(本篇最重要的发现之一):0.18 中仅给摄像头 input 添加 restream 角色、不在顶层注册 go2rtc.streams 时,/api/go2rtc/streams 仍返回空 {};两者同时配置后注册才生效。

修改-验证闭环:

curl -s http://127.0.0.1:8138/api/go2rtc/streams

注册前实测回显:

{}

添加 go2rtc.streams 并重启服务后实测回显:

{
    "cam1": {
        "api": {
            "host": "127.0.0.1",
            "port": 1984,
            "schema": "http"
        },
        "name": "cam1",
        "producers": [
            {
                "path": "rtsp://mediamtx:8554/cam1"
            }
        ]
    }
}

5.2 mqtt:MQTT 连接与主题

mqtt:
  enabled: true
  host: mosquitto
  port: 1883
  user: admin
  password: q1w2e3r4
  topic_prefix: frigate

逐项说明(0.18 实测值见 3.1 回显):

参数默认说明
enabledFalse不启用则一切 MQTT 功能关闭(Home Assistant 集成随之失效)
host无MQTT 服务器地址(部署篇内为内部服务名 mosquitto,见《Frigate 0.18.2 Docker Compose 部署指南》)
port1883MQTT 端口
user / password无凭据,需与 Mosquitto 的密码文件匹配
topic_prefixfrigate全部主题的前缀,实测状态主题形如 frigate/cam1/enabled/state
client_idfrigateMQTT 客户端 ID
stats_interval60统计主题发布间隔(秒)

验证方式:在 MQTT 服务器上订阅 frigate/# 观察(实测回显见《Frigate 0.18.2 Docker Compose 部署指南》 4.8 节,状态主题全部 ON、person/snapshot 有 JPEG 载荷)。若配置错误,Frigate 进程不会报错退出,但 frigate/# 完全无消息——「订阅无消息」就是 MQTT 未连上的信号。

5.3 detectors:检测器选型

detectors:
  cpu0:
    type: cpu
    num_threads: 2
参数可选值说明
typecpu / coral / openvino / tensorrt / rknn / rocm 等检测后端。CPU 仅测试用(服务启动日志实测会打印警告:Run detection with the CPU is only for testing, it is very slow)
num_threads1-4CPU 检测线程数,实测 2 线程时 detection_fps 17.7(720p@5fps)
deviceautoopenvino/tensorrt 等后端的设备选择

验证:改 num_threads 或 fps 后看 /api/stats 的 detection_fps 变化(fps 修改-验证闭环见 6.3)。

5.4 model:自定义检测模型

model:
  path: /custom_model.tflite
  width: 320
  height: 320
  input_tensor: nhwc
  input_pixel_format: rgb
  labelmap_path: /labelmap.txt

默认不写即用内置 SSD 模型(实测 /api/stats 显示 detection_model: /cpu_model.tflite,输入 320x320、90 类标签)。仅当自训模型或换模型格式时配置;跑自定义模型必须同时配 labelmap,否则事件标签错乱。

5.5 objects:全局目标默认值

顶层 objects 可为所有摄像头设置默认 track/filters,摄像头内的同名段覆盖全局值。摄像头级详解见 6.4。

5.6 auth:登录认证

auth:
  enabled: true

0.18 默认开启。实测行为(0.18.2 服务器实测):

  • GET /api/config 中 auth 段实测返回 {'enabled': True, 'roles': {'admin': [], 'viewer': []}, 'proxy': {'auth_check': 'https://...', 'logout_url': '', 'cookies': {...}}, 'trusted_proxies': []}。
  • REST API(/api/*)实测匿名可访问;强制登录态的是媒体流与文件路径(/stream/、/clips/、/recordings/、/ws,由内置 nginx 挂 auth_request 拦截)。
  • 用户密码策略 ≥12 字符(8 位密码实测报 Password must be at least 12 characters long)。
  • 登录端点 POST /api/login,实测 {"user":"admin","password":"q1w2e3r4Ab12"} 返回 200 并下发会话 Cookie。
  • 列出用户 GET /api/users 实测返回 [{"username":"admin","role":"admin"}];改密 PUT /api/users/admin/password(body {"password":"新密码"})实测 200。

5.7 logger / ui / telemetry

logger:
  default: INFO
  logs:
    frigate.event: DEBUG

ui:
  timezone: Asia/Shanghai
  live_mode: mse

telemetry:
  network_interfaces: false
  • logger.default:全局日志级别(DEBUG/INFO/WARNING/ERROR);logger.logs 按模块名细粒度覆盖,排查事件问题时把 frigate.event 开到 DEBUG。
  • ui.timezone:界面时区;ui.live_mode 可选 webrtc/mse/jsmpeg(默认自动协商)。
  • telemetry.network_interfaces:是否对外暴露网卡探测统计,生产环境建议 false。

六、摄像头参数详解

6.1 enabled 与命名

cameras:
  cam1:
    enabled: true

摄像头名(cam1)是全系统唯一 ID:MQTT 主题、事件 camera 字段、API 路径(/api/cam1/latest.jpg)都直接引用它。命名用小写字母数字与下划线。禁用摄像头把 enabled 改 false 并重启,实测 MQTT 会发布 frigate/cam1/enabled/state OFF,/api/config 里 cameras 只剩 enabled 的。

6.2 ffmpeg.inputs:拉流与角色

    ffmpeg:
      inputs:
        - path: rtsp://mediamtx:8554/cam1
          input_args: preset-rtsp-generic
          roles:
            - detect
            - record
            - restream
参数说明
pathRTSP 地址。真实摄像头一般用子码流(sub stream)做 detect 角色、主码流做 record,可配两条 input
input_args官方内置参数组:preset-rtsp-generic(通用 RTSP)、preset-rtsp-restream(go2rtc 内网)、preset-rtsp-tcp 等。值加 preset- 前缀即引用内置组
rolesdetect(检测)、record(录像)、audio(音频检测)、restream(再分发,需配合顶层 go2rtc.streams,见 5.1)

修改-验证闭环(roles 增删后重启):restream 角色生效后,对外 8554 端口可再拉出同一路流(再分发出口实测取帧 13961 字节 JPEG 成功,命令详见《Frigate 0.18.2 常用 CLI 命令详解》)。roles 写错时(如多写了 audio 却无音频流)Frigate 启动日志会给出明确报错。

6.3 detect:检测分辨率与帧率(本篇核心实测)

    detect:
      enabled: true
      width: 1280
      height: 720
      fps: 5
  • fps:参与检测的帧率,与摄像头实际帧率解耦(模拟源 12fps 主码流,检测按 5fps 取帧)。这是 CPU 检测开销的第一决定因素。
  • width/height:检测分辨率。Frigate 会把拉到的帧缩放到该尺寸再检测;与源不一致时可工作(源 768x432 检测配置 1280x720 实测 person 置信度 0.82)。
  • max_disappeared:目标消失后保留跟踪的帧数(默认 10 倍 fps 左右,0.18 展开为 None 表示用内置默认)。
  • stationary:静止目标检测策略(interval 等子项),用于长期静止场景降载。

修改-验证闭环(fps 5 → 10):改 detect.fps: 10,重启服务后:

sleep 10 && curl -s http://127.0.0.1:8138/api/stats | python3 -c "
import json,sys
c=json.load(sys.stdin)['cameras']['cam1']
print('camera_fps:', c['camera_fps'], '| process_fps:', c['process_fps'], '| detection_fps:', c['detection_fps'])
"

实测回显对比:

fps=5:  camera_fps: 5.3 | process_fps: 4.6 | detection_fps: 17.7
fps=10: camera_fps: 10.1 | process_fps: 4.3 | detection_fps: 42.9

camera_fps 从 5.3 升到 10.1、detection_fps 从 17.7 翻倍到 42.9——检测帧率翻倍直接带来 CPU 检测吞吐翻倍。process_fps 反而略降(4.6→4.3),说明进程调度出现瓶颈压力,这正是官方强调「CPU 检测仅测试用」的量化佐证。

6.4 objects:目标类别与过滤

    objects:
      track:
        - person
        - bicycle
        - car
      filters:
        person:
          min_score: 0.7
          max_ratio: 4
          min_ratio: 0.1
          threshold: 0.7
      mask: 0,0,1280,0,1280,720,0,720
参数默认说明
track[person]要跟踪的类别(默认模型 90 类内)
filters.<类别>.min_score0.5进入跟踪的最低置信度
filters.<类别>.threshold0.7事件判定/快照触发的置信度(高于 min_score 的第二道闸)
filters.<类别>.max_ratio / min_ratio4 / 0.1目标框长宽比过滤(剔除误检长条形)
mask无屏蔽区域多边形坐标(顶点序列),被遮挡区域内的检测忽略

修改-验证闭环(person min_score 0.5 → 0.7):在 filters.person 加 min_score: 0.7,重启后核对:

curl -s http://127.0.0.1:8138/api/config | python3 -c "
import json,sys
print('person min_score:', json.load(sys.stdin)['cameras']['cam1']['objects']['filters']['person']['min_score'])
"

实测回显:

person min_score: 0.7

同时 /api/events 后续事件 data.score 全部 ≥0.7(实测事件 score 0.82/0.81 通过过滤)。

6.5 motion:运动检测调优

    motion:
      threshold: 30
      contour_area: 15
      improve_contrast: false

threshold(默认 30)像素差阈值:调低更灵敏但易误报;contour_area(默认 15)最小运动区域面积。验证方式:MQTT 实测主题 frigate/cam1/motion/state ON 与 frigate/cam1/motion_threshold/state 30(《Frigate 0.18.2 Docker Compose 部署指南》 4.8 节实测回显),以及 review 接口的 motion 计数(实测 /api/cam1/recordings/summary 返回 motion: 4614)。

6.6 zones:检测区域

    zones:
      driveway:
        coordinates: 640,0,1280,0,1280,720,640,720
        objects:
          - person

coordinates 是多边形顶点(逗号分隔 x,y 对)。目标中心落入 zone 才产生该 zone 的事件;zones.objects 可按区域过滤类别。验证:事件 payload 的 zones 字段包含 zone 名(/api/events 返回 data.zones 实测为数组);误报治理最常用手段——把马路一侧排除出 zone 后,过车事件不再触发。

6.7 record:录像与保留(0.18 schema 重点)

    record:
      enabled: true
      alerts:
        pre_capture: 5
        post_capture: 5
        retain:
          days: 1
          mode: motion
      detections:
        retain:
          days: 1
          mode: motion

0.18 的录像保留分三级:record.retain(连续录像保留,需显式启用 continuous 模式)、record.alerts.retain(告警事件)、record.detections.retain(普通检测事件);mode 可选 motion/all/active_objects。

⚠️ 实测坑(排障实录):从旧版文档抄来的写法

    record:
      enabled: true
      retain:
        days: 1
        mode: motion

重启服务直接失败,日志实测回显:

Config Validation Errors
 *** Extra inputs are not permitted ***
 Line #: 36, Key: cameras -> cam1 -> record -> retain, Value: {'days': 1, 'mode': 'motion'}

迁移到 alerts/detections 子结构后校验通过。启用后验证:media/recordings/<日期>/<小时>/<摄像头>/ 按分钟分片落盘(实测 recordings/2026-10-27/02/cam1/59.01.mp4),/api/cam1/recordings/summary 返回按小时统计(实测 02 时段 events 4 / motion 4614 / duration 58 秒)。

6.8 snapshots:快照

    snapshots:
      enabled: true
      clean_copy: true
      height: 350
      quality: 70
      retain:
        default: 7
参数默认说明
clean_copyTrue同时保存无标注干净图
height350快照缩放高度(宽度按比例)
quality70JPEG 质量 1-100
retain.default10各类别未单独配置时的保留天数

修改-验证闭环:retain.default 从 7 改 3(或反向),重启后 GET /api/config 核对(实测该字段返回 7.0 为改前值、3.0 为改后值)。事件快照验证:/api/events/<id>/snapshot.jpg 返回 200 与 JPEG(实测 25620 字节),?format=clean 参数可取干净图。

6.9 live:浏览器直播

    live:
      streams:
        cam1: cam1
      height: 720
      quality: 8

live.streams 把 Web UI 直播绑定到 go2rtc 流名(键为界面显示名,值为 go2rtc.streams 里注册的流名);height/quality 控制直播画质。前提见 5.1:go2rtc.streams 必须先注册。

6.10 review / birdseye / audio / timestamp_style

    review:
      alerts:
        enabled: true
        required_zones: []
      detections:
        enabled: true

    birdseye:
      enabled: true
      mode: continuous
      layout:
        coefficient: 2.75

    audio:
      enabled: false

    timestamp_style:
      position: tl
      format: '%Y-%m-%d %H:%M:%S'
  • review:审核视图两级分类(alerts/detections)开关,required_zones 限定只有命中指定 zone 才升级为告警。
  • birdseye:全景画布,mode 可选 continuous/motion/objects(有目标时才显示)。
  • audio:音频事件检测(whisper 模型),默认关闭;启用后需在 input 加 audio 角色。
  • timestamp_style:快照/直播水印,position 九宫格定位(tl 顶左)。

七、生产配置模板

综合以上实测结论,单路摄像头 + CPU 检测起步的推荐模板(真实摄像头替换 rtsp 地址即可):

go2rtc:
  streams:
    cam1:
      - rtsp://<用户名>:<密码>@<摄像头IP>:554/stream1

mqtt:
  enabled: true
  host: <MQTT服务器IP>
  port: 1883
  user: admin
  password: q1w2e3r4

detectors:
  cpu0:
    type: cpu
    num_threads: 2

cameras:
  cam1:
    enabled: true
    ffmpeg:
      inputs:
        - path: rtsp://<用户名>:<密码>@<摄像头IP>:554/stream1
          input_args: preset-rtsp-generic
          roles: [detect, record]
    detect:
      enabled: true
      width: 1280
      height: 720
      fps: 5
    objects:
      track: [person, car]
      filters:
        person:
          min_score: 0.7
    record:
      enabled: true
      alerts:
        retain:
          days: 3
          mode: motion
      detections:
        retain:
          days: 1
          mode: motion
    snapshots:
      enabled: true
      retain:
        default: 7

version: 0.18-1

⚠️ 模板使用注意:①密码 ≥12 字符的用户密码策略只约束 Frigate 登录用户,MQTT 密码无此限制;②CPU 检测仅适合 1-2 路试用,扩路前先上 Coral/OpenVINO(见《Frigate 0.18.2 介绍与选型指南》硬件边界表);③模板中的 rtsp 占位符需替换为真实值,版本 schema 字段 0.18-1 保持不变。

八、常见问题

Q1:改完配置重启失败,日志出现 Extra inputs are not permitted? 配置 schema 不兼容,最常见是 record.retain 旧写法(见 6.7 实测)。修复路径:按日志行号定位(实测示例 Line #36),把 retain 迁移到 alerts/detections 子节。

Q2:/api/go2rtc/streams 返回空 {}? 顶层 go2rtc.streams 未注册(见 5.1 实测闭环),仅加 restream 角色无效。

Q3:detect.fps 改大后 CPU 飙高、画面卡顿? fps 与 CPU 开销线性相关(实测 5→10 时 detection_fps 17.7→42.9 翻倍)。优先降回 5fps,或把检测分辨率降到 1280x720 以下,再或上硬件加速器。

Q4:事件里有目标但快照是空图? snapshots.retain 或 enabled 未开;或目标置信度低于 filters.threshold(默认 0.7)。用 GET /api/config 核对摄像头 snapshots 段与 objects.filters。

Q5:MQTT 全无消息但 Frigate 正常运行? mqtt.enabled 未开或 host/user/password 错误。Frigate 与 MQTT 断连不报进程错误,用 mosquitto_sub 订阅 frigate/# 快速判定(有 frigate/cam1/enabled/state ON 即连通)。

Q6:如何让改动立即生效而不用手动登录服务器重启? POST /api/restart 可远程触发重启(实测 HTTP 200);Web UI 的配置编辑器保存时也可选择「保存并重启」。

九、参考链接