swi*_*ish 12 video-player subtitle
有没有办法同时显示多个字幕?在学习一门新语言时会很有帮助。我有一些带有两个嵌入式字幕的 *.mkv 电影,我如何将它们都打开,以便一个在底部,另一个在顶部?或者至少快速切换并立即更新文本而不回退会很好。
我认为最好的方法是使用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)
默认情况下,没有任何用于循环次要字幕的键盘快捷键(以您可以使用j
和J
( 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,它也支持双/二级字幕,从 beta 4.0.0 开始。目前使它工作似乎比 MPV 更繁琐。
首先,您需要总体上打开它们。转到工具>首选项>字幕/OSD>双字幕(在最底部)>对齐并将其更改为未设置的任何内容。您可能还需要调整偏移量(相邻设置)。
播放视频时,您需要使用默认快捷键Ctrl+ Shift+来“切换二级字幕控制” V。(这意味着像v或Alt+这样的普通字幕控制快捷键v,用于在字幕之间来回切换,现在将应用于次要字幕,而不是主字幕。再次按Ctrl+ Shift+V将切换回将这些应用于主字幕.) 然后,按v正确的次数切换到您想要的(辅助)字幕。
小智 6
另一个合并字幕的工具是 DualSub ( http://dualsub.sourceforge.net/ )。它与 SRT 字幕一起用于输入和输出。它有许多自定义选项。此外,您可以使用它来将字幕翻译成任何语言。