1、实时将字体子集化后嵌入ass的小工具,用于在未安装对应字体的系统上正确显示字幕 2、批量字幕字体子集化嵌入后保存于本地。
项目地址:Github
graph LR
%% 定义节点形状和样式
A(客户端)
B{nginx}
C[后端服务器]
D[fontinass服务器]
%% 节点连接关系与标签
A <-->|http请求| B
B -->|其他API请求| C
B -->|字幕文件请求| D
D -->|原始字幕文件| C
D -->|子集化后的字幕文件| B
%% 定义样式颜色
style A fill:#f2d7d9,stroke:#f2d7d9,color:black,rx:15,ry:15
style B fill:#ebd19e,stroke:#ebd19e,color:black
style C fill:#d2e6f9,stroke:#d2e6f9,color:black,stroke-width:0px
style D fill:#d2e6f9,stroke:#d2e6f9,color:black,stroke-width:0px
由于 latest tag 自带一个nginx进行反向代理,不适合已经部署了反向代理的玩家再去套娃,所以作者还提供了 noproxy tag,供用户自行设置反向代理。
1 2 3 4 5 6 7 docker run -d --name=fontinass --restart=unless-stopped \ -p 8011:8011 \ -p 8012:8012 \ -e EMBY_SERVER_URL=http://[ip]:[port] \ -v /yourDir/fontinass/data:/data \ -v /yourDir/fontinass/fonts:/fonts \ riderlty/fontinass:noproxy
根据项目 readme 描述
有需求的用户可参考手动部署,映射8011端口并配置字幕接口的nginx反向代理location ~* /videos/(.*)/Subtitles/(.*)/(Stream.ass|Stream.ssa|Stream.srt|Stream.)$
这里以 NginxProxyManager 为例,在 emby 的反向代理设置中添加如下设置
1 2 3 4 5 6 7 8 9 10 11 12 # custom locations location ~* /videos/(.*)/Subtitles/(.*)/(Stream.ass|Stream.ssa|Stream.srt|Stream.)$ { include proxy-headers.conf; proxy_set_header Accept-Encoding ""; proxy_pass http://upstream_5_location_0$request_uri; }
在 web UI 中是这样的
注意 X-Frame-Options 要设置为 upstream。
随便播放一个视频,然后在 ip:8011 查看日志验证。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 🤖 17:30:28.968 .INFO 字幕URL: http://******/emby/Videos/182379/mediasource_182379/Subtitles/2/0/Stream.ass?api_key=****** 🤖 17:30:29.036 .INFO 尝试下载字体 [CDN:超级字体整合包 XZ/完整包/其他/简繁/黑体.ttf] 🤖 17:30:29.039 .INFO 尝试下载字体 [CDN:超级字体整合包 XZ/完整包/其他/简繁/黑体.ttf] 🤖 17:30:29.878 .INFO 从CDN加载字体 9.30MB 841.98ms [('黑体', 700, True) <== CDN:超级字体整合包 XZ/完整包/其他/简繁/黑体.ttf] 🤖 17:30:29.913 .INFO 子集化 38 个字符 15.11ms [黑体] 🤖 17:30:29.931 .INFO 网络字体已保存 [/fonts/download/超级字体整合包 XZ/超级字体整合包 XZ/完整包/其他/简繁/黑体.ttf] 🤖 17:30:29.946 .INFO 从CDN加载字体 9.30MB 906.22ms [('黑体', 700, False) <== CDN:超级字体整合包 XZ/完整包/其他/简繁/黑体.ttf] 🤖 17:30:29.953 .INFO 子集化 1072 个字符 7.11ms [黑体] 🤖 17:30:29.954 .INFO ass分析 31.43ms 🤖 17:30:29.954 .INFO 子集化嵌入 929.18ms 🤖 17:30:29.955 .INFO 字幕处理完成: 0.12MB ==> 0.47MB 🤖 17:30:29.955 .INFO ---------------------------------------------------------------- 🌏 17:30:29.955 .INFO ****** - "GET /emby/Videos/182379/mediasource_182379/Subtitles/2/0/Stream.ass?api_key=****** HTTP/1.1" 200 🤖 17:30:29.985 .INFO 网络字体已保存 [/fonts/download/超级字体整合包 XZ/超级字体整合包 XZ/完整包/其他/简繁/黑体.ttf] 🤖 17:30:34.992 .INFO 分析了 1 个字体,耗时 4.31ms