我一直试图将背景音频添加到另一个音频文件中。这是我尝试过的:
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)。任何帮助表示赞赏。
答案 0 :(得分:1)
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