![是否可以让 SMPlayer 检查并从子目录加载外部字幕(例如 ./Subs/*.srt 等)?](https://linux22.com/image/209412/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E8%AE%A9%20SMPlayer%20%E6%A3%80%E6%9F%A5%E5%B9%B6%E4%BB%8E%E5%AD%90%E7%9B%AE%E5%BD%95%E5%8A%A0%E8%BD%BD%E5%A4%96%E9%83%A8%E5%AD%97%E5%B9%95%EF%BC%88%E4%BE%8B%E5%A6%82%20.%2FSubs%2F*.srt%20%E7%AD%89%EF%BC%89%EF%BC%9F.png)
我通常使用 VLC,大部分时间都工作得很好,但根据建议检查 mpv 和基于 mpv 的播放器,我一直在尝试看看 SMPlayer 是否也能满足我的需求。但是,我在让它检测位于子文件夹中的外部字幕文件时遇到问题,例如
$ cd some-show-s01/
$ tree
.
├── Some.Show.S01E01.mp4
├── Some.Show.S01E02.mp4
├── Some.Show.S01E03.mp4
└── Subs
├── Some.Show.S01E01.English-1.srt
├── Some.Show.S01E01.English-2.srt
├── Some.Show.S01E02.English-1.srt
├── Some.Show.S01E02.English-2.srt
├── Some.Show.S01E03.English-1.srt
└── Some.Show.S01E03.English-2.srt
我还尝试过每集只有一个子项目,其名称与视频文件完全匹配(例如./Subs/Some.Show.S01E01.srt
),以及名为“Subtitles”而不是“Subs”的子文件夹下的两个变体。 VLC 会自动为所有这四种情况选择外部低音炮。
有没有办法让 SMPlayer 也能做到这一点?如果没有,除了 VLC 之外还有其他 Linux 视频播放器支持这种布局吗?
我混合使用 Fedora 35 / 36(台式机 + 笔记本电脑),并且在必要时可以轻松地从源代码进行编译(尽管从其他发行版转换依赖包名称有时很困难)。我使用的是 SMPlayer v22.7.0(修订版 10091)。
# dnf list installed smplayer mpv
Installed Packages
mpv.x86_64 0.34.1-2.fc35 @rpmfusion-free-updates
smplayer.x86_64 22.7.0-1.fc35 @rpmfusion-free-updates
编辑:
我可以在 mpv 本身中播放视频并使用以下命令加载字幕:
$ cd some-show-s01/
$ mpv --sub-file-paths='Subs' --sub-auto='all' ./Some.Show.S01E02.mp4
但是,更改 SMPlayer 设置这次讨论,在“首选项”->“高级”->“MPlayer/mpv 选项”下添加--sub-file-paths='Subs' --sub-auto='all'
到选项字段并单击“应用”,我收到以下错误消息:
/usr/bin/mplayer -noquiet -slave -identify -nofs -sub-fuzziness 1 -nodr -double -nomouseinput -input nodefault-bindings:conf=/dev/null -nokeepaspect -wid 92274705 -monitorpixelaspect 1 -osdlevel 0 -subfont -osd-scale 3 -progbar-align 80 -ass -embeddedfonts -ass-line-spacing 0 -ass-font-scale 1 -noflip-hebrew -ass-styles /home/myuser/.config/smplayer/styles.ass - subcp ISO-8859-1 -alang japanese,jap,jp,english,eng,en -slang english,eng,en -subpos 100 -volume 100 -ss 27 -vf-add snapshot=/home/myuser/Pictures/smplayer_screenshots/镜头-noslices -af-add scaletempo -softvol -softvol-max 200 --sub-file-paths='Subs' --sub-auto='all' /home/myuser/Videos/podcasts/some-show-s01/一些.Show.S01E02.mp4
命令行上的未知选项:--sub-file-paths='Subs'
命令行上解析选项时出错:--sub-file-paths='Subs'
MPlayer 1.5-11 (C) 2000-2022 MPlayer 团队
ID_EXIT=无
编辑:
解决了。我的问题有两个方面:首先,我需要添加一些参数来告诉底层视频播放器,SMPlayer 使用它们从文件夹中加载字幕文件。其次,我已指定参数,mpv
但我的 SMPlayer 默认为 MPlayer,因此我不得不更改它调用的视频播放器。或者,我可以研究在 MPlayer 中执行相同操作需要哪些参数(没有这样做,因此无法确认是否可行)。
答案1
解释
感谢 Sir_not_sir 的支持Reddit 的 linuxquestions 子寻找让我回顾事情并最终解决问题的提示。我还进行了一些额外的研究和反复试验,但我终于让它发挥作用了。
他曾向我指出http://old-forum.smplayer.info/viewtopic.php?f=2&t=8743其中已经提到 SMPlayer 可以mpv
在其高级选项中传递参数并建议--sub-paths=/tmp/subs --sub-auto=all|fuzzy
。我之前看过这篇文章,但假设只适用于静态路径,/tmp/subs
而不是相对于视频文件的路径。但在再次阅读之后,这导致我进行了更多搜索,然后我发现了一个拱门维基页面这表明这--sub-paths
是“已弃用,使用--sub-file-paths。”,这正是--sub-file-paths
我一直在寻找的。
--子文件路径=
指定额外的目录来搜索与视频匹配的字幕。多个目录可以用“:”(在 Windows 上为“;”)分隔。路径可以是相对路径或绝对路径。相对路径是相对于视频文件目录进行解释的。如果文件是 URL,则仅扫描绝对路径和子配置子目录。
例子
假设播放 /path/to/video/video.avi 并指定 --sub-file-paths=sub:subtitles,mpv 在以下目录中搜索字幕文件:
/路径/到/视频/
/路径/到/视频/子/
/路径/到/视频/字幕/
sub配置子目录(通常是~/.config/mpv/sub/)
完整的重现步骤如下:
- 已经安装了 SMPlayer
mpv
。 (不是我的问题,但仍然很重要)。我不确定哪个版本mpv
添加了此处使用的选项。我有 v0.34.1,所以如果您使用的是旧版本的发行版,请尝试查看是否可以升级到 mpv v0.34.1 或更高版本。 - 在 SMPlayer 中:选项 -> 首选项 -> 常规 -> 常规选项卡,然后选择“多媒体引擎”作为“mpv” -> 应用按钮。
- 在 SMPlayer 中:选项 -> 首选项 -> 高级 -> “Mplayer/mpv”选项卡 -> 在选项字段下添加
--sub-file-paths=Subs --sub-auto=all
(或任何您想要调用 Subs 文件夹的内容) -> 应用按钮。 - 重新启动视频播放器。