如何使用 ffmpeg-map
开关通过其编解码器选择音轨?
假设有一个 video.mkv,其中包含一个视频流(0)和三个音轨(1、2、3)。
音轨有不同的编解码器,例如 DTS、AAC 和 AC-3(任意顺序)。
我想生成一个带有视频流的输出文件-map 0:0
,仅有的AAC 轨道,类似于:
ffmpeg -i video.mkv -map 0:0 -map 0:aac -codec copy output_with_aac_audio.mkv
在真实场景中,我不知道哪一个是 AAC 轨道(1、2 还是 3)。
答案1
正如 Tom Yan 在他的评论中提到的,您可以使用它ffprobe
来获取流索引:
$ ffprobe -loglevel error -select_streams a -show_streams -show_entries stream=index,codec_name:tags=:disposition= -of csv input.mkv
stream,1,vorbis
stream,2,aac
stream,3,mp3
我假设您使用的是 Linux,因此添加awk
只会为您提供 aac 流的索引。在此示例中,结果显示 aac 流为流索引2
:
$ ffprobe -loglevel error -select_streams a -show_streams -show_entries stream=index,codec_name:tags=:disposition= -of csv input.mkv | awk -F',' '/aac/ {print $2}'
2
-map 0:2
然后在您的命令中使用ffmpeg
。