专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

为何 Frigate 智能监控摄像头如此流行?

ins518 2025-05-10 22:25:01 技术文章 2 ℃ 0 评论

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!

什么是 Frigate

Frigate 是专为家庭助理设计的完整本地 NVR(Network Video Recorder),具有 AI 对象检测功能, 使用 OpenCV 和 Tensorflow 在本地为 IP 摄像机执行实时目标检测。

Google Coral 加速器可选,但官方强烈建议使用, CPU 检测只能用于测试目的。 Coral 的性能甚至优于最好的 CPU,并且可以以很少的开销处理 100+ FPS。

Frigate 是一个 Docker 容器,可以在任何 Docker 上运行,包括作为 HassOS 插件运行。请注意,家庭助理插件与集成不同。将 Frigate 集成到 Home Assistant 中需要进行集成。

Frigate 具有以下突出特点:

  • 通过自定义组件与 Home Assistant 紧密集成
  • 旨在通过仅在必要时间和地点查找对象来最大限度减少资源使用并最大限度地提高性能
  • 大量利用多重处理(Multiprocessing),强调实时性而不是处理每一帧
  • 使用非常低开销的运动检测(Motion Detection)来确定在何处运行对象检测
  • 使用 TensorFlow 进行对象检测在单独的进程中运行,以实现最大 FPS
  • 通过 MQTT 进行通信,以便轻松集成到其他系统中。MQTT 代理对于 Frigate 来说是可选的,但对于 Home Assistant 集成是必需的。如果使用 Home Assistant,Frigate 和 Home Assistant 必须连接到同一个 MQTT 代理。
  • 根据检测到的物体进行保留记录
  • 通过 RTSP 重新串流以减少与摄像机的连接数量,RTSP(而不是 RTMP)中继支持与其他消费者一起使用,以减少相机流的连接数量
  • 支持实时查看 WebRTC 和 MSE 来实现低延迟,WebRTC 或 MSE 用于实时观看,比 jsmpeg 流具有更高的分辨率和帧速率,jsmpeg 流仅限于检测流。

输出 H.264 视频和 AAC 音频的摄像机将提供与 Frigate 和 Home Assistant 的所有功能的最大兼容性。 如果相机支持多个子流以允许使用不同的分辨率进行检测、流式传输和录制而无需重新编码,这也会很有帮助。推荐大华、海康威视、Amcrest。

目前 Frigate 在 Github 上通过 MIT 协议开源,有超过 12.4k 的 star、1.4k 的 fork、代码贡献者 200+,是一个值得关注的前端开源项目。

如何使用 Frigate

第 1 步:添加检测流

首先将为相机添加检测流:

mqtt:
  enabled: False

cameras:
  name_of_your_camera: # <------ Name the camera
    ffmpeg:
      inputs:
        - path: rtsp://10.0.10.10:554/rtsp # <----- The stream you want to use for detection
          roles:
            - detect
    detect:
      enabled: False # <---- disable detection until you have a working camera feed
      width: 1280 # <---- update for your camera's resolution
      height: 720 # <---- update for your camera's resolution

第二步:启动 Frigate

此时可以启动 Frigate 并在 UI 中看到视频源。

如果从摄像头收到错误图像,则意味着 ffmpeg 无法从摄像头获取视频源, 检查日志中包含来自 ffmpeg 的错误消息。 默认 ffmpeg 参数旨在与支持 TCP 连接的 H264 RTSP 摄像机配合使用。

其他类型相机的 FFmpeg 参数可以在
https://docs.frigate.video/configuration/camera_specific / 找到。

步骤 3:配置硬件加速(推荐)

现在已经有了可用的摄像头配置,需要设置硬件加速以最大限度地减少解码视频流所需的 CPU 资源。

以下是使用预设为具有集成 GPU 的 Intel 处理器配置硬件加速的示例配置:

mqtt: ...

cameras:
  name_of_your_camera:
    ffmpeg:
      inputs: ...
      hwaccel_args: preset-vaapi
    detect: ...

第 4 步:配置检测器

默认情况下,Frigate 将使用单 CPU 探测器。 如果有 USB Coral,则需要在配置中添加检测器部分。

mqtt: ...

detectors: # <---- add detectors
  coral:
    type: edgetpu
    device: usb

cameras:
  name_of_your_camera:
    ffmpeg: ...
    detect:
      enabled: True # <---- turn on detection
      ...

第 5 步:启用录制和 / 或快照

为了在 Frigate UI 中查看事件,需要启用快照或记录。

要启用录制视频,可以将录制角色添加到流并在配置中启用。 如果配置中禁用了记录,则通过 UI 将其打开不会产生任何效果。

mqtt: ...

detectors: ...

cameras:
  name_of_your_camera:
    ffmpeg:
      inputs:
        - path: rtsp://10.0.10.10:554/rtsp
          roles:
            - detect
        - path: rtsp://10.0.10.10:554/high_res_stream # <----- Add stream you want to record from
          roles:
            - record
    detect: ...
    record: # <----- Enable recording
      enabled: True
    motion: ...

如果没有单独的流用于检测和记录,只需将记录角色添加到第一个输入的列表中。默认情况下,Frigate 会将所有事件的视频保留 10 天。 可以在
https://docs.frigate.video/configuration/#
full-configuration-reference 找到完整的录制选项集。

为了启用事件快照,只需在配置中启用即可。 快照是从检测流中获取的,因为它是唯一已解码的流。

mqtt: ...

detectors: ...

cameras:
  name_of_your_camera: ...
    detect: ...
    record: ...
    snapshots: # <----- Enable snapshots
      enabled: True
    motion: ...

默认情况下,Frigate 将保留所有事件的快照 10 天。

参考资料

https://github.com/blakeblackshear/frigate

https://frigate.video/

https://docs.frigate.video/frigate/hardware

https://docs.frigate.video/frigate/installation

https://docs.frigate.video/guides/configuring_go2rtc

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表