FFMPEG选择特定语言的第一个音频流



我正试图从视频文件中提取一个特定语言的音频流(大约有10个不同的音频流(。

所以我尝试使用这个命令:

ffmpeg -i file.mkv -map 0:a:m:language:eng output.mp3

问题是该视频包含多个英语音频流。所以我得到了错误:

Invalid audio stream. Exactly one MP3 audio stream is required.

这是流映射:

Stream #0:1 -> #0:0
Stream #0:4 -> #0:1

从这两条溪流中,我只想要第一条。我尝试过使用-map 0:a:m:language:eng -map 0:0,但这无助于缩小范围。

注意:我需要语言过滤器,因为流号在多个文件中不一致。但数字较低的英语流总是我想要映射的正确流。

感谢@kesh的帖子,我找到了解决方案。

通过将命令拆分为2并在下一个命令中进行管道传输,可以获得预期的行为。

这是对我有效的代码:

ffmpeg -i input.mkv -map 0:a:m:language:eng -acodec copy -f matroska pipe: | ffmpeg -i pipe: -map 0:0 -c:a libmp3lame output.mp3

最新更新