解决 Jellyfin 在 Linux 上播放电影字幕显示方框或无法显示的问题
在 Linux 服务器上使用 Jellyfin 观看电影时,可能会遇到字幕无法正常显示或显示为方框的问题。这通常是由于系统缺少适当的中文或国际通用字体(如微软雅黑、楷体、Arial 等)。本文介绍如何从 Windows 复制字体到 Jellyfin 服务器,确保字幕正确显示,特别是在使用 Docker 运行 Jellyfin 的情况下。
问题分析
Jellyfin 依赖系统字体来渲染字幕。如果 Linux 服务器上没有适当的中文字体,字幕可能会:
- 完全无法显示
- 显示为方框(□)或乱码
- 部分字符缺失
这是因为 Linux 服务器默认安装的字体库通常不包含微软雅黑、楷体等常见的 Windows 中文字体,而某些字幕文件(如 ASS
、SSA
)可能明确指定了这些字体。
解决方案:复制 Windows 字体到 Jellyfin 服务器
步骤 1:从 Windows 复制字体
在 Windows 11 或 Windows 10 系统上,字体文件通常位于 C:WindowsFonts
目录。我们需要复制以下几种常见的字体到 Linux 服务器:
- 微软雅黑(Microsoft YaHei):
msyh.ttc
、msyhbd.ttc
、msyhl.ttc
- 楷体(KaiTi):
simkai.ttf
- Arial(通用英文字体):
arial.ttf
- 华文楷体(STKaiti):
STKAITI.TTF
步骤 2:为 Jellyfin Docker 挂载字体目录
如果你的 Jellyfin 是通过 Docker 运行的,你需要将字体目录挂载到容器中。假设你的字体存放在 /mnt/jellyfin_fonts/
,可以修改 docker-compose.yml
或 docker run
命令:
方法 1:修改 docker-compose.yml
version: '3'
services:
jellyfin:
image: jellyfin/jellyfin
container_name: jellyfin
volumes:
- /mnt/jellyfin_fonts:/usr/share/fonts/custom
restart: unless-stopped
然后重新启动容器:
docker-compose up -d
或者随便放到一个可以挂载的目录,在设置,播放中,启用备用字体,这里可以设置备用字体的目录,所以只要选择一个可以访问到的目录即可。
步骤 3:在 Jellyfin 中启用备用字体
- 打开 Jellyfin Web UI(通常是
http://your-server-ip:8096
)。 - 进入 “设置” → “播放” → “转码”。
- 找到 “备用字体” 选项,选择 存放字体的目录。
- 保存设置,并重启 Jellyfin。
验证字体是否生效
- 重新播放之前显示方框的字幕电影。
- 确保正确选择了字幕,并且它们能够正确显示,而不会变成方框。
- 如果问题仍然存在,可以检查日志:
以确保 Jellyfin 已经正确加载了新的字体。journalctl -u jellyfin --no-pager | grep font
总结
如果在 Linux 上运行 Jellyfin 并遇到字幕无法显示的问题,可以通过以下步骤解决:
- 从 Windows 复制常见中文字体(如微软雅黑、楷体等)到 Linux。
- 如果使用 Docker,确保正确挂载字体目录。
- 在 Jellyfin 设置中启用备用字体并选择字体目录。
- 刷新字体缓存并重启 Jellyfin 以应用更改。
这样,你就可以顺利观看带字幕的电影,而不会再出现方框或乱码的问题。