CentOS 上 Jellyfin 卡顿的原因很多,通常和硬件、转码、网络、系统配置有关。下面按常见原因给你逐一排查,并给出对应解决办法。
一、最常见原因:没有开启硬件转码(CPU 软解)
表现
- 播放 1080p / 4K 视频时卡顿
- CPU 占用率非常高(接近 100%)
- 声音正常但画面一卡一卡
原因
Jellyfin 默认使用 CPU 软解码,CentOS 服务器 CPU 性能不足就会卡。
解决方案
✅ 开启硬件转码(推荐)
1️⃣ 确认是否有 GPU
lspci | grep -i vga
lspci | grep -i vga
常见情况:
- Intel CPU → Intel Quick Sync
- NVIDIA → 独显
- 无 GPU → 只能软解(会卡)
Intel 核显(最常见)
安装驱动
yum install -y intel-media-driver
检查设备
ls /dev/dri
应看到:
card0 renderD128
Jellyfin 设置
控制台 → 播放 -> 转码
- ✅ 启用硬件加速
- 选择 Intel QuickSync (QSV)
- ✅ 勾选 H264 / HEVC / AV1(如果支持)
NVIDIA 显卡
安装驱动 + CUDA
yum install -y nvidia-driver cuda
安装 NVIDIA Container Toolkit(如果用 Docker)
dnf install -y nvidia-container-toolkit
Jellyfin 设置
- 硬件加速:NVIDIA NVENC
- 勾选 H264 / HEVC
二、Docker 运行但未映射 GPU(非常常见)
问题
Docker 里 Jellyfin 看不到 GPU
正确示例
docker run -d \
--name jellyfin \
--device /dev/dri:/dev/dri \
-p 8096:8096 \
-v /path/config:/config \
-v /path/media:/media \
jellyfin/jellyfin
✅ 必须映射 /dev/dri
三、播放直接播放 vs 转码
表现
原因
- 客户端不支持该编码(如 HEVC、AV1)
- Jellyfin 被迫转码
解决
✅ 尽量 直接播放
- 客户端选择:
- Web → 质量 → 原画
- Android / iOS → 关闭转码
✅ 或开启硬件转码
四、CentOS 系统本身问题
1️⃣ CentOS 7 已停止维护
✅ 建议:
- 升级到 Rocky Linux / AlmaLinux 8/9
- 或至少 CentOS Stream 9
2️⃣ 防火墙 / SELinux 影响
SELinux 可能阻止访问 GPU
getenforce
临时关闭测试:
setenforce 0
如果恢复正常,需配置 SELinux 策略。
五、网络问题(远程播放)
表现
原因
解决
- 播放时选择 1080p / 720p
- 使用 WebRTC / 内网穿透
- 确保上传带宽 ≥ 20Mbps(4K 更高)
六、Jellyfin 版本问题
建议
- 使用 最新稳定版
- 不要用太老的 RPM / Docker 镜像
查看版本:
jellyfin --version
七、快速自检清单 ✅
你可以按顺序检查:
- ✅ CPU 是否爆满?
- ✅ 是否开启硬件转码?
- ✅ Docker 是否映射
/dev/dri?
- ✅ 播放是否转码?
- ✅ 是否是远程网络问题?
- ✅ CentOS 版本是否太老?
八、如果你愿意,我可以进一步帮你定位
你可以直接贴出以下信息(我可以精准判断):
- CentOS 版本
- Jellyfin 安装方式(Docker / RPM)
- CPU / GPU 型号
- 播放时 CPU 占用
- 是否转码(Jellyfin 播放统计)
我可以一步一步帮你调到 4K 不卡。