入门
设置硬件
本部分将指导您使用 Debian Bookworm 和 Docker 设置服务器。如果你已经有安装了 Linux 和 Docker 的环境,可以继续以下的安装 Frigate。
安装 Debian 12 (Bookworm)
有很多关于如何安装 Debian Server 的指南,因此这将是一个简短的指南。将临时显示器和键盘连接到您的设备,以便您可以在没有桌面环境的情况下安装最小的服务器。
准备安装介质
- 从Debian 网站下载小型安装映像
- 将ISO写入到USB设备(流行的工具是 balena Etcher)
- 从USB启动您的设备
安装并设置 Debian 以进行远程访问
- 确保您的设备已连接到网络,以便安装更新和软件选项
- 如果您没有连接鼠标,请选择非图形安装选项,但这两种安装方法都可以正常工作
- 系统会提示您设置 root 用户密码并创建一个带有密码的用户
- 安装最低限度的软件。较少的依赖关系会减少维护。
- 取消选中“Debian 桌面环境”和“GNOME”
- 勾选“SSH 服务器”
- 选中“标准系统实用程序”
- 重新启动后,在命令提示符处以 root 身份登录,将用户添加到 sudoers
- 安装 sudo
apt update && apt install -y sudo
- 将您创建的用户添加到sudo组(将
blake
更改为您自己的用户)usermod -aG sudo blake
- 安装 sudo
- 通过运行
poweroff
关机
此时,您可以将设备安装在固定位置。其余步骤可以通过 SSH 从另一台设备执行。如果没有 SSH 客户端,可以安装 Visual Studio Code 文档中列出的选项之一。
通过 SSH 完成安装
-
通过 SSH 连接并使用安装期间创建的非root 用户登录
-
设置无密码 sudo,这样您就不必为每个 sudo 命令输入密码(将下面命令中的
blake
更改为您的用户)echo 'blake ALL=(ALL) NOPASSWD:ALL' | sudo tee /etc/sudoers.d/user
-
注销并再次登录以激活无密码 sudo
-
设置操作系统的自动安全更新(可选)
- 通过运行确保一切都是最新的
sudo apt update && sudo apt upgrade -y
- 安装无人值守升级
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
- 使用官方文档安装 Docker Engine(不是 Docker Desktop )
- 具体来说,请按照Install using the apt repository部分中的步骤进行操作
- 按照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 extension的Visual 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步:完成配置
至此,你就拥有了一个具备基本功能的完整配置。您可以查看完整的配置参考,了解配置选项的完整列表。
后续工作
现在您已经完成了有效的安装,您可以使用以下指南来获取其它功能:
- 配置 go2rtc - 附加实况视图选项和RTSP中继
- Home Assistant 集成 - 与Home Assistant集成
- 遮罩
- 防区