如何在 MKV 文件中添加和删除字幕?

nut*_*ute 38 video subtitles matroska macos

我有一个高质量的 MKV 文件,它有几个字幕选项。我想在列表中添加一个额外的字幕文件。我正在使用 OSX。

网上的一些搜索让我使用了视频转换器,基本上将电影重新编码为一个新文件。这对我来说似乎太过分了。另外,我可能会丢失以前的字幕,并在此过程中丢失一些图像质量。

Lri*_*Lri 58

去除字幕:

mkvmerge -o output.mkv input.mkv -S # remove all subtitle tracks
mkvmerge -o output.mkv input.mkv -s 3,4 # remove tracks 3 and 4
mkvmerge -o output.mkv input.mkv -s '!3' # remove all subtitle tracks except 3
mkvmerge -i input.mkv # show track numbers
Run Code Online (Sandbox Code Playgroud)

添加字幕:

mkvmerge -o output.mkv input.mkv subs.srt
mkvmerge -o output.mkv input.mkv --language 0:ger --track-name 0:German subs.srt
Run Code Online (Sandbox Code Playgroud)

提取字幕:

mkvextract tracks input.mkv 3:subs.srt
Run Code Online (Sandbox Code Playgroud)
for f in *.mkv; do
  sub=$(mkvmerge -i "$f" | awk '$4=="subtitles"{print;exit}')
  [[ $sub ]] || continue
  [[ $sub =~ S_TEXT/ASS ]] && ext=ass || ext=srt
  track=$(awk -F '[ :]' '{print $3}' <<< "$sub")
  mkvextract tracks "$f" "$track:${f%mkv}$ext"
done
Run Code Online (Sandbox Code Playgroud)

mkvmerge 和 mkvextract 可以使用brew install mkvtoolnix.

  • MKVMerge GUI 已经在 Mac OS X 上可用,但是,对于控制台粉丝来说,这是一个很好的方法。 (2认同)

Ric*_*lka 5

显示字幕有两种基本方式。您可以将像素编码到视频本身中。这称为“硬字幕”。这里的优点是视频播放器的简单性,它只是一个视频流。缺点是您必须重新编码视频,这需要时间,并且保真度会有所损失。如果你得到更好的翻译,那么,它就是视频中的像素。而且你只能拥有一种语言。

更好的是“软字幕”,即在某个地方有一个与视频流分开的文本文件。字幕文件的格式有很多种,但其核心都是“文本、开始时间、删除时间”。有些还具有额外的功能,例如屏幕上的颜色和方向。这样做的优点是您可以拥有多种语言(想象一下 DVD,您可以使用多种语言)并且可以修复文件中的拼写错误等。如果您不需要字幕,只需将其关闭即可。

Softsub 可以是单独的文件 - 大多数播放器会自动查找与主视频同名(不同扩展名)的字幕。或者某些容器文件格式(如 MKV)可以将它们嵌入其中。查看MKVtoolnix(有一个 mac 端口)以获取 MKV 文件工具。这应该可以让您嵌入软字幕而无需重新编码。

请注意,并非所有播放器都支持所有格式。我的经验是,XBMC 对 SSA 文件有问题,但简单得多的 SRT 文件没问题。只要您的平台支持,VLC 就可以播放任何内容。