我正在尝试从视频中提取字幕作为.srt
文件,我使用了以下命令:
ffmpeg -i mytestmovie.mkv -vn -an -codec:s:0.1 srt sub.srt
但是,我收到无法识别选项的错误codec:s:0:1
,那么,您能告诉我确切的命令以及如何将字幕提取为.srt
视频中的文件吗?
答案1
答案2
ffmpeg -i video.mkv subs.srt
很邪恶吧?
刚刚为我工作过,适用于包含单个 SRT 流的一堆 MKV。显然这是默认行为。我的 ffmpeg 版本是 20170516,来自 ubuntu 16.4
答案3
-codec:s:0:1
是不正确的。如果您使用,-codec:s:0
则 ffmpeg 将使用指定的编解码器作为传递到输出的第一个字幕流,如果您使用,-codec:s:1
则它将使用它作为第二个字幕流,等等。
您还可以使用-codec:s
选择全部输出字幕流,或者-codec:2
选择第三个输出流,不管它是什么。
您可能会感到困惑,因为该-map
选项的行为方式不同 - 在那里,您必须选择所选流来自哪个输入。(因此,-map 0:s:0
将从第一个输入中获取第一个字幕流,并将其提供给输出)。但是,-map
用于选择要从输入中获取的流;而大多数使用流映射的其他选项都是在选择流后在流上使用(因此无需指定它们来自哪个输入文件),因为它们会传递到输出。
答案4
如果字幕单独混编到 MP4 中,而不是硬编码,我总是使用mkvmerge -o output.mkv theinput.mp4
。然后使用mkvextract tracks output.mkv 2:thetrackidof.vob
。
然后使用vobsub2srt thetrackidof
(“thetrackidof”是没有 IDX 或 VOB 文件扩展名的字幕文件的文件名)。每次都有效。