同时显示两个字幕轨道

swi*_*ish 12 video-player subtitle

有没有办法同时显示多个字幕?在学习一门新语言时会很有帮助。我有一些带有两个嵌入式字幕的 *.mkv 电影,我如何将它们都打开,以便一个在底部,另一个在顶部?或者至少快速切换并立即更新文本而不回退会很好。

apl*_*ice 8

mpv

我认为最好的方法是使用mpv(可通过sudo apt install mpv)。

我将假设所有字幕都是内置的(如问题中所述)或单独的但名称适当的外部文件(例如,如果您的电影被称为file1.mkv您的字幕文件应该是file1.srt)。如果没有,你可以通过添加选项明确指定的字幕文件--sub-file=subtitle_file_lang_xx.src--sub-file=subtitle_file_lang_yy.src等或通过玩弄--sub-auto(如--sub-auto=fuzzy)。

不管它们是如何选择的(内置的或从外部文件中选择的),当您播放视频文件时,每组字幕都将在其自己的“流”中。流被分配了连续的整数索引(1、2、3...)。通常,内置字幕(逻辑上)具有较早的索引。当您播放文件时,流索引、它们的语言(如果字幕具有指定的语言)以及字幕是否来自外部文件,都会显示在终端中mpv。例如,运行后mpv file1.mkv

(+) Subs  --sid=1 --slang=eng (*) (subrip)
    Subs  --sid=2 --slang=fra (subrip)
    Subs  --sid=3 'file1.srt' (subrip) (external)
Run Code Online (Sandbox Code Playgroud)

这里前两个字幕是内置的,语言分别是英语(eng)和法语(fra),而第三个来自外部文件。索引 ( sid) 是 1, 2, 3。默认字幕流是第一个(用 a 标记(*)),它也是被选中的那个(用 a标记(+))。

了解这些索引后,您可以使用选项--sid和指定“主要”和次要字幕--secondary-sid。例如,要显示上例中的英文字幕,作为主字幕,将法文字幕作为次要字幕,您可以(在终端中)运行:

(+) Subs  --sid=1 --slang=eng (*) (subrip)
    Subs  --sid=2 --slang=fra (subrip)
    Subs  --sid=3 'file1.srt' (subrip) (external)
Run Code Online (Sandbox Code Playgroud)

使用键盘快捷键循环辅助字幕

默认情况下,没有任何用于循环次要字幕的键盘快捷键(以您可以使用jJ( Shift+ j)循环“主”字幕的方式)。但是,您可以很容易地添加一些。

例如,如果您将以下内容添加到您的~/.config/mpv/input.conf(或更一般地,您的${XDG_CONFIG_HOME}/mpv/input.conf):

Ctrl+j cycle secondary-sid
Ctrl+J cycle secondary-sid down
Run Code Online (Sandbox Code Playgroud)

然后Ctrl+j将循环在相同方向上的二次字幕该j循环主要的(增加字幕流指数),并且Ctrl+ Shift+j将循环它们在相反的方向J(减少字幕流索引)。

VLC

如果你更喜欢 VLC,它也支持双/二级字幕,从 beta 4.0.0 开始。目前使它工作似乎比 MPV 更繁琐。

首先,您需要总体上打开它们。转到工具>首选项>字幕/OSD>双字幕(在最底部)>对齐并将其更改为未设置的任何内容。您可能还需要调整偏移量(相邻设置)。

播放视频时,您需要使用默认快捷键Ctrl+ Shift+来“切换二级字幕控制” V。(这意味着像vAlt+这样的普通字幕控制快捷键v,用于在字幕之间来回切换,现在将应用于次要字幕,而不是主字幕。再次按Ctrl+ Shift+V将切换回将这些应用于主字幕.) 然后,按v正确的次数切换到您想要的(辅助)字幕。

  • 非常感谢!终于得到了一些关于如何实际使用 VLC4 UI 来处理两个字幕的“说明”。请注意,没有捷径似乎是不可能的(目前)。 (3认同)

小智 6

另一个合并字幕的工具是 DualSub ( http://dualsub.sourceforge.net/ )。它与 SRT 字幕一起用于输入和输出。它有许多自定义选项。此外,您可以使用它来将字幕翻译成任何语言。