7.9 KiB
| id | title |
|---|---|
| hardware_acceleration | 硬件加速 |
硬件加速
强烈建议在Frigate中使用GPU进行硬件加速。某些类型的硬件加速会被自动检测并使用,但您可能需要更新配置以在ffmpeg中启用硬件加速解码。
根据您的系统,这些参数可能不兼容。更多关于ffmpeg硬件加速解码的信息请参考:https://trac.ffmpeg.org/wiki/HWAccelIntro
官方支持
树莓派3/4
确保为GPU分配至少128MB内存(通过raspi-config > 性能选项 > GPU内存设置)。
如果使用Home Assistant插件,可能需要使用完全访问版本并关闭"保护模式"以启用硬件加速。
# 解码h264流
ffmpeg:
hwaccel_args: preset-rpi-64-h264
# 解码h265(hevc)流
ffmpeg:
hwaccel_args: preset-rpi-64-h265
:::note
如果通过Docker运行Frigate,需要以特权模式运行或将/dev/video*设备映射到Frigate。使用Docker Compose添加:
services:
frigate:
...
devices:
- /dev/video11:/dev/video11
或使用docker run:
docker run -d \
--name frigate \
...
--device /dev/video11 \
ghcr.io/blakeblackshear/frigate:stable
/dev/video11是正确的设备(树莓派4B)。可以通过以下命令检查:
for d in /dev/video*; do
echo -e "---\n$d"
v4l2-ctl --list-formats-ext -d $d
done
或者映射所有/dev/video*设备。
:::
Intel显卡
:::info
推荐硬件加速预设
| CPU代数 | Intel驱动 | 推荐预设 | 说明 |
|---|---|---|---|
| 1-7代 | i965 | preset-vaapi | 不支持qsv |
| 8-12代 | iHD | preset-vaapi | 也可使用preset-intel-qsv-* |
| 13代+ | iHD/Xe | preset-intel-qsv-* | |
| Intel Arc显卡 | iHD/Xe | preset-intel-qsv-* |
:::
:::note
默认驱动是iHD。如需要改为i965驱动,可能需要通过添加环境变量LIBVA_DRIVER_NAME=i965(在docker-compose文件中或HA插件的config.yml中)。
参考Intel文档确认您的CPU是第几代的。
:::
通过VAAPI
VAAPI支持自动配置文件选择,可自动处理H.264和H.265流。
ffmpeg:
hwaccel_args: preset-vaapi
通过QuickSync
:::warning
部分用户反馈使用preset-intel-qsv-*可能无法正常启动Frigate,这种情况建议使用VAAPI
:::
H.264流
ffmpeg:
hwaccel_args: preset-intel-qsv-h264
H.265流
ffmpeg:
hwaccel_args: preset-intel-qsv-h265
Docker中配置Intel GPU统计
需要额外配置才能使Docker容器访问intel_gpu_top命令获取GPU统计信息。有两种方法:
- 以特权模式运行容器
- 添加
CAP_PERFMON能力(注意:可能需要降低perf_event_paranoid值)
特权模式运行
这种方法有效但会赋予容器过多权限。
Docker Compose - 特权模式
services:
frigate:
...
privileged: true
Docker Run CLI - 特权模式
docker run -d \
--name frigate \
...
--privileged \
ghcr.io/blakeblackshear/frigate:stable
CAP_PERFMON
只有较新版本的Docker支持CAP_PERFMON能力。可通过运行测试:docker run --cap-add=CAP_PERFMON hello-world
Docker Compose - CAP_PERFMON
services:
frigate:
...
cap_add:
- CAP_PERFMON
Docker Run CLI - CAP_PERFMON
docker run -d \
--name frigate \
...
--cap-add=CAP_PERFMON \
ghcr.io/blakeblackshear/frigate:stable
perf_event_paranoid
注意:此设置需针对整个系统修改。
关于不同发行版的值,参考:https://askubuntu.com/questions/1400874/what-does-perf-paranoia-level-four-do
临时修改(重启后失效):
sudo sh -c 'echo 2 >/proc/sys/kernel/perf_event_paranoid'
永久修改:
sudo sh -c 'echo kernel.perf_event_paranoid=2 >> /etc/sysctl.d/local.conf'
SR-IOV设备统计
使用SR-IOV虚拟化GPU时,需要额外参数才能使GPU统计正常工作:
telemetry:
stats:
sriov: True
AMD/ATI显卡(Radeon HD 2000及更新)
VAAPI支持自动配置文件选择,可自动处理H.264和H.265流。
:::note
需要通过环境变量LIBVA_DRIVER_NAME=radeonsi将驱动改为radeonsi(在docker-compose文件中或HA插件的config.yml中)。
:::
ffmpeg:
hwaccel_args: preset-vaapi
NVIDIA显卡
建议使用现代支持的GPU。NVIDIA提供了支持的GPU和功能矩阵。如果您的显卡在列表中且支持CUVID/NVDEC,则很可能可用于解码。但必须使用与FFmpeg兼容的驱动版本。
更完整的显卡和驱动兼容列表见驱动发布说明。
Docker中配置NVIDIA显卡
需要安装NVIDIA容器工具包并指定GPU。
Docker Compose - NVIDIA显卡
services:
frigate:
...
deploy:
resources:
reservations:
devices:
- driver: nvidia
device_ids: ['0'] # 仅需在多GPU时指定
count: 1 # GPU数量
capabilities: [gpu]
Docker Run CLI - NVIDIA显卡
docker run -d \
--name frigate \
...
--gpus=all \
ghcr.io/blakeblackshear/frigate:stable
设置解码器
使用preset-nvidia时,ffmpeg会自动选择适合的配置文件,如果不支持会记录错误。
ffmpeg:
hwaccel_args: preset-nvidia
验证硬件解码是否工作,运行nvidia-smi应显示ffmpeg进程:
:::note
由于Docker限制,nvidia-smi在容器内运行时可能不显示ffmpeg进程。
:::
这些说明基于Jellyfin文档。
社区支持
NVIDIA Jetson系列
提供基于Jetpack/L4T的专用Docker镜像,包含使用Jetson专用媒体引擎的ffmpeg构建。Jetpack 6.0+主机使用stable-tensorrt-jp6标签镜像。注意Orin Nano没有视频编码器,将使用软件编码。
Docker Run CLI - Jetson
docker run -d \
...
--runtime nvidia
ghcr.io/blakeblackshear/frigate:stable-tensorrt-jp6
Docker Compose - Jetson
services:
frigate:
...
image: ghcr.io/blakeblackshear/frigate:stable-tensorrt-jp6
runtime: nvidia
:::note
旧版docker-compose不支持runtime:标签。可改为在/etc/docker/daemon.json中添加"default-runtime": "nvidia":
{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
},
"default-runtime": "nvidia"
}
:::
设置解码器
根据输入视频选择解码器(在容器内运行ffmpeg -decoders | grep nvmpi查看支持的解码器):
ffmpeg:
hwaccel_args: preset-jetson-h264
验证硬件解码是否工作,运行jtop(sudo pip3 install -U jetson-stats)应显示NVDEC/NVDEC1在使用。
Rockchip平台
所有Rockchip SoC都支持使用Nyanmisaka的FFmpeg 6.1分支进行硬件加速编解码。
前提条件
按照Rockchip特定安装说明操作。
配置
在config.yml中添加以下预设之一:
# 解码h264流
ffmpeg:
hwaccel_args: preset-rk-h264
# 解码h265(hevc)流
ffmpeg:
hwaccel_args: preset-rk-h265
:::note
确保您的SoC支持输入流的硬件加速。例如,如果摄像头以h265编码和4K分辨率流式传输,您的SoC必须能够以4K或更高分辨率编解码h265。如果不确定,请查阅SoC数据手册。
:::