前言
2019年,经站内大佬们介绍,成功上车星际蜗牛C双版本,并安装了黑群,此后nas一直稳定运行。
最近经过@阿文菌等大佬孜孜不倦的安利,将NAS升级成i3 8100+矿渣B365主板,并且部署了docker版的jellyfin,想着也体验一把远程串流。
(在此感谢大佬们无私分享经验知识!)
然而,在安装最新的10.5.5版本的jellyfin后,发现使用jellyfin在播放外挂ASS字幕的视频时,字幕无法正常显示,会出现一个个的方框。经过多方查询后并没有得到有效的解决办法,大部分网友们选择将ass字幕替换成scr字幕以规避此问题。
ass字幕无法正常显示,变成了一个个的方框
现在NAS上的影音资源大多是这几年慢慢积累起来的,是在懒得挨个检查文件夹并替换字幕,所以只能自力更生,所幸最终找到了一个解决该问题的方法,迫不及待的来分享给大家。
本人是NAS小白,说实话连jellyfin的日志文件都看不懂,在次只是抛砖引玉,给大家提供一个思路,希望大家集思广益,最终找到更有效的解决方案。
解决过程
看到播放时字幕变成了方框,我第一个思路就是,该问题是否类似windows系统中播放视频时字体库不全,引发的字体兼容问题。
用记事本打开ass格式的字幕文件,发现ass字幕格式中自带对字幕字体进行了声明。
考虑jellyfin为linux内核,且为国外开发人员开发,猜测其内置字体库对中文字体支持不佳,所以尝试将相应中文字体挂载到jellyfin字体库中。
查看10.5.5版jellyfin的日志文件,以font为关键字未搜到相关内容。
在10.5.5版字幕显示有问题后我安装过10.5.4版本,在日志文件中偶然搜到几句日志,大意是因字体不兼容,转用/usr/share/fonts的dejavu字体。但是当时未截图,后来调试过程中将10.5.4的映像删除后再也没有下载成功。。。
作为不懂linux的小白,此时只能依靠百度了。。。经查询/usr/share/fonts目录为linux的字体库目录,所以尝试一下将中文字体导入该目录中,看看效果。
下载了字幕文件中声明的几种中文字体后,在File StStation中随意找个文件夹存放。此处我选择了/download/fonts文件夹。
由于jellyfin运行在docker中,所以jellyfin无法直接调用该文件夹中的字体。在docker中将jellyfin停止,将/Download/fonts文件夹挂载到jellyfin的/usr/share/fonts位置。
选中jellyfin点编辑
如图所示进行挂载
重新启动,jellyfin,看看效果。
还是方框。。
纳尼?!竟然还是不行?
此时又想到,在这里查询jellyfin字幕问题时看到一网友的评论:
照着这个设置再来试试:
再来试一次:
666,网页版播放成功了!此时并非直接串流视频,而是播放的转码之后的视频流。
回放数据显示因字幕问题而转码
再来测试jellyfin其他客户端的效果:
1.ios客户端
jellyfin的客户端同样需要单独对字幕进行一下设置:
然后再来播放试试:
同样能够正常显示字幕了。
2.安卓客户端
通过百度找到了jellyfin安卓手机客户端的下载地址为:https://repo.jellyfin.org/releases/client/android/,下载realease1.0.0版本安装。
遗憾的是,安卓版本的jellyfin客户端并没有烧录字幕的选项。
无法选择烧录字幕
尝试播放,没有选择烧录特效字幕的情况下,果然无法播放,又看到了熟悉的方框。
讨厌的方框框
3.安卓手机浏览器
经测试,用安卓手机的浏览器访问jellyfin,是有烧录字幕的设置选项的。
照例进行播放测试,一切正常!
总结
1.在使用jellyfin客户端(包括网页、os客户端、安卓客户端等)进行串流时,请记得检查字幕设置,在没有选择烧录特效字幕的情况下,无法正常显示ass等特效字幕。
2.为了体验ass等特效视频,建议提前下载字幕常用字体库存放到NAS中,临时遇到无法正常显示的问题时候,也可以通过查看ass文件中对字体的声明,下载相应字体。字幕常用字体也就那么多,总比一个个重新找scr字幕来的快捷。
3.使用此方法在jellyfin中显示ass字幕的前提是服务端需将字幕烧录进视频流中,即对播放视频进行转码,所以利用核显能对视频进行硬解是必要前提(软解实在是太痛苦了)。蜗牛星际自带的J1900 CPU对HEVC 10bit视频的解码能力非常堪忧,所以在不更新硬件的前提下,貌似只能将将外挂的ass字幕一个个替换成scr格式了。
4.现在1.0.0版本的jellyfin安卓客户端不提供烧录字幕的设置选项,所以安卓手机可以通过网页访问jellyfin来进行播放。
PS:一点小探索
在终于解决了ass字幕显示的问题后,我参考网络教程,利用SSH登陆群晖,用sudo -i获取root权限后,使用docker ps命令获取容器ID,再通过docker exec -it 容器ID /bin/bash的方式进入了jellyfin的文件目录。
疑似与字体配置有关的文件
在/usr/share/fontconfig/conf.avail目录下,有很多设置文件。百度上说这个目录里存放的是linux系统的字体设置相关文件。因为自己不懂linux,所以无法进一步进行探索了。不知linux大神们能否从这里入手,从底层层面修改jellyfin对中文字体的配置,达到一劳永逸的效果。 |