使用 fluent-ffmpeg 添加背景音乐

Adding background music using fluent-ffmpeg

我一直在尝试将背景音频添加到另一个音频文件。这是我尝试过的:

      const audio_urls = ['/path/audio1.m4a', '/path/audio2.m4a'];
      const file_name = 'merged_file.m4a';
      ffmpeg()
      .input(audio_urls[0])
      .input(audio_urls[1])
      .on('end', async function (output) {
        console.log(output, 'files have been merged and saved.')
      })
      .saveToFile(file_name)

出于某种原因,生成的文件只有第二个音频文件声音(即 audio2.m4a)。任何帮助表示赞赏。

使用复杂的过滤器创建 2 个音频输入的缩混

fluent-ffmpeg 没有提及任何关于 "overlaying" 2 输入的内容,我想你最好的机会是使用复杂的过滤器并创建 2 个音频样本的缩混。

您可以使用 amix 过滤器将多个音频输入混合到一个输出中,也可以使用 amerge 过滤器将两个或多个音频流合并到一个多声道流中.我建议您使用 amix 过滤器。

如何在 fluent-ffmpeg 中使用复合过滤器:

ffmpeg()
      .input(audio_urls[0])
      .input(audio_urls[1])
      .complexFilter([
        {
           filter : 'amix', options: { inputs : 2, duration : 'longest' }
        }
      ])
      .on('end', async function (output) {
        console.log(output, 'files have been merged and saved.')
      })
      .saveToFile(file_name)

关于过滤器的更详细的回答:How to overlay/downmix two audio files using ffmpeg

关于 complexFilter() 的文档:https://github.com/fluent-ffmpeg/node-fluent-ffmpeg#complexfilterfilters-map-set-complex-filtergraph