fluent-ffmpeg使用复杂的过滤器设置音频级别

问题描述

我正在尝试将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

代码的其余部分是不言自明的,因为音量是音量,输出命名该过滤器的输出,以便稍后在代码中用作混合过滤器的输入。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...