OpenList 在浏览器内置播放器中处理字幕时存在一些限制,本文记录目前有效的解决思路。
内嵌软字幕
遇到已内嵌软字幕的文件,播放时却无字幕显示的情况,可点击视频页面下方的小按钮,跳转到外部播放器播放。
PC 端(Windows)
推荐使用 MPV。
可配合以下小工具实现从 OpenList 页面一键唤起:
2026-10-16 补充:
目前推荐使用 WebDav,详情请看我另一篇文章
Android 端
推荐 VLC 或 MX Player(其中 VLC 可正常解析 MKV 内嵌软字幕)
使用时需要注意不要直接点击视频页面的「VLC 图标」(会提示“无法解析视频”),改点旁边的「安卓图标」按钮,然后在弹出的系统选择框里选 VLC 即可正常播放
为什么点击 VLC 会报错?
OpenList 前端(video_box.tsx)定义的唤起模板为 vlc://$durl:
{ icon: "vlc", name: "VLC", scheme: "vlc://$durl" },{ icon: "android", name: "Android", scheme: "intent:$durl#Intent;type=video/*;S.title=$name;end" },当直链为 https://... 时,前端拼接出的 vlc://https://... 在浏览器导航过程中会被自动剥离冒号,变成 vlc://https//myopenlist.example.com/...。
在 VLC 源码(modules/access/idummy.c)中,vlc:// 属于控制指令协议(比如 vlc://quit),并非网络流协议:
vlc_module_begin () set_shortname( N_("Dummy") ) add_shortcut( "dummy", "vlc" ) // 注册 vlc:// 协议vlc_module_end ()由于找不到对应的内部指令,VLC 会直接在日志中报错并终止播放:
main debug: creating demux: access='vlc' demux='any' location='https//myopenlist.example.com/d/Anime/test.mkv?sign=xxx:0'idummy error: unknown command `https//myopenlist.example.com/d/Anime/test.mkv?sign=xxx:0`相比之下,点击「安卓图标」按钮生成的是标准的 Android Intent 链接(intent:https://...#Intent;type=video/*),系统会将原样无损的 https:// 直链传给 VLC,从而能正常播放并加载内嵌软字幕
2026-10-16 补充:
安卓端使用支持 WebDav 的播放器可能体验更好,目前我发现下面的项目符合我的需求,内嵌软字幕的 MKV 也能正常解析
可惜没有中文界面,某酷安有人做了汉化,但不开源,感兴趣可自行搜索
Waiting for api.github.com...
外挂字幕
即便字幕文件与视频文件同名,且在同一目录,但 OpenList 并不会自动加载字幕
目前暂未找到 OpenList 自动加载外挂字幕的可靠方法
替代做法是:
- 单独下载字幕文件到本地
- 在外部播放器中手动选择该字幕文件