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

FFMPEG Pick First Audio Stream of Specific Language

我正在尝试从视频文件(大约有 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 post 我找到了解决方案。

通过将命令拆分为 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