在 CentOS 上让 Jellyfin 正常转码,核心是保证 FFmpeg 可用、权限正确,并且硬件加速(可选)配置好。下面按「软件转码 → 硬件转码 → 常见问题」说明。
CentOS 默认仓库没有新版本 FFmpeg,推荐用 RPM Fusion 或静态版。
方式 A:RPM Fusion(推荐)
yum install -y epel-release
yum install -y https://download1.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm
yum install -y ffmpeg ffmpeg-devel
验证:
ffmpeg -version
方式 B:静态 FFmpeg(简单稳定)
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
tar xf ffmpeg-release-amd64-static.tar.xz
cp ffmpeg-*-static/ffmpeg /usr/bin/
cp ffmpeg-*-static/ffprobe /usr/bin/
登录 Jellyfin → 控制台 → 播放 → FFmpeg 路径
/usr/bin/ffmpeg
保存后重启 Jellyfin:
systemctl restart jellyfin
yum install -y intel-media-driver
usermod -aG video jellyfin
控制台 → 播放 → 硬件加速:
/dev/dri/renderD128
重启:
systemctl restart jellyfin
yum install -y nvidia-driver nvidia-driver-cuda
yum install -y nvidia-container-toolkit
Jellyfin 默认转码目录:
/var/lib/jellyfin/transcodes
确保可写:
chown -R jellyfin:jellyfin /var/lib/jellyfin
临时测试:
setenforce 0
永久解决(示例):
semanage fcontext -a -t httpd_sys_rw_content_t "/var/lib/jellyfin/transcodes(/.*)?"
restorecon -Rv /var/lib/jellyfin
运行容器时必须映射设备:
docker run -d \
--name jellyfin \
--device /dev/dri:/dev/dri \
-p 8096:8096 \
jellyfin/jellyfin
播放一个不支持直接播放的视频 → 查看:
journalctl -u jellyfin -f
如果你愿意,可以告诉我:
我可以给你精确命令。