合并并复制视频文件中的 2 个音轨

合并并复制视频文件中的 2 个音轨

我有一个包含 2 个音轨的视频文件。我希望使用一个ffmpeg操作来制作包含以下内容的视频:

  1. 合并音频
  2. 音频 #1
  3. 音频 #2

通过这个我可以合并音频,最终得到带有单个合并音轨的视频:

ffmpeg -i "myvideo-with-2-audio-tracks.mkv" -c:v copy -c:a aac -ac 2 -filter_complex amerge=inputs=2 "myvideo-with-1-merged-audio-track.mkv"

我可以使用第二个命令来合并所有内容,但这需要处理两次。如果我添加-c:a copy到末尾,则会收到错误:

Streamcopy requested for output stream fed from a complex filtergraph.
Filtering and streamcopy cannot be used together

答案1

我们可以使用通道映射和编解码器索引:

ffmpeg -i "myvideo-with-2-audio-tracks.mkv" -c:v copy -filter_complex "amerge=inputs=2[a]" -map 0:v -map "[a]" -map 0:a:0 -map 0:a:1 -c:a:0 aac -ac:0:2 2 -c:a:1 copy -c:a:2 copy "myvideo-with-1-merged-audio-track.mkv"


  • "amerge=inputs=2[a]"- 为合并的音频提供一个临时名称[a]
  • -map 0:v -map "[a]" -map 0:a:0 -map 0:a:1- 映射视频,然后映射合并的音频,然后映射第一个输入音频流,然后映射第二个输入音频流(映射到输出流)。
  • -c:a:0 aac -ac:0:2 2 -c:a:1 copy -c:a:2 copy- 应用aac合并音频的编解码器,以及copy两个输入音频流的编解码器。

正如原帖作者所言,我们必须设置,-ac:a:0 2而不仅仅是-ac:0 2获取具有 2 个音频通道的音轨 #1。
添加将-disposition:a:0 default第一个音轨定义为默认音轨。

相关内容