本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
AMD显卡硬件加速教程
本教程将指导您通过AMF或VA-API在AMD集成显卡和独立 显卡上设置完整的视频硬件加速。若您使用macOS,请改用VideoToolbox。
加速方法
自GCN架构起,AMD显卡开始支持硬件加速转码。
在Windows系统中,AMF是唯一可用方案。
在Linux系统中有两种方案:
-
VA-API - 所有GPU的首选方案,在Polaris(RX400/500)及以上架构GPU中支持完整加速,开源实现。
-
AMF - 不推荐使用,支持有限,仅提供硬件编码功能,闭源实现。
Windows系统中的AMF接口基于DXVA/D3D11VA开发,而Linux系统则基于AMD专业版Vulkan和OpenCL堆栈(闭源方案)。我们仅在Windows平台为其提供完整的硬件加速支持。
Linux系统中的VA-API接口采用开源实现。该开放驱动栈遵循Intel的Libva标准,并通过Mesa的Gallium RadeonSI驱动暴露视频硬件能力。得益于RADV Vulkan驱动的开发者,我们可在Polaris+架构GPU上实现VA-API与Vulkan的互操作,从而利用Vulkan计算在Linux系统实现完整的硬件加速。
- 与NVIDIA NVENC不同,AMD显卡没有并发编码会话数量限制
- AMF和VA-API在Windows/Linux系统均支持无头服务器运行(无需连接显示器)
色调映射方法
所有支持HEVC 10-bit解码的AMD显卡均支持硬件加速的HDR/DV到SDR色调映射。
在Windows/Linux平台可选用两种方案,优缺点如下:
-
OpenCL
- 优点 - 支持杜比视界P5,提供精细调优选项,硬件兼容性广。
- 缺点 - Linux系统不支持零拷贝。
-
Vulkan
- 优点 - 支持杜比视界P5,使用libplacebo渲染器,无需ROCm OpenCL运行时。
- 缺点 - 仅限Linux系统,零拷贝仅支持Polaris+架构GPU。
选择GPU硬件
初学者请参考硬件选择指南获取选购建议, 高级用户请继续阅读本节内容。
多数AMD独立显卡配备视频编码器,但请注意特定型号——RX 6400/6500系列不具备视频编码器
AMD锐龙APU(后缀为G/GE/H/HS/HX的型号)及基于Zen 4架构的处理器均搭载集成显卡。
选购用于硬件加速的GPU前,建议通过AMD产品规格页面确认视频编解码支持情况。
转码H.264
AVC/H.264 8-bit因其出色的兼容性仍被广泛使用。所有支持AMF或VA-API的AMD显卡均可进行编解码。
- H.264 8-bit编解码 - 所有支持AMF或VA-API的AMD显卡
转码HEVC
HEVC/H.265 仍然是存储4K 10-bit、HDR和杜比视界视频的首选格式。得益于x265成熟的软件编码支持,以及2016年后发 布的大多数GPU广泛实现的硬件编码支持。
AMD对HEVC的支持情况较为复杂:
-
HEVC 8-bit解码 - Radeon R9 Fury及以上(Fiji架构)
-
HEVC 8-bit编码 - Radeon RX 400系列(Polaris)及以上
-
HEVC 10-bit解码 - Radeon RX 400系列(Polaris)及以上
-
HEVC 10-bit编码 - Ryzen 4000系列APU(Renoir)、Radeon RX 5000系列(Navi 1x)及以上
AV1转码支持
AV1是免版税的未来视频编解码器。其更小的文件尺寸能显著节省存储空间和网络带宽,但缺点是编解码对CPU要求极高。硬件加速使得实时转码AV1流成为可能。AV1编码功能在Jellyfin 10.9及以上版本提供支持。
AMD在其最新GPU中增加了AV1加速支持:
-
AV1 8/10-bit解码 - Radeon RX 6000系列(Navi 2x)、Ryzen 6000移动版APU及以上(RX 6400/6500除外)
-
AV1 8/10-bit编码 - Radeon RX 7000系列(Navi 3x)、Ryzen 7000/8000系列、AI 7/9 HX移动版APU、Ryzen 8000G桌面版APU及以上
其他编解码器支持
请参考以下资源:
速度与画质表现
由于缺乏B帧支持,AMD H.264硬件编码器的画质表现一直不尽如人意。虽然RX 6000/VCN3.0重新支持了B帧,但画质提升有限。
AMD HEVC编码器的表现远优于H.264编码器,而RX 7000/VCN4.0新增的AV1编码支持有望改变AMD的编码画质现状。不过目前仍无法匹敌Intel QSV和NVIDIA NVENC。VCN4.0大幅提升了编码速度,VCN5.0则显著改善了画质表现,并修复了VCN4.0中AV1编码器要求高度为64像素对齐的问题(例如1080p错误编码为带黑边的1082p)。
编码速度与画质排序:
VCN5(RX 9000) >> VCN4(RX 7000) > VCN3/VCN2(RX 6000/RX 5000/Renoir) > VCN1/VCE(Raven/Picasso/GCN架构GPU)
Windows环境配置
推荐使用Windows 10 64位及以上系统。Windows Docker和WSL/WSL2不支持AMF加速。
Windows平台已知问题与限制
请参阅此章节了解已知问题和限制。
Windows主机配置步骤
-
若您从非GCN架构的AMD GPU升级且未重装系统,请使用DDU彻底卸载旧驱动。
-
从 AMD 驱动程序与支持 全新安装最新版驱动程序。
-
禁止 Windows 远程桌面会话抢占 GPU 资源:
- 通过 Win+R 快捷键调出运行对话框,输入
gpedit.msc打开"本地组策略编辑器" - 在左侧导航树定位至 [计算机配置 > 管理模板 > Windows 组件]
- 在此处找到 [远程桌面服务 > 远程桌面会话主机 > 远程会话环境]
- 双击右侧面板的 [为所有远程桌面服务会话使用硬件图形适配器]
- 在弹出窗口中选择 [已禁用] 并点击 [确定],随后重启系统

