跳至正文
  • 4 views
  • 3 min read

UGREEN DH4300 Plus Jellyfin 硬件解码完整教程

新浪微博 豆瓣 QQ 百度贴吧 QQ空间

本教程将一步一步教你如何在 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 H26410+
4K H2644-6
4K H2653-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_serviceRockchip VPU
/dev/rga图像加速
/dev/mali0GPU

第二步:配置主机系统权限(核心步骤)

如果不执行这一步,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. 创建容器
  3. 启动服务

首次启动约 1-2分钟


第四步:访问 Jellyfin

浏览器打开:

http://NAS_IP:8096

示例:

http://192.168.1.100:8096

第一次启动需要:

  1. 创建管理员账户
  2. 设置语言
  3. 添加媒体库

第五步:开启硬件加速

登录后进入:

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

发表回复

联系站长