ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Frigate 全量配置参考:从 MQTT、检测器到相机级的完整 YAML 配置指南

Frigate 全量配置参考:从 MQTT、检测器到相机级的完整 YAML 配置指南 Frigate 全量配置参考从 MQTT、检测器到相机级的完整 YAML 配置指南【免费下载链接】frigateNVR with realtime local object detection for IP cameras项目地址: https://gitcode.com/GitHub_Trending/fr/frigateFrigate 是一款面向 IP 摄像头的 NVR 实时本地目标检测系统其全部行为均由一份 YAML 配置文件驱动。本文以仓库内 docs/docs/configuration/advanced/reference.md 的全量配置参考为骨架逐模块拆解mqtt、detectors、model、detect、motion、objects、record、cameras等顶层配置段并结合 frigate/config/config.py 等源码验证默认值与校验逻辑。读完本文你将能读懂 Frigate 的任意配置项含义、掌握全局配置 相机级覆盖的层级规则并能基于源码定位每个参数的实际生效位置。阅读前提与使用原则:::warning 官方文档明确警告不建议直接复制这份全量配置。Frigate 的配置项与默认值可能在后续版本变化正确的做法是只写出与默认值不同的项。 :::参考文档开篇即强调标注# NOTE: Can be overridden at the camera level的段落如audio、detect、objects、record、motion、birdseye、snapshots、notifications、review、live、timestamp_style等可以在全局设置再在单个相机下覆盖具体机制见 docs/docs/configuration/config_overrides.md。配置文件默认位于/config/config.yml。在 frigate/util/config.py 中可以看到CURRENT_CONFIG_VERSION 0.18-0当前配置版本号用于帮助检测迁移或格式变化DEFAULT_CONFIG_FILE os.path.join(CONFIG_DIR, config.yml)默认配置文件路径find_config_file()读取环境变量CONFIG_FILE来确定实际配置路径未设置时回落到默认路径migrate_frigate_config()启动时若检测到旧版本配置会执行自动迁移到当前版本。配置加载的核心入口是 frigate/config/config.py 中的FrigateConfigPydantic 模型它把所有顶层段落映射为强类型配置对象mqtt: MqttConfig、detectors: dict[str, BaseDetectorConfig]、model: ModelConfig、cameras: dict[str, CameraConfig]、genai: dict[str, GenAIConfig]等。任何类型不匹配、取值范围越界或关联校验失败都会在启动时直接报错。全局服务配置MQTT、认证、网络与代理mqttMQTT 是 Frigate 与外部系统尤其是 Home Assistant交互的主通道用于发布检测事件、快照、状态与统计信息。mqtt: enabled: True host: mqtt.server.com # 也可用 {FRIGATE_MQTT_HOST} 引用环境变量/secret port: 1883 topic_prefix: frigate # 多实例时必须唯一 client_id: frigate # 多实例时必须唯一 user: mqtt_user # 也可用 {FRIGATE_MQTT_USER} password: password # 也可用 {FRIGATE_MQTT_PASSWORD} tls_ca_certs: /path/to/ca.crt tls_client_cert: /path/to/client.crt tls_client_key: /path/to/client.key tls_insecure: false stats_interval: 60 # 发布统计信息的间隔秒 qos: 0 # 0至多一次 / 1至少一次 / 2恰好一次源码细节frigate/config/mqtt.pyhost、user、password的类型是EnvString支持{FRIGATE_XXX}形式引用环境变量或 Docker secretsstats_interval有geFREQUENCY_STATS_POINTS的下限约束模型校验器user_requires_pass强制要求用户名与密码成对出现只填其一会在启动时报错使用客户端证书时不要设置user/password证书不能受密码保护。detectors 与 model检测器配置决定用什么硬件/后端运行目标检测。默认是单 CPU 检测器新配置模板默认采用 OpenVINO见 frigate/config/config.py 中DEFAULT_DETECTORS与NEW_CONFIG_DETECTORS。detectors: detector_name: type: cpu # 更多类型见 object_detectors 文档 model: path: /edgetpu_model.tflite # Frigate 模型用 plus://model_id labelmap_path: /labelmap.txt width: 320 height: 320 input_pixel_format: rgb # rgb / bgr / yuv input_tensor: nhwc # nhwc / nchw / hwnc / hwcn input_dtype: int # float / float_denorm / int model_type: ssd # ssd / yolox / yolonas / yolo-generic / rfdetr / dfine labelmap: 2: vehicle # 合并进标准 labelmap attributes_map: person: [amazon, face] car: [amazon, fedex, license_plate, ups]仓库内对应文档为 docs/docs/configuration/object_detectors.md支持的类型包括cpuTFLite、edgetpu、openvino、onnx、tensorrt、rknn、hailo8l、memryx、synaptics、axengine、deepstack等各插件的具体实现位于 frigate/detectors/plugins/ 目录。model_type决定支持多种模型架构的检测器openvino、onnx、rknn、memryx、axengine、synaptics 等如何解析输出。database、tls、networking、proxy、authdatabase: path: /config/frigate.db # SQLite 数据库路径 tls: enabled: True # 在 8971 端口启用 TLS networking: ipv6: enabled: False # 在 5000 及 8971若启用 TLS上启用 IPv6 listen: internal: 5000 # 内部监听端口 external: 8971 # 外部监听端口 proxy: # 仅在 Frigate 自身认证关闭时使用 header_map: user: x-forwarded-user role: x-forwarded-groups role_map: admin: [sysadmins, access-level-security] viewer: [camera-viewer] logout_url: /api/logout auth_secret: None # 校验 X-Proxy-Secret 请求头不设置则信任所有来源 default_role: viewer # admin / viewer separator: , # 多值分隔符 auth: enabled: True reset_admin_password: False # 启动时重置 admin 密码并打印到日志 cookie_name: frigate_token cookie_secure: False # 使用 TLS 时应设为 True session_length: 86400 # 24 小时 refresh_time: 1800 # 30 分钟低于此剩余时间时刷新会话 failed_login_rate_limit: None # 登录失败限流防止暴力破解 trusted_proxies: [] # 仅用于限流时判定客户端 IP hash_iterations: 600000 # PBKDF2-SHA256 迭代次数OWASP 建议 roles: my_custom_role: [front_door, back_yard] # 空列表可访问所有相机认证的完整说明见 docs/docs/configuration/authentication.md。networking.listen仅面向高级用户普通用户应通过 docker compose 或--publish改端口。logger 与 environment_varslogger: default: info logs: frigate.event: debug # 按组件覆盖日志级别 environment_vars: EXAMPLE_VAR: value # 在 HAOS 环境下设置进程环境变量感知层detect、motion、audiodetect检测流detect role是 Frigate 目标检测的输入源相关配置可在相机级覆盖。detect: enabled: False width: 1280 # 默认使用流原生分辨率 height: 720 fps: 5 # 推荐值 5尽量降低相机端 FPS min_initialized: 2 # 连续命中次数默认 1/2 帧率 max_disappeared: 25 # 丢失多少帧后判定对象消失默认 5 倍帧率 stationary: classifier: True # 用视觉特征判断对象是否静止 interval: 50 # 每隔 N 帧确认静止对象仍存在 threshold: 50 # 位置不变的帧数达到该值判定为静止默认 10 倍帧率 max_frames: # 最大静止跟踪帧数不设置则永久跟踪 default: 3000 objects: person: 1000 annotation_offset: 0 # 毫秒级校正时间轴边界框与录像的偏差可为负max_frames的文档警告值得注意设置该值会覆盖默认行为并禁用静止对象跟踪除非明确需要不建议照抄示例值。motionmotion: enabled: False # 注意对象检测依赖运动检测关闭将导致启动报错 threshold: 30 # cv2.threshold 像素差阈值1-255越大越不敏感 lightning_threshold: 0.8 # 大范围变化闪电/红外切换重校准阈值 skip_motion_threshold: None # 0.0-1.0超过该比例的帧变化则忽略所有运动框且不生成运动录像 contour_area: 10 # 重采样运动图中最小运动面积10 高敏 / 30 中 / 50 低 delta_alpha: 0.2 # 帧差分的混合因子 frame_alpha: 0.01 # 背景平均的累积权重越高新物体越快融入背景 frame_height: 100 # 运动帧缩放高度越高越精细但更耗 CPU mask: mask1: friendly_name: Motion mask area enabled: true coordinates: 0.000,0.469,1.000,0.469,1.000,1.000,0.000,1.000 improve_contrast: True # 动态对比度增强改善夜间检测 mqtt_off_delay: 30 # 运动结束后延迟多少秒才发布 MQTT off源码约束frigate/config/camera/motion.pythreshold限幅 1-255lightning_threshold限幅 0.3-1.0skip_motion_threshold限幅 0.0-1.0。verify_motion_and_detect()frigate/config/config.py会校验若detect.enabled为真而motion.enabled为假启动直接报错因为对象检测依赖运动检测。更深入的原理见 docs/docs/configuration/motion_detection.md 与 docs/docs/configuration/masks.md。audio音频事件检测同样支持相机级覆盖完整配置见 docs/docs/configuration/audio_detectors.md。audio: enabled: False max_not_heard: 30 # 连续未检测到音频多少秒后结束事件 min_volume: 500 # 经验值200 高敏 / 500 中敏 / 1000 低敏 num_threads: 2 listen: [bark, fire_alarm, speech, yell] filters: speech: threshold: 0.8 # 触发音频事件的最低分数对象层objects、review、notificationsobjectsobjects: track: [person] # 从 labelmap.txt 中选取要跟踪的对象 mask: # 全局对象过滤掩码按包围框底边中心判定 mask1: friendly_name: Object filter mask area enabled: true coordinates: 0.000,0.000,0.781,0.000,0.781,0.278,0.000,0.278 filters: person: min_area: 5000 # 整数宽*高像素小数帧面积百分比 (0.000001-0.99) max_area: 100000 min_ratio: 0.5 # 最小宽高比 max_ratio: 2.0 min_score: 0.5 # 开始跟踪的最低分数 threshold: 0.7 # 判定为真阳性的最低分数 mask: mask1: friendly_name: Object filter mask area enabled: true coordinates: 0.000,0.000,0.781,0.000,0.781,0.278,0.000,0.278 genai: # AI 生成跟踪对象描述 enabled: False use_snapshot: False # 用快照而非缩略图 prompt: Describe the {label} in the sequence of images with as much detail as possible. Do not describe the background. object_prompts: person: My special person prompt. objects: [person, cat] required_zones: [] # 限定仅对进入这些区域的对象生成 send_triggers: tracked_object_end: True after_significant_updates: None debug_save_thumbnails: False运行时实现要点frigate/config/config.py 中的RuntimeFilterConfigmin_area/max_area若写成小数百分比会在构造阶段通过convert_area_to_pixels()按帧尺寸换算为像素mask通过create_mask()栅格化为掩码矩阵参与过滤。verify_objects_track()会剔除 labelmap 中不存在的跟踪对象并给出警告。reviewReview 体系决定什么事件进入审查视图支持相机级覆盖详见 docs/docs/configuration/review.md。review: alerts: enabled: True labels: [car, person] cutoff_time: 40 # 无告警活动多少秒后截止 required_zones: [driveway] # 注意全局设置时该 zone 必须存在于所有相机 detections: enabled: True labels: [car, person] # 默认所有被跟踪/监听的标签 cutoff_time: 30 required_zones: [driveway] genai: # GenAI 审查摘要 enabled: False alerts: True detections: False activity_context_prompt: | Define what is and is not suspicious image_source: preview # preview~180p 缓存帧或 recordings480p更清晰更耗 token additional_concerns: [Animals in the garden] preferred_language: English debug_save_thumbnails: Falseverify_required_zones_exist()会校验required_zones必须在相机上真实定义否则启动报错。notificationsnotifications: enabled: False email: adminexample.com # 推送服务联系邮箱使用通知功能所必需 cooldown: 0 # 通知冷却时间秒除 email 外可在相机级覆盖完整用法见 docs/docs/configuration/notifications.md。存储层record 与 snapshotsrecord录像配置支持相机级覆盖完整说明见 docs/docs/configuration/record.md。record: enabled: False # 配置中关闭录像后UI/MQTT 再开启也无效 expire_interval: 60 # 清理运行间隔分钟减少 I/O 可调大 continuous: days: 0 # 无条件保留天数只保留告警/检测录像时设为 0 motion: days: 0 export: timelapse_args: -vf setpts0.04*PTS -r 30 # 默认把 24 小时压进 1 小时 hwaccel_args: auto # 缩时导出硬件加速 max_concurrent: 3 # 并发导出任务上限 preview: quality: medium # very_low / low / medium / high / very_high alerts: pre_capture: 5 # 告警前包含的秒数 post_capture: 5 retain: days: 10 mode: motion # all / motion / active_objects detections: pre_capture: 5 post_capture: 5 retain: days: 10 mode: motionretain.mode的三种取值语义all保存所有片段motion只保存含运动的片段active_objects只保存含活动/移动对象的片段。注意如果相机级 retain 模式更严格更宽松的全局模式不会找回已删除的片段。verify_recording_segments_setup_with_reasonable_time()会检查录像是用 preset 或设置了-segment_time且不超过 60 秒。snapshotssnapshots: enabled: False # 写入 /media/frigate/clips timestamp: False bounding_box: True crop: False height: 175 # 缩放高度默认原尺寸 required_zones: [] # 仅对进入这些区域的对象生成 retain: default: 10 objects: person: 15 quality: 60 # JPEG 质量 0-100智能识别层semantic_search、face_recognition、lpr、audio_transcription、classificationsemantic_searchsemantic_search: enabled: False reindex: False # 基于历史跟踪对象重建向量索引 model: jinav1 # 嵌入模型 model_size: small # small 跑 CPUlarge 跑 GPU device: None # ONNX Runtime execution provider实现位于 frigate/embeddings/含jinav1/jinav2、face_embedding、lpr_embedding等配套 docs/docs/configuration/semantic_search.md。face_recognitionface_recognition: enabled: False unknown_score: 0.8 # 标记为可能匹配的最低人脸距离分 detection_threshold: 0.7 # 人脸检测最低分非 Frigate 模型时生效 recognition_threshold: 0.9 # 判定为匹配的最低距离分 min_area: 500 # 可运行识别的最小人脸框面积 min_faces: 1 # 子标签生效所需的最少识别次数 save_attempts: 200 # 保存用于训练的人脸图像数量 blur_confidence_filter: True # 按模糊度调整置信度 model_size: small device: Noneenabled 与 min_area 可在相机级覆盖详见 docs/docs/configuration/face_recognition.md。lprlpr: enabled: False device: CPU model_size: small # 文本检测模型大小 detection_threshold: 0.7 # 车牌检测置信度 min_area: 1000 recognition_threshold: 0.9 # 识别置信度达标才写入子标签 min_plate_length: 4 # 最少字符数 format: None # 期望格式的正则 match_distance: 1 # 允许的缺失/错误字符数 known_plates: {} # 已知车牌字符串或正则 enhancement: 0 # 0-10 对比度/去噪增强更高不一定更好 debug_save_plates: False # 保存到 /media/frigate/clips/lpr replace_rules: # 识别后归一化 - pattern: O replacement: 0enabled、min_area、enhancement 可在相机级覆盖详见 docs/docs/configuration/license_plate_recognition.md。audio_transcription 与 classificationaudio_transcription: enabled: False # 实时与语音事件转录 device: CPU model_size: small language: en # Whisper 语言代码 classification: bird: enabled: False threshold: 0.9 # 鸟种分类最低分 custom: model_name: enabled: True name: None threshold: 0.8 save_attempts: None # 对象分类默认 200状态分类默认 100 object_config: objects: [dog] classification_type: sub_label state_config: cameras: camera_name: crop: [0.0, 0.25, 0.3, 0.85] # [x1,y1,x2,y2]相对 detect 分辨率的小数 motion: False interval: None # 分类运行间隔秒GenAI 提供商配置genai: my_provider: provider: ollama # ollama / openai / azure_openai / gemini / llamacpp base_url: http://localhost::11434 # ollama 必填openai 可用于兼容后端 api_key: {FRIGATE_GENAI_API_KEY} # gemini/openai 必填 model: gemini-1.5-flash roles: [chat, descriptions, embeddings] # 每个角色只能分配给一个提供商 provider_options: keep_alive: -1 runtime_options: temperature: 0.7参考文档明确警告取决于提供商缩略图会被发送到 Google 或 OpenAI 的 LLM室内相机可在相机级关闭 GenAI 特性以保护隐私。各提供商插件实现位于 frigate/genai/plugins/。输出与展示层birdseye、live、timestamp_style、go2rtc、uibirdseyebirdseye: enabled: True restream: False # 开启后 birdseye 7x24 运行CPU 略增 width: 1280 height: 720 quality: 8 # mpeg1 编码质量1 最高、31 最低 mode: objects # objects / motion / continuous inactivity_threshold: 30 # 相机无活动多少秒后移出视图 layout: scaling_factor: 2.0 # 布局计算缩放系数 1.0-5.0 max_cameras: 1 # 最多同时显示的相机数默认全部 idle_heartbeat_fps: 0.0 # 空闲时重发最后一帧的 FPSenabled 与 mode 可在相机级覆盖详见 docs/docs/configuration/birdseye.md。mode三种取值的判定objects为近 30 秒内有跟踪对象motion为近 30 秒内有运动continuous为始终包含全部相机。live 与 go2rtcgo2rtc: # 集成 go2rtc v1.9.14必须使用默认 API 端口 1984 live: streams: main_stream: main_stream_name # 多数情况只在相机级设置 sub_stream: sub_stream_name height: 720 # jsmpeg 流高度须 ≤ detect 流高度 quality: 8 # jsmpeg 编码质量 1-31go2rtc 负责直播流的拉取与转码端口不可更改详见 docs/docs/configuration/live.md 与 docs/docs/configuration/go2rtc.md。timestamp_style、ui、telemetry、camera_groups、profilestimestamp_style: position: tl # tl / tr / bl / br format: %m/%d/%Y %H:%M:%S # Python datetime 格式如德语 %d.%m.%Y %H:%M:%S color: {red: 255, green: 255, blue: 255} thickness: 2 effect: None # None / solid反色实底/ shadow ui: # timezone: America/Denver # 默认跟随浏览器时区 time_format: browser # browser / 12hour / 24hour unit_system: metric # imperial / metric影响 UI 与 MQTT 主题 telemetry: network_interfaces: [eth, enp, eno, ens, wl, lo] stats: amd_gpu_stats: True intel_gpu_stats: True intel_gpu_device: None # 按 SR-IOV 处理 GPU 以修正统计 network_bandwidth: False # 需要容器 privileged 或 cap_net_admin/cap_net_raw version_check: True # 关闭后 HA 集成将无法上报新版本 camera_groups: front: cameras: [front_cam, side_cam, front_doorbell_cam] icon: LuCar order: 0 profiles: home: friendly_name: Home away: friendly_name: Awaycamera_groups建议用 UI 创建。profiles定义具名配置覆盖供各相机在profiles段引用详见 docs/docs/configuration/profiles.md。相机级配置camerascameras是配置中唯一必填的顶层段FrigateConfig中cameras: dict[str, CameraConfig]没有默认值。cameras: back: enabled: True # 关闭后 ffmpeg 不启动、UI 隐藏相机管理除外重新启用需重启 type: generic # generic / lpr ffmpeg: inputs: - path: rtsp://viewer:{FRIGATE_RTSP_PASSWORD}10.0.10.10:554/cam/realmonitor?channel1subtype2 roles: [audio, detect, record] # audio / detect / record同时需在相机配置中启用对应功能 # global_args: # 流级覆盖默认继承全局 # hwaccel_args: # input_args: # global_args: # hwaccel_args: # input_args: # output_args: best_image_timeout: 60 # 最高分图像的超时时间 webui_url: # 系统页直达相机 Web UI 的链接 zones: front_steps: friendly_name: enabled: True # 禁用后完全忽略无对象跟踪、无调试绘制 coordinates: 0.033,0.306,0.324,0.138,0.439,0.185,0.042,0.428 distances: 10,15,12,11 # 四边真实世界距离用于速度估计按 zone 点顺序 inertia: 3 # 判定对象进入 zone 所需的连续帧数 loitering_time: 0 # 逗留多少秒才算在 zone 内 speed_threshold: 2.5 # 速度类 zone 触发的最小速度 objects: [person] filters: person: {min_area: 5000, max_area: 100000, threshold: 0.7} mqtt: # 通过 frigate/camera/object/snapshot 发布的快照 enabled: True timestamp: True bounding_box: True crop: True height: 270 quality: 70 required_zones: [] ui: order: 0 dashboard: True # 是否显示在 All Cameras 直播仪表盘 review: True # 是否出现在审查页面/过滤器/历史视图 onvif: # 启用 PTZ 控制 host: 0.0.0.0 # 默认 HTTPHTTPS 需写 scheme如 https://0.0.0.0 port: 8000 user: admin password: admin tls_insecure: False ignore_time_mismatch: False # 忽略相机与服务器时间差有安全风险 profile: None # 指定 ONVIF media profile按 token 或名称 autotracking: enabled: False calibrate_on_startup: False # 校准后会自动写入 movement_weights 并建议改回 False zooming: disabled # disabled / absolute / relative zoom_factor: 0.3 # 0.1-0.75越大放大越狠但越易丢失跟踪 track: [person] required_zones: [zone_name] # 对象进入这些 zone 开始自动跟踪必填 return_preset: home timeout: 10 # 跟踪结束后延迟返回预置位 movement_weights: [] # 校准自动生成勿手动修改 birdseye: order: 0 # Birdseye 视图排序 triggers: trigger_name: enabled: true friendly_name: Unique name or descriptive text type: thumbnail # thumbnail图像匹配/ description文本匹配 data: 1751565549.853251-b69j73 # 事件 ID 或文本 threshold: 0.8 actions: [notification] # notification / sub_label / attribute profiles: away: # 名称必须匹配顶层 profiles enabled: true audio: {enabled: true} detect: {enabled: true} notifications: {enabled: true} objects: {track: [person, car]} record: {enabled: true} review: {alerts: {labels: [person, car]}}源码级校验均位于 frigate/config/config.pyverify_config_roles()启用了record/audio但对应输入流未分配record/audio角色时直接报错verify_valid_live_stream_names()live.streams引用的流名必须存在于go2rtc.streamsverify_zone_objects_are_tracked()zone 里配置的对象必须同时出现在objects.trackverify_autotrack_zones()启用 autotracking 必须设置至少一个required_zonesverify_lpr_and_face()相机级开启 lpr/face_recognition 时全局级必须先开启verify_profile_overrides_match_base()profile 中引用的 zone 与 mask 必须已在基础相机配置中定义。相机、zone 与 PTZ 自动跟踪的深入用法分别见 docs/docs/configuration/cameras.md、docs/docs/configuration/zones.md 与 docs/docs/configuration/autotracking.md。全局与相机级配置的覆盖机制参考文档开头标注的可在相机级覆盖段落对应源码中的实现方式是CameraConfigfrigate/config/camera/camera.py内部持有与全局同构的AudioConfig、DetectConfig、MotionConfig、RecordConfig、ReviewConfig、SnapshotsConfig、NotificationConfig、BirdseyeCameraConfig、CameraLiveConfig、TimestampStyleConfig等字段相机配置解析后与全局配置合并。例如motion: MotionConfig Field(None, ...)允许相机级缺省运行时回落到全局motion配置。这意味着最佳实践是把绝大多数设置放在全局段统一维护仅在个别相机需要差异化时在cameras.name下覆盖这正是只写与默认值不同的项这一官方建议的落地方式。小结与排查指引Frigate 的配置体系可以归纳为三层全局服务段mqtt/auth/networking/tls/proxy/database/telemetry/ui→全局能力段detectors/model/detect/motion/objects/audio/record/snapshots/review等多数支持相机级覆盖→相机段cameras.name含 ffmpeg 输入流、zone、ONVIF、autotracking、triggers、profiles。配置错误通常在启动阶段即被 Pydantic 校验与verify_*系列函数拦截并给出明确报错信息如motion detection disabled and object detection enabled、required_zones must be set、record is not assigned to an input这为排障提供了极大便利。结合本文与仓库内 docs/docs/configuration/config.md、docs/docs/configuration/config_overrides.md 以及 frigate/config/config.py 源码你可以从抄配置进阶到理解配置精确掌控 Frigate 的每一个行为开关。【免费下载链接】frigateNVR with realtime local object detection for IP cameras项目地址: https://gitcode.com/GitHub_Trending/fr/frigate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表