本教程将一步一步教你如何在 UGREEN DH4300 Plus (RK3588) 上部署 Jellyfin Docker 容器并开启硬件解码。
教程特点:
- 使用 UGREEN Docker GUI 部署
- 支持 4K 硬件转码
- 支持 HDR Tone Mapping
硬件解码能力说明(RK3588)
UGREEN DH4300 Plus 使用 Rockchip RK3588,其视频硬件能力如下:
| 编解码 | 支持情况 |
|---|---|
| H264 解码 | 支持 |
| H264 编码 | 支持 |
| H265 解码 | 支持 |
| H265 编码 | 支持 |
| AV1 解码 | 支持 |
| AV1 编码 | 不支持 |
| HDR Tone Mapping | 支持(OpenCL) |
理论转码能力:
| 视频类型 | 转码数量 |
|---|---|
| 1080P H264 | 10+ |
| 4K H264 | 4-6 |
| 4K H265 | 3-4 |
第一步:准备 Docker Compose 配置
即使使用 Docker GUI 部署,也需要准备 Compose 配置内容。
稍后会粘贴到 Docker Project 中。
services:
jellyfin:
# 使用针对 Rockchip 平台优化的 Jellyfin 镜像
image: nyanmisaka/jellyfin:latest-rockchip
container_name: jellyfin
restart: always
# 启用特权模式:允许容器访问宿主机硬件设备(VPU / GPU 等)
privileged: true
# 使用 host 网络模式:
# 容器直接使用 NAS 的网络接口,可避免端口映射问题
network_mode: "host"
# 映射 Rockchip 硬件加速相关设备
devices:
- /dev/dri:/dev/dri # GPU / DRM 显示接口
- /dev/dma_heap:/dev/dma_heap # DMA 内存堆
- /dev/mpp_service:/dev/mpp_service # MPP VPU 核心服务
- /dev/rga:/dev/rga # RGA 2D 图像加速器
- /dev/mali0:/dev/mali0 # Mali GPU 设备(OpenCL / HDR Tone Mapping)
# 以下设备可能存在,用于兼容性,即使不存在也不会影响:
- /dev/iep:/dev/iep
- /dev/mpp-service:/dev/mpp-service
- /dev/vpu_service:/dev/vpu_service
- /dev/vpu-service:/dev/vpu-service
- /dev/hevc_service:/dev/hevc_service
- /dev/hevc-service:/dev/hevc-service
- /dev/rkvdec:/dev/rkvdec
- /dev/rkvenc:/dev/rkvenc
- /dev/vepu:/dev/vepu
- /dev/h265e:/dev/h265e
environment:
# PUID / PGID 用于设置容器运行用户权限
# 默认 1000 / 10 在多数 NAS 系统上可正常使用
# 如果需要自定义,可在 SSH 中执行:
# id -u
# id -g
PUID: 1000
PGID: 10
volumes:
# Jellyfin 配置文件目录
- ./config:/config
# Jellyfin 转码缓存目录
- ./cache:/cache
# 媒体文件目录
# 请修改为你自己的媒体路径
- /volume2/video:/video
参数说明:
| 参数 | 作用 |
|---|---|
| privileged | 允许容器访问硬件 |
| host 网络 | 简化端口管理 |
| /dev/mpp_service | Rockchip VPU |
| /dev/rga | 图像加速 |
| /dev/mali0 | GPU |
第二步:配置主机系统权限(核心步骤)
如果不执行这一步,Docker 无法访问 RK3588 硬件加速设备。
1 开启 SSH
进入:
控制面板 → 终端机 → SSH
开启 SSH。
2 登录 NAS
使用终端连接:
ssh 用户名@NAS_IP
示例:
ssh [email protected]
3 创建 Udev 规则
执行:
sudo nano /etc/udev/rules.d/99-rk-device-permissions.rules
粘贴:
KERNEL=="mpp_service", MODE="0660", GROUP="video"
KERNEL=="rga", MODE="0660", GROUP="video"
KERNEL=="system", MODE="0666", GROUP="video"
KERNEL=="system-dma32", MODE="0666", GROUP="video"
KERNEL=="system-uncached", MODE="0666", GROUP="video"
KERNEL=="system-uncached-dma32", MODE="0666", GROUP="video"
RUN+="/usr/bin/chmod a+rw /dev/dma_heap"
保存退出。
4 重启 NAS
执行:
sudo reboot
等待 NAS 重启完成。
5 安装 Mali OpenCL(HDR可选)
如果需要 HDR Tone Mapping:
sudo apt update
安装:
sudo apt install libmali-valhall-g610-g13p0-gbm
RK3588 GPU:
Mali-G610
此驱动用于:
- OpenCL
- HDR Tone Mapping
如果不需要 HDR,可以跳过。
第三步:使用 Docker GUI 部署 Jellyfin
进入 NAS 桌面。
打开:
Docker
点击左侧:
Project
然后点击:
Create Project
1 输入 Project Name
例如:
jellyfin-arm
2 Storage Path 自动生成
系统会自动生成路径,例如:
Shared folder/docker/jellyfin-arm
无需修改。
3 填写 Compose 配置
在 Compose configuration 中粘贴 第一步准备的配置。
4 部署容器
勾选:
Run immediately after creation
点击:
Deploy
Docker 会自动:
- 下载镜像
- 创建容器
- 启动服务
首次启动约 1-2分钟。
第四步:访问 Jellyfin
浏览器打开:
http://NAS_IP:8096
示例:
http://192.168.1.100:8096
第一次启动需要:
- 创建管理员账户
- 设置语言
- 添加媒体库
第五步:开启硬件加速
登录后进入:
Dashboard
点击:
Playback
进入:
Transcoding
硬件加速
选择:
RKMPP
解码器
勾选:
H264
HEVC
AV1
编码器
勾选:
H264
HEVC
不要勾选:
AV1 Encoding
原因:
RK3588 不支持 AV1 硬编码
HDR Tone Mapping
如果安装了 OpenCL:
启用:
OpenCL Tone Mapping
第六步:验证硬件解码
播放一个 需要转码的视频。
推荐测试:
播放 4K视频 → 手动切换 720P
这样 Jellyfin 会强制转码。
查看播放信息
点击播放器:
Playback Info
如果显示:
Transcoding (Hardware)
说明硬件解码已成功启用。
推荐媒体库目录结构
建议使用以下目录结构,避免刮削失败:
video
├─ Movies
│ ├─ Avatar (2009)
│ │ └─ Avatar (2009).mkv
│
└─ TV Shows
└─ Breaking Bad
└─ Season 01
└─ Breaking.Bad.S01E01.mkv
Jellyfin 推荐:
| 媒体类型 | 文件夹 |
|---|---|
| 电影 | Movies |
| 电视剧 | TV Shows |
性能测试方法
播放视频时降低质量:
4K → 1080P
4K → 720P
观察:
Dashboard → Activity
如果看到:
Hardware Transcoding
说明 VPU 正在工作。
验证硬件加速是否正常工作(RGA 负载检测)
在瑞芯微平台(如 RK3588)上,视频硬件转码通常会调用 VPU + RGA。
因此可以通过观察 RGA(2D 硬件加速器)负载 来间接确认硬件加速是否生效。
1️⃣ 在 NAS 宿主机终端执行
sudo watch -n 1 cat /sys/kernel/debug/rkrga/load
参数说明:
watch -n 1:每 1 秒刷新一次rkrga/load:显示 RGA 当前负载情况
2️⃣ 播放需要转码的视频
在 Jellyfin 客户端播放一个需要转码的视频(例如:
- 不支持的编码格式
- 不支持的分辨率
- 或手动降低码率触发转码)
3️⃣ 观察终端输出
如果硬件加速正在工作,你会看到 load 数值不断变化,例如:
0
12
28
47
19
35
0
如果数值 在 0 与非零之间跳动(例如 0 → 10 → 20 → 50 等),说明:
- RGA 正在参与图像处理
- 视频正在通过 瑞芯微硬件加速管线
- Jellyfin 硬件解码 / 转码已经生效
常见问题
Docker 容器启动失败
查看日志:
docker logs jellyfin
没有硬件转码
检查设备:
ls /dev | grep mpp
应该看到:
mpp_service
HDR 不生效
确认安装:
libmali-valhall-g610
完成
现在你的 UGREEN DH4300 Plus 已经成功:
- Docker GUI 部署 Jellyfin
- 启用 RKMPP 硬件解码
- 支持 4K 硬件转码
- 支持 HDR Tone Mapping


