一台 J4125 的小主机跑 Jellyfin,播 1080P 一路很稳,一上 4K 原盘就彻底不行:进度条拖一下要转七八秒,播放器右上角常年挂着「转码中」,CPU 占满,机箱风扇狂转,屋里能听见。我一开始以为是机器太弱,换 N100、加到 16G 内存都没解决。后来才发现是一直在用 CPU 软解——硬件转码根本没生效。
为什么 4K 一定要走硬解
视频要能在电视或者手机上播,得先解封裝、解码、再编码成设备能吃的格式。CPU 做这活儿是按像素硬算的,4K 一帧 800 多万像素,60 帧每秒,软解再软编,J4125 这种低功耗 U 直接跪。
但英特尔的核显里有一块专门的编解码电路(Quick Sync,简称 QSV),NVIDIA 显卡里有 NVENC,它们是独立硬件单元,干的活跟 CPU 完全不冲突。同一个片子交给核显,CPU 占用从 92% 掉到 11%,功耗从 28W 降到 9W,温度直接降 20 度。
实测数据(同一台 J4125 / 16G / 同一部 4K HEVC 10bit 片源,播放端限制 12Mbps):
- 软解:CPU 92%,内存 1.9G,风扇常转,拖动进度条等待 5–8 秒
- QSV 硬解:CPU 11%,内存 780MB,风扇停转,拖动进度条 1 秒内
- 同时转码路数:软解 1 路就卡,QSV 能同时跑 3 路 1080P + 1 路 4K
先确认你的机器有没有这块电路
J4125、N100、N5105、i3-8100 及以后的英特尔核显都支持 QSV,关键看有没有 /dev/dri 这个设备:
ls -l /dev/dri
# 看到 renderD128 或 card0 就说明核显被识别了
如果是 NVIDIA 独显,需要驱动 + nvidia-container-toolkit,而且消费级显卡有并发转码数限制(GeForce 驱动限制同时 3–5 路,需要打解锁补丁,不建议折腾)。
Docker 部署要加的三行
大部分人硬解不生效,就卡在这一步。容器默认是看不到宿主机显卡设备的,必须显式挂进去:
docker run -d \
--name jellyfin \
--device /dev/dri:/dev/dri \
-e PUID=1000 -e PGID=989 \
-p 8096:8096 \
-v /mnt/media:/media \
jellyfin/jellyfin:latest
--device /dev/dri:/dev/dri 是核心。用 docker-compose 的话对应的是:
devices:
- /dev/dri:/dev/dri
group_add:
- "989" # render 组,用 getent group render 查你机器上的实际 gid
PGID 那一项最容易踩坑。 光挂设备不够,容器里的 jellyfin 用户还得有访问设备的权限。先在宿主机查一下 render 组的 id:
getent group render | cut -d: -f3
把查到的数字填进 PGID(或者 group_add),不然控制台里能选到 QSV,实际一转码就报 Device creation failed。
控制台里怎么开
进 Jellyfin 后台 → 控制台 → 播放 → 硬件加速,选 Intel QuickSync (QSV)。下面会展开一堆选项,几个关键点:
- 启用硬件解码:HEVC、HEVC 10bit、VP9、AV1 全勾上。10bit 要单独勾,很多 4K 片源就是 10bit,漏勾的话它会静默回退到软解
- 硬件编码选项:勾「允许硬件编码」,HEVC 格式也勾上
- VPP 色调映射:如果要播 HDR 片源,一定要勾。不勾的话 HDR 片子会发灰发白
- 最下面「首选硬件解码器」保持默认
改完必须重启 Jellyfin 容器,改配置不重启不生效——这个坑我踩了两次。
怎么验证到底生效没
控制台里显示 QSV 不代表真的在用。播一个 4K 片子,然后看后台的「播放信息」:
Video: HEVC 10bit → H264
Hardware: QSV (Intel QuickSync)
Reason: 视频码率超出限制 ← 说明在转码,而且用的是硬解
如果看到 Software 或者转码原因写着「字幕需要烧录」,那还是软的。
字幕是最隐蔽的元凶。 只要字幕需要「烧」进画面(ASS 特效字幕、或者播放器不支持外挂),整个流程就会回退成软解——因为烧字幕这一步硬编电路做不了。解决办法:优先用 SRT 这种纯文本字幕走外挂,或者把 ASS 转成 SRT。
还有几个边界情况
- AV1:只有 11 代及以上核显才支持硬解 AV1,J4125 / N5105 别指望
- 群晖 Docker:套件中心装的 Container Manager 不让你手动加 device,得 SSH 进去用命令行跑 docker run,或者用
synology的特权模式容器 - 虚拟机直通:ESXi / PVE 里要把核显直通给虚拟机,只挂 /dev/dri 不直通是不行的
改完之后那台 J4125 现在能同时给电视放 4K、给手机转一路 1080P、老婆在平板上再看一路,CPU 常年 30% 以下。早知道就不用折腾换机器了——原来不是机器不行,是我没把那块电路用起来。
你们那边 Jellyfin 是跑在什么机器上?核显硬解一次点亮了吗,还是也在字幕那步回退了?