- 通过 Win+R 快捷键调出运行对话框,输入
-
在 Jellyfin 中启用 AMF 加速,并取消勾选不支持的编解码器。
Windows 环境验证
-
在 Jellyfin Web 客户端播放视频,通过降低分辨率或 码率触发视频转码。
-
打开"任务管理器"并切换到 GPU 页面。
-
按以下方式检查各引擎占用率:
备注重复的引擎名称表示GPU可能配备多个视频处理引擎
- 3D - 2D/3D图形或GPGPU计算负载
- Copy - 位块传输/拷贝引擎负载
- Video Codec - 视频编解码器负载
- Video Decode - 视频解码器负载
- Video Encode - 视频编码器负载
- Compute - GPGPU计算负载

Linux 环境配置
需使用 64 位 Linux 发行版。支持的 GPU 型号取决于内核与固件版本。
Linux 平台已知问题与限制
请参阅 此章节 了解已知问题与功能限制。
Linux 主机配置指南
Debian/Ubuntu 系统
Jellyfin 所需的 jellyfin-ffmpeg* deb 包已包含所有必要的用户态 Mesa 驱动。
此外只需配置 jellyfin 用户的设备访问权限。
需要 root 权限。
-
假设您已添加 Jellyfin 仓库至 apt 源列表,并安装了
jellyfin-server和jellyfin-web。 -
安装
jellyfin-ffmpeg7软件包。若存在冲突依赖可移除废弃的jellyfin元包:sudo apt update && sudo apt install -y jellyfin-ffmpeg7 -
确保
/dev/dri目录存在至少一个renderD*设备节点。否则请升级内核或在 BIOS 中启用集成显卡。 注意查看设备节点的权限属组(通常为render和video):$ ls -l /dev/dri
total 0
drwxr-xr-x 2 root root 120 Mar 5 05:15 by-path
crw-rw----+ 1 root video 226, 0 Mar 5 05:15 card0
crw-rw----+ 1 root video 226, 1 Mar 5 05:15 card1
crw-rw----+ 1 root render 226, 128 Mar 5 05:15 renderD128
crw-rw----+ 1 root render 226, 129 Mar 5 05:15 renderD129 -
将
jellyfin用户加入render和video用户组,然后重启jellyfin服务:备注某些发行版中用户组可能名为
inputsudo usermod -aG render jellyfin
sudo usermod -aG video jellyfin
sudo systemctl restart jellyfin -
检查支持的 VA-API 编解码器:
备注Mesa Gallium driver表示已支持 VA-API 接口sudo /usr/lib/jellyfin-ffmpeg/vainfo --display drm --device /dev/dri/renderD128
libva info: VA-API version 1.17.0
libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/radeonsi_drv_video.so
libva info: Found init function __vaDriverInit_1_17
libva info: va_openDriver() returns 0
Trying display: drm
vainfo: VA-API version: 1.17 (libva 2.17.0)
vainfo: Driver version: Mesa Gallium driver 23.1.0-devel for AMD Radeon RX Vega (vega10, LLVM 15.0.7, DRM 3.49, 6.1.14-1)
vainfo: Supported profile and entrypoints
...VAEntrypointVLD表示显卡支持该格式解码,VAEntrypointEncSlice表示支持该格式编码Jellyfin 设置 VA-API 配置 H264 VAProfileH264Baseline
VAProfileH264Main
VAProfileH264High
VAProfileH264ConstrainedBaselineHEVC VAProfileHEVCMain MPEG2 VAProfileMPEG2Simple
VAProfileMPEG2MainVC1 VAProfileVC1Simple
VAProfileVC1Main
VAProfileVC1AdvancedVP8 VAProfileVP8Version0
VAProfileVP8Version1
VAProfileVP8Version2
VAProfileVP8Version3VP9 VAProfileVP9Profile0 AV1 VAProfileAV1Profile0 HEVC 10bit VAProfileHEVCMain10 VP9 10bit VAProfileVP9Profile2 -
检查 Vulkan 运行时状态:
sudo /usr/lib/jellyfin-ffmpeg/ffmpeg -v debug -init_hw_device drm=dr:/dev/dri/renderD128 -init_hw_device vulkan@dr
[AVHWDeviceContext @ 0x557f13a57bc0] GPU listing:
[AVHWDeviceContext @ 0x557f13a57bc0] 0: AMD Radeon RX Vega (RADV VEGA10) (discrete) (0x687f)
[AVHWDeviceContext @ 0x557f13a57bc0] 1: llvmpipe (LLVM 15.0.7, 256 bits) (software) (0x0)
[AVHWDeviceContext @ 0x557f13a57bc0] Device 0 selected: AMD Radeon RX Vega (RADV VEGA10) (discrete) (0x687f)
[AVHWDeviceContext @ 0x557f13a57bc0] Queue families:
[AVHWDeviceContext @ 0x557f13a57bc0] 0: graphics compute transfer sparse (queues: 1)
[AVHWDeviceContext @ 0x557f13a57bc0] 1: compute transfer sparse (queues: 4)
[AVHWDeviceContext @ 0x557f13a57bc0] Using device extension VK_KHR_push_descriptor
[AVHWDeviceContext @ 0x557f13a57bc0] Using device extension VK_KHR_sampler_ycbcr_conversion
[AVHWDeviceContext @ 0x557f13a57bc0] Using device extension VK_KHR_synchronization2
[AVHWDeviceContext @ 0x557f13a57bc0] Using device extension VK_KHR_external_memory_fd
[AVHWDeviceContext @ 0x557f13a57bc0] Using device extension VK_EXT_external_memory_dma_buf
[AVHWDeviceContext @ 0x557f13a57bc0] Using device extension VK_EXT_image_drm_format_modifier
[AVHWDeviceContext @ 0x557f13a57bc0] Using device extension VK_KHR_external_semaphore_fd
[AVHWDeviceContext @ 0x557f13a57bc0] Using device extension VK_EXT_external_memory_host
... -
如需使用第二块 GPU,请在 Jellyfin 仪表盘中将
renderD128改为renderD129 -
在 Jellyfin 中启用 VA-API,并根据 vainfo 输出取消勾选不支持的编解码器
Linux Mint
Linux Mint 基于 Ubuntu 的软件包体系构建
可参照 Debian 与 Ubuntu Linux 的配置步骤,但需从 Jellyfin 服务器发布页 手动安装所有软件包 jellyfin-server、jellyfin-web 和 jellyfin-ffmpeg7。同时请根据 官方版本映射表 确认正确的代号名称
Arch Linux
需要 root 权限。
-
安装 Archlinux/extra 仓库的
jellyfin-ffmpeg包:sudo pacman -Syu jellyfin-ffmpeg -
需手动安装用户态Mesa驱动以支持VA-API和RADV Vulkan:
sudo pacman -Syu libva-mesa-driver vulkan-radeon -
检查 VA-API 编解码器支持:
sudo pacman -Syu libva-utils
sudo vainfo --display drm --device /dev/dri/renderD128 -
检查 Vulkan 运行时状态:
sudo /usr/lib/jellyfin-ffmpeg/ffmpeg -v debug -init_hw_device drm=dr:/dev/dri/renderD128 -init_hw_device vulkan@dr -
继续完成 Debian 与 Ubuntu Linux 章节的剩余步骤。
其他发行版
对于缺乏常规维护的发行版,我们提供便携式 jellyfin-ffmpeg 二进制文件。
可通过以下链接下载:
glibc 和 Linux 内核最低要求:
- x86_64 / amd64 架构 - glibc >= 2.28, Linux 内核 >= 4.18 (2018 年及之后发布的主流发行版)
解压后安装到正确路径,并在 Jellyfin 控制台修改 FFmpeg 路径使其匹配:
需要 root 权限。
cd ~/
mkdir -p jellyfin-ffmpeg
wget https://repo.jellyfin.org/releases/ffmpeg/<VERSION>/jellyfin-ffmpeg_<VERSION>_portable_linux64-gpl.tar.xz
tar -xvf jellyfin-ffmpeg_<VERSION>_portable_linux64-gpl.tar.xz -C jellyfin-ffmpeg
sudo mv jellyfin-ffmpeg /usr/lib
sudo ldd -v /usr/lib/jellyfin-ffmpeg/ffmpeg
安装其他必要的 Mesa 驱动包及其依赖项(需包含以下关键词):
-
Mesa libva vaapi driver - RadeonSI
-
Mesa vulkan driver - RADV
Linux 虚拟化环境配置
官方 Docker 镜像
官方 Docker 镜像已包含所有必要的用户态 Mesa 驱动。
您只需将主机的 render 组 ID 传递给 Docker,并根据需求修改配置。
需要 root 权限。
-
查询主机系统
render和video组的 ID,用于 Docker CLI 或 docker-compose 文件:备注某些发行版中组名可能为
input。getent group render | cut -d: -f3
getent group video | cut -d: -f3 -
使用Docker命令行或docker compose:
- 命令行示例:
docker run -d \
--name=jellyfin \
--volume /path/to/config:/config \
--volume /path/to/cache:/cache \
--volume /path/to/media:/media \
--user 1000:1000 \
--group-add="122" \ # Change this to match your "render" host group id and remove this comment
--net=host \
--restart=unless-stopped \
--device /dev/dri/renderD128:/dev/dri/renderD128 \
jellyfin/jellyfin - docker-compose YAML配置示例:
services:
jellyfin:
image: jellyfin/jellyfin
user: 1000:1000
group_add:
- '122' # Change this to match your "render" host group id and remove this comment
network_mode: 'host'
volumes:
- /path/to/config:/config
- /path/to/cache:/cache
- /path/to/media:/media
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
- 命令行示例:
-
如需使用系统中的第二块 GPU,请将
renderD128改为renderD129。 -
若要试用不稳定版本,请自行承担风险将
jellyfin/jellyfin替换为jellyfin/jellyfin:unstable。 -
检查 VA-API 编解码器支持情况:
docker exec -it jellyfin /usr/lib/jellyfin-ffmpeg/vainfo --display drm --device /dev/dri/renderD128 -
检查 Vulkan 运行时状态:
docker exec -it jellyfin /usr/lib/jellyfin-ffmpeg/ffmpeg -v debug -init_hw_device vulkan -
在 Jellyfin 中启用 VA-API 并取消勾选不支持的编解码器。
Linuxserver.io Docker 方案
LSIO Docker 镜像由 linuxserver.io 维护,请参考其 GitHub 文档:linuxserver/docker-jellyfin。
官方 Docker 镜像与 LSIO Docker 镜像中 Jellyfin 配置文件和数据的存储路径不同,因此无法直接互换使用。
其他虚拟化方案
其他虚拟化方案未经验证,AMD GPU 可能支持也可能不支持。
更多信息请参考 Intel GPU 硬件加速教程 - Linux 虚拟化配置。
Linux 系统验证方法
在 Linux 系统上,目前没有可靠方法读取 AMD GPU 的 VCE/UVD/VCN 引擎占用率。
但您仍可通过 radeontop 工具查看其他引擎的占用情况。
需要 root 权限。
-
安装
radeontop工具(不同发行版包名可能不同):- Debian/Ubuntu系统:
sudo apt update && sudo apt install -y radeontop - Arch Linux系统:
sudo pacman -Syu radeontop
- Debian/Ubuntu系统:
-
在 Jellyfin 网页客户端播放视频,并通过降低分辨率或码率触发视频转码。
-
使用
radeontop命令检查 3D 引擎的占用率。