在 Linux 服务器 / NAS 上使用 Jellyfin 观看电影时,可能会遇到字幕无法正常显示或显示为方框的问题。

这通常是由于 Linux 系统缺少对应的中文或国际通用字体(默认安装的字体库通常不包含:微软雅黑、楷体、Arial 等),而某些字幕文件(如 ASS、SSA)可能明确指定了这些字体。

Jellyfin 是依赖系统字体来渲染字幕,如果你的 Linux 服务器 / NAS 上没有适当的中文字体,字幕可能会遇到下面的情况:

  • 完全无法显示

  • 显示为方框(□)或乱码

  • 部分字符缺失

封面图和中文字幕变方块

  1. 通常我们使用Docker进行安装Jellyfin时有极大的概率遇到下面的情况,媒体库分类封面图变成乱码方框。

  2. 以及ASS字幕里的中文文字变成方块

解决办法

  1. 以群晖NAS系统为例,打开群晖的Docker / Container Manager

  2. 点击容器>点击选中Jellyfin>右键>打开终端机(jellyfin容器需要在运行状态)

  3. 点击新增,选择bash。

  4. 如果你的系统没有这个功能可以使用SSH连接系统后执行下面的命令进入容器内部,如需退出容器内部则输入exit命令后按回车键。

    # 格式 docker exec -it 容器名 /bin/bash
    # 后面的/bin/bash有的是进不去,因为使用哪个是取决于你使用的镜像怎么编排的,可以试试/bin/sh或其他的。
    
    docker exec -it jellyfin /bin/bash
  5. 进入容器内部后先执行更新命令

    apt update
  6. 等待更新完成后继续执行安装字体命令

    apt install fonts-noto-cjk-extra -y
  7. 在执行上面两个命令时注意,此操作非常依赖网络质量,你可以给NAS挂上梯子,或者白天的时候尝试。
    正确的完成应该是每条命令都和下载文件一样跑完进度,而不是执行一半突然没了,那是网不好失败了,请重新执行命令。

  8. 命令完成之后退出,将jellyfin容器重新启动。

  9. 鼠标移动到封面图上右下角🚦>选择“修改图片”>删除已有的封面图。

  10. 进入控制台>扫描所有媒体,让系统自行重新生成封面图就解决这个问题了。

  11. 注意要点:当你更新Jellyfin容器后需要重新执行这一步骤!

为字幕添加中文备用字体

  1. 在 Jellyfin 挂载的config或其他目录中,新建一个文件夹 fonts。

  2. 首先下载字体包推荐去 https://www.fonts.net.cn/ 下载,找你喜欢的字体下载到本地。

  3. 将解压后的字体文件复制到上面说的 fonts 目录中

  4. 然后在控制台>播放>转码,设置备用字体的文件路径并启用备用字体,然后拉到底部保存。

  5. 重启一遍Jellyfin,然后播放试试。

相关链接

文末

👇👇👇