跳到主要内容

入门

设置硬件

本部分将指导您使用 Debian Bookworm 和 Docker 设置服务器。如果你已经有安装了 Linux 和 Docker 的环境,可以继续以下的安装 Frigate

安装 Debian 12 (Bookworm)

有很多关于如何安装 Debian Server 的指南,因此这将是一个简短的指南。将临时显示器和键盘连接到您的设备,以便您可以在没有桌面环境的情况下安装最小的服务器。

准备安装介质

  1. Debian 网站下载小型安装映像
  2. 将ISO写入到USB设备(流行的工具是 balena Etcher)
  3. 从USB启动您的设备

安装并设置 Debian 以进行远程访问

  1. 确保您的设备已连接到网络,以便安装更新和软件选项
  2. 如果您没有连接鼠标,请选择非图形安装选项,但这两种安装方法都可以正常工作
  3. 系统会提示您设置 root 用户密码并创建一个带有密码的用户
  4. 安装最低限度的软件。较少的依赖关系会减少维护。
    1. 取消选中“Debian 桌面环境”和“GNOME”
    2. 勾选“SSH 服务器”
    3. 选中“标准系统实用程序”
  5. 重新启动后,在命令提示符处以 root 身份登录,将用户添加到 sudoers
    1. 安装 sudo
      apt update && apt install -y sudo
    2. 将您创建的用户添加到sudo组(将 blake 更改为您自己的用户)
      usermod -aG sudo blake
  6. 通过运行 poweroff 关机

此时,您可以将设备安装在固定位置。其余步骤可以通过 SSH 从另一台设备执行。如果没有 SSH 客户端,可以安装 Visual Studio Code 文档中列出的选项之一。

通过 SSH 完成安装

  1. 通过 SSH 连接并使用安装期间创建的非root 用户登录

  2. 设置无密码 sudo,这样您就不必为每个 sudo 命令输入密码(将下面命令中的 blake 更改为您的用户)

    echo 'blake    ALL=(ALL) NOPASSWD:ALL' | sudo tee /etc/sudoers.d/user
  3. 注销并再次登录以激活无密码 sudo

  4. 设置操作系统的自动安全更新(可选)

    1. 通过运行确保一切都是最新的
      sudo apt update && sudo apt upgrade -y
    2. 安装无人值守升级
      sudo apt install -y unattended-upgrades
      echo unattended-upgrades unattended-upgrades/enable_auto_updates boolean true | sudo debconf-set-selections
      sudo dpkg-reconfigure -f noninteractive unattended-upgrades

现在您拥有了一个最小的 Debian 服务器,只需很少的维护。

安装 Docker

  1. 使用官方文档安装 Docker Engine(不是 Docker Desktop )
    1. 具体来说,请按照Install using the apt repository部分中的步骤进行操作
  2. 按照Linux postinstall steps中的说明将您的用户添加到docker组

安装 Frigate

本节介绍如何为 Debian 上的 Docker 安装创建最小的目录结构。如果您已经完成将 Frigate 作为 Home Assistant 插件或其他方式的安装,您可以继续配置 Frigate

设置目录

Frigate 需要有效的配置文件才能启动。以下目录结构是入门的最低限度。Frigate 运行后,您可以使用支持配置验证的内置配置编辑器。

.
├── docker-compose.yml
├── config/
│ └── config.yml
└── storage/

这将创建上述结构:

mkdir storage config && touch docker-compose.yml config/config.yml

如果您通过 SSH 在 Linux 设备上设置 Frigate,则可以使用nano 编辑以下文件。如果您更喜欢使用完整的编辑器而不是终端来编辑远程文件,我建议使用带有Remote SSH extensionVisual Studio Code

备注

docker-compose.yml 文件只是 amd64 设备的启动器。您需要根据安装文档中的详细信息对它进行自定义设置。

docker-compose.yml

version: "3.9"
services:
frigate:
container_name: frigate
restart: unless-stopped
image: frigate:latest
volumes:
- ./config:/config
- ./storage:/media/frigate
- type: tmpfs # Optional: 1GB of memory, reduces SSD/SD Card wear
target: /tmp/cache
tmpfs:
size: 1000000000
ports:
- "5000:5000"
- "8554:8554" # RTSP feeds

config.yml

mqtt:
enabled: False

