注意:Jellyfin 在 10.7 以后的版本中修复了 ASS 字幕显示的问题。因此你只需要升级到最新版的 Jellyfin 即可。
如果你仍然看到了中文字符被显示成方块,注意在客户端前往设置(不是控制台)的字幕设置中,将“烧录字幕”选项设置成“所有复杂格式字幕(……)”,然后就可以了。
不过如果 ASS 字幕试图使用系统中不存在的字体,你仍然需要手动安装。在 Docker 环境下,字幕文件需要放置到容器中的 /usr/share/fonts
目录中。
本文修改自 解决 Jellyfin 10.6.x 中文字幕方块问题
ASS 字幕显示问题是由于缺少字体导致的。因此需要我们修改 Jellyfin 的前端文件,让 Jellyfin 向客户端提供中文字体。字体可以选择官方扩展字体: NotoCJK。
PS: 字体中常见的 CJK 后缀表示 Chinese-Japanese-Korean,即表示支持中文、日文和韩文字体。
然后我们进入 Jellyfin Docker 的命令行。Jellyfin Docker 命令行内部我们可以使用 apt
命令来安装 vim, wget 等工具方便我们处理文件(Unraid 上没有自带 vim,而其自带的 nano 的一些快捷键和网页冲突,如 nano 的搜索快捷键是 ctrl + W,和关闭网页是重合的)。
1 | apt update |
然后进入 /jellyfin/jellyfin-web/plugins/htmlVideoPlayer/
目录,编辑该目录下的 plugin.js
文件
1 | # 编辑前保存一个副本 |
全局搜索找到下面的代码段完成替换
1 | - apiClient=connectionManager.getApiClient(item) |
1 | - fonts:attachments.map(function(i){return apiClient.getUrl(i.DeliveryUrl)}) |
然后下载字体到 /jellyfin/jellyfin-web/libraries/
目录下
1 | cd /jellyfin/jellyfin-web/libraries/ |
接下来前往网页端清除浏览器缓存即可。
实际操作中,进入 Chrome Console 禁用缓存仍然无效,需要同时清理网站的 Cookie。
以上方法只对网页端有效,对于 iOS 客户端无效。