使用ffmpeg合并两个音频文件

发布时间 2023-06-06 20:44:11作者: wieneralan
#寻找指定路径下所有的wav文件
find $filePath -iname "*.wav" > wav.flist
#依次取出每个wav文件,与test.wav进行合并
for line in `cat wav.flist`
do
    echo $line
    ffmpeg -i path/to/test.wav -i $line -filter_complex "[0:a]volume=1,atrim=1:4[a1];[1:a]volume=0.5[a2];[a1][a2]amix=inputs=2:duration=longest" -y $line
done
  • [0:a]volume=1[a1]:这个部分将第一个音频的音量设置为1,也就是原始音量。[0:a]表示选择第一个音频输入,volume=1将其音量设置为1(保持不变),[a1]是输出的音频流名称。

  • atrim=1:4 截取第一个音频1:4秒
  • [1:a]volume=0.5[a2]:这个部分将第二个音频的音量设置为0.5倍。[1:a]表示选择第二个音频输入,volume=0.5将其音量设置为0.5倍,[a2]是输出的音频流名称。

  • [a1][a2]amix=inputs=2:duration=longest:这个部分将两个音频流混合在一起。[a1][a2]表示之前设置的两个音频流,amix将它们混合在一起,inputs=2表示两个输入音频,duration=longest表示输出音频的持续时间与最长的输入音频持续时间相匹配。

  • output.mp3:这是输出音频文件的路径和文件名。您可以将其更改为所需的位置和名称。