处理 ffmpeg 时如何自动选择音频/字幕(使用特定语言选择)流?

处理 ffmpeg 时如何自动选择音频/字幕(使用特定语言选择)流?

例如:我有 2 个 MKV 视频,其中有 3 个音频流(英语、法语和普通话)和 2 个字幕流(英语和普通话)

音频流可以按任意顺序出现。例如,在第一个视频中,普通话是第一个音频流,但在第二个视频中,它使用的是法语。字幕的情况也一样。

我想自动选择普通话音频和英文字幕,而不必指定流号(也许使用-map?)。

这可能吗?如果可以,怎么做?

谢谢!

答案1

目前无法通过单个命令完成此操作。但是,可以使用多个命令来解决。

ffmpeg -i in.mkv -map 0:m:language=chi? -c copy chi.mkv

ffmpeg -i in.mkv -map 0:m:language=eng? -map -0:v -c copy eng.mkv

ffmpeg -i in.mkv -i chi.mkv -i eng.mkv -map 0:v -map 1:a? -map 2:s? -c copy final.mkv

第一个命令将所有中文流(如果有)提取到临时 MKV 中。

第二条命令将除视频之外的所有英语语言流(如果有)提取到临时 MKV 中。

最后的命令映射原始文件中的视频、中文临时文件中的音频以及英文临时文件中的字幕。

相关内容