ffmpeg:通过编解码器 ID 选择(-map)音轨

ffmpeg:通过编解码器 ID 选择(-map)音轨

如何使用 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

相关内容