fluent-ffmpeg устанавливает уровень звука со сложным фильтром

#ffmpeg #fluent-ffmpeg

#ffmpeg #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");
  

Теперь я также хотел бы установить уровни звука для каждой из этих дорожек независимо, попытался передать громкость в качестве аудиофильтра, но, похоже, он не принимает аудиофильтр при использовании сложного фильтра.

Ответ №1:

Я знаю, что этой теме несколько месяцев, но я подумал, что все равно отвечу на нее, так как нашел, как это сделать, и если кто-нибудь когда-нибудь найдет этот пост, как я, у них будет ответ.

 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 представляет звуковую дорожку этого файла.
как указано здесь:
эта тема об аудиофайлах ffmpeg

остальная часть кода довольно понятна, так как громкость — это громкость, а выходные данные называют выходные данные этого фильтра, поэтому его можно использовать позже в коде в качестве входных данных для фильтра amix.