#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.