使用fluent-ffmpeg添加背景音乐

时间:2020-05-17 07:47:24

标签: node.js ffmpeg 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)。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

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

fluent-ffmpeg没有提及有关“叠加” 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