我正在尝试从 MP4 和 MKV 电影中提取字幕。我正在使用 mp4box(在 OS X 上),但不知道它是如何工作的。
有什么提示吗?
答案1
MP4 和 3GP 文件
免费且跨平台MP4盒仅适用于 MP4 或 3GP 容器。您可以从主页安装它。首先,您需要查看不同的轨道,看看哪个 ID 属于字幕轨道。
MP4Box -info input.mp4
查看字幕轨道旁边的 ID。然后,根据<trackId>
要提取的轨道 ID,调用以下命令:
MP4Box -raw <trackID> input.mp4
或者,导出为常用的 SRT 格式:
MP4Box -srt <trackID> input.mp4
MKV 文件
为了从 Matroska (MKV) 文件中提取字幕,你需要免费且开源的mkvtoolnix
软件包。它们适用于 Windows 和 Linux,在 Mac 上,您可以通过自制和brew install mkvtoolnix
。
然后,检查文件:
mkvmerge -i input.mkv
这将列出曲目,例如像这样:
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)
根据轨道的 ID,调用以下命令,其中<trackID>
是您上面识别的那个。<output>
只是一个虚拟名称,您可以使用任何您想要的名称。
mkvextract tracks input.mkv <trackID>:<output>.srt
因此,对于我们来说,情况应该是:
mkvextract tracks input.mkv 3:subs.srt
答案2
这是针对几乎所有受支持的文件格式的解决方案ffmpeg
(甚至支持远程文件):
ffmpeg -i video.mp4 subtitle.srt
ffmpeg
在较新的 Ubuntu 版本中默认存在,对于 Mac OS X 和 Windows,你必须安装它(通过从官方网站下载或通过 homebrew )。
这里video.mp4
是源本地或远程视频文件名,subtitle.srt
是输出字幕文件名。指定输出的文件扩展名很重要,因为ffmpeg
它会检测您要提取的内容。也就是说,您可以指定.mp3
文件扩展名以从视频文件中提取 mp3 音频,或者只需设置另一个视频容器即可在格式之间进行转换。