cameras:
dummy_camera: # <--- this will be changed to your actual camera later
enabled: False
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:554/rtsp
roles:
- detect

现在您应该能够通过从包含 docker-compose.yml 的文件夹中运行 docker compose up -d 来启动 Frigate。现在应该可以通过 server_ip:5000 访问 Frigate,并且您可以使用内置的配置编辑器来完成配置。

配置 Frigate

本节假设您已经按照安装中所述进行了环境设置。您还应该根据摄像机设置指南配置摄像机。请特别注意选择检测分辨率的部分。

第1步:添加检测流

首先我们将为摄像机添加检测流:

mqtt:
enabled: False

cameras:
name_of_your_camera: # <------ Name the camera
enabled: True
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

第2步:启动 Frigate

此时,您应该能够启动 Frigate 并在 UI 中看到视频画面。

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

其他类型摄像机的 FFmpeg 参数可以在这里找到。

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

现在您已经有了可用的摄像机配置,您需要设置硬件加速以最大限度地减少解码视频流所需的 CPU 资源。请参阅硬件加速配置参考,了解适用于您的硬件的示例。

下面是一个集成了GPU硬件加速的英特尔处理器配置示例,并使用预设进行配置:

docker-compose.yml(修改后,需要运行 docker compose up -d 来应用更改)

version: "3.9"
services:
Frigate:
...
devices:
- /dev/dri/renderD128 # for intel hwaccel, needs to be updated for your hardware
...

config.yml

mqtt: ...

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

第4步:配置检测器

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

docker-compose.yml(修改后,需要运行 docker compose up -d 来应用更改)

version: "3.9"
services:
Frigate:
...
devices:
- /dev/bus/usb:/dev/bus/usb # passes the USB Coral, needs to be modified for other versions
- /dev/apex_0:/dev/apex_0 # passes a PCIe Coral, follow driver instructions here https://coral.ai/docs/m2/get-started/#2a-on-linux
...
mqtt: ...

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

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

有关可用检测器的更多详细信息,请参见 这里.

重新启动 Frigate,您应该开始看到 'person' 检测。如果您想跟踪其他目标,则需要根据配置文件参考添加它们。

第5步:设置动态遮罩

现在您已经优化了解码视频流的配置,您将需要检查在哪里实现动态遮罩。为此,请导航到用户界面中的摄像机,选择顶部的“调试”,然后在视频画面下方的选项中启用“动态框”。留意持续触发检测到的不需要的动态区域。需要遮盖的常见区域包括摄像机时间戳和经常被风吹动的树木。目的是避免在这些区域上浪费目标检测周期。

现在您知道需要遮罩的位置,请使用选项窗格中的“创建遮罩&防区”来生成配置文件所需的坐标。有关遮罩的更多信息可以这里找到。

警告

请注意,动态遮罩不应用于标记您不希望检测到目标的区域或减少误报。它们不会改变发送到目标检测的图像,因此您仍然可以在具有动态遮罩的区域中获取事件和检测。这些只会阻止那些区域中的动态触发目标检测。

您的配置现在应该类似于此。

mqtt:
enabled: False

detectors:
coral:
type: edgetpu
device: usb

cameras:
name_of_your_camera:
ffmpeg:
inputs:
- path: rtsp://10.0.10.10:554/rtsp
roles:
- detect
motion:
mask:
- 0,461,3,0,1919,0,1919,843,1699,492,1344,458,1346,336,973,317,869,375,866,432

第6步:启用录像/抓拍

为了在 Frigate 用户界面中查看事件,需要启用抓拍或录像。

录像

要启用视频录制,请将 record 职能添加到流并在配置中启用它。如果配置中禁用了录像,则在用户界面开关中打开它不会有任何效果。

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天。可以在此处找到完整的录像选项配置。

抓拍

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

mqtt: ...

detectors: ...

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

默认情况下 Frigate 会将所有事件的抓拍保留10天。可以在此处找到完整的抓拍选项配置。

第7步:完成配置

至此,你就拥有了一个具备基本功能的完整配置。您可以查看完整的配置参考,了解配置选项的完整列表。

后续工作

现在您已经完成了有效的安装,您可以使用以下指南来获取其它功能:

  1. 配置 go2rtc - 附加实况视图选项和RTSP中继
  2. Home Assistant 集成 - 与Home Assistant集成
  3. 遮罩
  4. 防区