使用 ffmpeg,我可以直接从 mkv 字幕轨道而不是字幕文件刻录字幕吗?

使用 ffmpeg,我可以直接从 mkv 字幕轨道而不是字幕文件刻录字幕吗?

我有一个包含多个字幕流的 mkv。我知道我可以使用 mkvextract 将其中一个字幕流提取到一个文件中,例如 sub.srt。然后我可以使用 ffmpeg 将这些字幕刻录到新视频中,如下所示:

ffmpeg -i video.mkv -vf subtitles=sub.srt out.mp4

我还知道我可以使用 -map 来选择视频、音频和字幕轨道并将它们编码到新视频中,同样如下所示:

ffmpeg -i video.mkv -map 0:0 -map 0:1 -map 0:4 -c:v copy -c:a copy -c:s copy out.mp4

然而,我无法弄清楚如何对视频进行转码并将字幕刻录到新文件中(不仅仅是添加字幕轨道,而是将它们刻录到视频中),不是通过从字幕文件中读取而是直接从旧视频流本身读取。

有任何想法吗?

答案1

我最近偶然发现了这篇文章,我确实知道答案。我希望它也能帮助其他人。

您基本上要做的就是将 mkv 文件放入 subtitles 变量中。您可以添加 :si=0(字幕索引),它获取可以找到的第一个字幕流。如果文件中有空格,则必须使用双引号和单引号。

ffmpeg -i video.mkv -vf "subtitles='video.mkv':si=0" out.mp4

相关内容