FFMPEG 如何提取可变数量的音频流?

FFMPEG 如何提取可变数量的音频流?

我正在尝试制作一个小批处理文件,在将视频拖到该文件上时提取所有音频流。

ffmpeg.exe -i "%1" -map 0:a? -c:a copy "%1~extracted.aac"

但这似乎会覆盖它找到的每个音频流的同一个文件。

我不想指定音轨的数量,因为它可能会有所不同。

在此先感谢您的帮助!

答案1

没有直接的方法可以做到这一点。

有一种略显繁琐的解决方法,它依赖于 tee 复用器以及对您可能遇到的最大音频流数量的猜测。假设是 4。

因此,命令是

ffmpeg -i in.mp4 -c copy -map 0:a?
       -f tee
              "[select='a\:0':onfail=ignore]in-0.aac|[select='a\:1':onfail=ignore]in-1.aac|
               [select='a\:2':onfail=ignore]in-2.aac|[select='a\:3':onfail=ignore]in-3.aac"

所有四个文件都会被创建,但如果大小为零,则表示流不存在。因此,一旦删除所有大小为零的输出,您就会获得所有提取的流。FFmpeg 不会自动选择输出格式,因此流必须是 AAC。使用最新的 ffmpeg 版本 4.0+

相关内容