问题描述
我正在尝试将2种音频与ffmpeg-fluent混合使用,下面是实现此目的的代码。
ffmpeg()
.input(audio1)
.input(audio2)
.complexFilter([
{
filter: 'amix',options: { inputs: 2,duration: 'shortest' }
}
])
.on('end',async function (output) {
console.log(output,'files have been merged and saved.')
})
.savetoFile("mix.mp3");
现在,我还想分别为每个轨道设置音频级别,尝试通过音量作为音频过滤器,但是使用复杂过滤器时似乎不接受音频过滤器。
解决方法
我知道这个帖子已经有几个月了,但我想我还是会回答它,因为我找到了怎么做,如果有人像我一样找到这篇文章,他们就会得到答案。
const command = new FfmpegCommand();
//create audio file with voice and engine sound under.
await command
.addInput(inputFilePath)
.addInput('./audio/utility/RB16BengineOnboard.mp3').seekInput(40)
.complexFilter([{
filter: 'volume',options: ['1.0'],inputs: "0:0",outputs: "[s1]"
},{
filter: 'volume',options: ['0.15'],inputs: "1:0",outputs: "[s2]"
},{
filter: 'amix',inputs: ["[s1]","[s2]"],options: ['duration=first','dropout_transition=0']
}]).output('./audio/temp/overlayed.mp3').on('error',function(err) {
console.log(err);
})
.on('end',function() {
console.log('Amixed audio files together.');
})
.run();
对于输入:“0:0”,第一个 0 代表第一个 addInput 文件 a,第二个 0 代表该文件的音轨。 如此处所述: this thread about ffmpeg audio files
代码的其余部分是不言自明的,因为音量是音量,输出命名该过滤器的输出,以便稍后在代码中用作混合过滤器的输入。