在 CentOS 上 Jellyfin 无法播放,通常不是“软件坏了”,而是权限、解码、网络或格式中的某一环没打通。下面按最常见原因 → 排查方法 → 解决方式给你一个完整清单。
Jellyfin 默认用 jellyfin 用户运行,但你的媒体目录它读不到。
现象
检查
ps -ef | grep jellyfin
ls -l /你的媒体目录
解决
chown -R jellyfin:jellyfin /你的媒体目录
chmod -R 755 /你的媒体目录
或把 jellyfin 加入你的用户组:
usermod -aG youruser jellyfin
CentOS 默认 不带完整 ffmpeg。
检查
which ffmpeg
ffmpeg -version
解决(推荐)
yum install epel-release -y
yum install ffmpeg ffmpeg-devel -y
如果还是不行,用 静态 ffmpeg:
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
tar xf ffmpeg-release-amd64-static.tar.xz
cp ffmpeg-*/ffmpeg /usr/bin/
Jellyfin → 控制台 → 播放 → 指定 ffmpeg 路径
非常常见,但很多人忽略
检查
getenforce
如果是 Enforcing,先测试:
setenforce 0
能播了 → 就是 SELinux 问题
永久解决
setsebool -P httpd_can_read_user_content 1
semanage fcontext -a -t httpd_sys_content_t "/你的媒体目录(/.*)?"
restorecon -Rv /你的媒体目录
或(不推荐但省事):
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
reboot
现象
检查
firewall-cmd --list-all
解决
firewall-cmd --add-port=8096/tcp --permanent
firewall-cmd --reload
现象
原因
解决
# 1. 服务状态
systemctl status jellyfin
# 2. 日志(最关键)
journalctl -u jellyfin -f
# 3. 权限
ls -ld /media
# 4. ffmpeg
ffmpeg -version
# 5. SELinux
getenforce
你可以直接贴:
我可以直接告诉你是哪一步错,以及具体命令。