如何从 MP4 和 MKV 电影中提取字幕

Ope*_*way 46 linux subtitles video-conversion matroska macos

我正在尝试从 MP4 和 MKV 电影中提取字幕。我正在使用 mp4box(在 OS X 上),但不知道它是如何工作的。

任何提示?

slh*_*hck 66

MP4 和 3GP 文件

免费的跨平台MP4Box仅适用于 MP4 或 3GP 容器。您可以从主页安装它。首先,您要查看不同的轨道并查看哪个 ID 属于字幕轨道。

MP4Box -info input.mp4
Run Code Online (Sandbox Code Playgroud)

查看字幕轨道旁边的 ID。然后,根据<trackId>您要提取的轨道 ID ,调用以下命令:

MP4Box -raw <trackID> input.mp4
Run Code Online (Sandbox Code Playgroud)

或者,导出为常用的 SRT 格式:

MP4Box -srt <trackID> input.mp4
Run Code Online (Sandbox Code Playgroud)

MKV 文件

为了从 Matroska (MKV) 文件中提取字幕,您需要免费和开源mkvtoolnix包。他们来为Windows和Linux和Mac上,你可以通过安装这些自制brew install mkvtoolnix

然后,检查文件:

mkvmerge -i input.mkv
Run Code Online (Sandbox Code Playgroud)

这将列出曲目,例如:

File 'input.mkv': container: Matroska
Track ID 1: video (V_MPEG4/ISO/AVC)
Track ID 2: audio (A_AAC)
Track ID 3: subtitles (S_TEXT/UTF8)
Run Code Online (Sandbox Code Playgroud)

根据轨道的 ID,调用以下命令,其中<trackID>是您在上面标识的那个。<output>只是一个虚拟名称,您可以使用任何您想要的名称。

mkvextract tracks input.mkv <trackID>:<output>.srt
Run Code Online (Sandbox Code Playgroud)

所以,在我们的例子中,这将是:

mkvextract tracks input.mkv 3:subs.srt
Run Code Online (Sandbox Code Playgroud)


TiG*_*iGR 31

这是几乎支持的任何文件格式的解决方案ffmpeg(甚至支持远程文件):

ffmpeg -i video.mp4 subtitle.srt
Run Code Online (Sandbox Code Playgroud)

ffmpeg默认情况下,在较新的 Ubuntu 版本中存在,对于 Mac OS X 和 Windows,您必须安装它(通过从官方网站或通过自制软件下载)。

这里video.mp4是源本地或远程视频文件名,subtitle.srt是输出字幕文件名。为输出指定文件扩展名很重要,因为它ffmpeg会检测到您想要提取的内容。也就是说,您可以指定.mp3文件扩展名以从视频文件中提取 mp3 音频,或者仅设置另一个视频容器以在格式之间进行转换。