Immich:硬件转码
这项功能可用 GPU 加速转码,降低 CPU 负载。注意:在类似设置下,硬件转码产生的视频通常比软件转码明显更大,画质往往也更低。使用较慢预设并优先选择效率更高的编解码器,可以缩小差距。这是一项较新的功能,仍处于实验阶段,可能无法适用于所有系统。
提示
启用硬件加速后,无须重做已有转码任务;之后运行的任务会使用加速设备。
支持的 API
• NVENC (NVIDIA)
• Quick Sync (Intel)
• RKMPP (Rockchip)
• VAAPI (AMD / NVIDIA / Intel)
限制
• 本文的说明和配置仅针对 Docker Compose,其他容器引擎可能需要不同配置。
• 只支持 Linux 服务器,以及通过 WSL2 运行的 Windows 服务器。
• WSL2 不支持 Quick Sync。
• 当前不支持 Raspberry Pi。
• 仅 NVENC 支持两遍转码模式,其他 API 会忽略这一设置。
• 默认只有编码使用硬件加速,解码和色调映射仍由 CPU 通过软件完成。
• 在视频转码设置中启用硬件解码,可获得端到端加速。
• 具体能力取决于硬件:
• 编解码器支持各不相同,但通常支持 H.264 和 HEVC。
• 尤其要注意,NVIDIA 和 AMD GPU 不支持 VP9 编码。
• 较新的设备通常有更高转码质量。
前提条件
NVENC
• 服务器必须安装 NVIDIA 官方驱动。
• 在 Linux(WSL2 除外)上,还必须安装 NVIDIA Container Toolkit。
QSV
• 使用 VP9 时:
• 必须使用第 9 代或更新的 Intel CPU。
• 第 11 代及更早的 CPU 需要低功耗模式,可能必须按 Jellyfin 的说明 配置。
• 特别是第 11 代 CPU,如果运行内核 5.15(Ubuntu 22.04 LTS 随附),需要按 Jellyfin 文档 升级内核。
RKMPP
使用 RKMPP 时:
• 必须有受支持的 Rockchip ARM SoC。
• 只有 RK3588 支持硬件色调映射,其他 SoC 使用较慢的软件色调映射,但仍使用硬件编码。
• 色调映射要求宿主机存在 /usr/lib/aarch64-linux-gnu/libmali.so.1。安装匹配 Mali GPU 的 \u00001\u0000 版本(RK3588 使用 libmali-valhall-g610-g13p0-gbm),并修改 \u00003\u0000:
• 在 rkmpp 下,去掉以下三行开头的 #,启用 OpenCL 色调映射所需挂载:
• - /dev/mali0:/dev/mali0
• - /etc/OpenCL:/etc/OpenCL:ro
• - /usr/lib/aarch64-linux-gnu/libmali.so.1:/usr/lib/aarch64-linux-gnu/libmali.so.1:ro
设置
基本设置
• 若尚未下载,请下载最新的 \u00000\u0000,确保与 docker-compose.yml 放在同一目录。
• 在 docker-compose.yml 的 immich-server 下,取消 extends 部分的注释,并把 cpu 改为合适的后端。
注意:在 WSL2 上使用 VAAPI 时,应选择 vaapi-wsl,而不是 vaapi。
• 使用更新后的设置重新部署 immich-server 容器。
• 在管理页面的“Video transcoding settings”中,将硬件加速设置改为合适选项并保存。
注意:Jasper Lake 和 Elkhart Lake CPU 需要把“Hardware Acceleration”→“Constant quality mode”设为 CQP。
• 可选:启用硬件解码,获得最佳性能。
immich.json
若使用配置文件,用 accel 选择硬件(例如 Intel 使用 qsv,NVIDIA 使用 nvenc);需要硬件解码时,把 accelDecode 设为 true。
{
"ffmpeg": {
"accel": "qsv",
"accelDecode": true
}
}
单一 Compose 文件
截至原文撰写时,包括 Unraid 和 Portainer 在内的一些平台不支持多个 Compose 文件。可以把 hwaccel.transcoding.yml 中相关内容直接内联到 immich-server 服务。
例如,该文件中的 qsv 部分是:
devices:
- /dev/dri:/dev/dri
可以把这段配置直接加到 immich-server 服务,而不从 hwaccel.transcoding.yml 扩展:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
# Note the lack of an `extends` section
devices:
- /dev/dri:/dev/dri
volumes:
...
完成后,从“基本设置”的第 3 步继续。
All-In-One:Unraid 设置
QSV
• 打开 Unraid → Docker,停止 Immich 容器,选择 Edit。
• 向下滚动,选择 Add another Path, Port, Variable, Label or Device。
• 下拉菜单选择 Device,名称可自定,值设为 /dev/dri。
• 从“基本设置”的第 4 步继续。
NVENC
• 在容器应用中添加环境变量:键 NVIDIA_VISIBLE_DEVICES,值 all。
• 仍在容器应用中,把 Basic Mode 改为 Advanced Mode,在 Extra Parameters 中添加 --runtime=nvidia。
• 重启容器应用。
• 从“基本设置”的第 4 步继续。
建议
• 为维持画质和效率,硬件转码可能需要比软件转码更慢的预设。
• NVIDIA 和 Intel 也可以使用 VAAPI,但优先采用各自专用 API,因为其优化更有针对性。
• 转码时检查设备利用率,可确认设备被识别并使用,例如 NVIDIA 使用 nvtop、Intel 使用 intel_gpu_top。转码时没有错误日志,也可作为设备正在使用的迹象。
来源:Hardware Transcoding。Immich 官方文档及贡献者;原文最后更新于 2026-09-28。
遵循 GNU AGPL 3.0。本稿翻译官方说明并保留配置示例。











暂无评论内容