是否可以让 SMPlayer 检查并从子目录加载外部字幕(例如 ./Subs/*.srt 等)?

是否可以让 SMPlayer 检查并从子目录加载外部字幕(例如 ./Subs/*.srt 等)?

我通常使用 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/)

完整的重现步骤如下:

  1. 已经安装了 SMPlayer mpv。 (不是我的问题,但仍然很重要)。我不确定哪个版本mpv添加了此处使用的选项。我有 v0.34.1,所以如果您使用的是旧版本的发行版,请尝试查看是否可以升级到 mpv v0.34.1 或更高版本。
  2. 在 SMPlayer 中:选项 -> 首选项 -> 常规 -> 常规选项卡,然后选择“多媒体引擎”作为“mpv” -> 应用按钮。
  3. 在 SMPlayer 中:选项 -> 首选项 -> 高级 -> “Mplayer/mpv”选项卡 -> 在选项字段下添加--sub-file-paths=Subs --sub-auto=all(或任何您想要调用 Subs 文件夹的内容) -> 应用按钮。
  4. 重新启动视频播放器。

相关内容