Ошибка, с которой вы столкнулись, связана с неправильным обработчиком отклоненного promise. Для того чтобы исправить эту ошибку и наложить одну аудиозапись на другую в Node.js с использованием ffmpeg, вам нужно добавить обработчик отклоненного promise.
Вот пример кода, который позволяет наложить одну аудиозапись mp3 на другую при помощи ffmpeg:
```javascript
const ffmpeg = require('fluent-ffmpeg');
const mainAudioPath = 'path/to/main/audio.mp3';
const watermarkAudioPath = 'path/to/watermark/audio.mp3';
const outputFilePath = 'path/to/output/file.mp3';
ffmpeg()
.input(mainAudioPath)
.input(watermarkAudioPath)
.complexFilter([
'[0:a]volume=1[a0]', // громкость основной аудиозаписи
'[1:a]volume=0.5[a1]', // громкость ватермарка
'[a0][a1]amix=inputs=2:duration=first:dropout_transition=3'
])
.output(outputFilePath)
.on('end', () => {
console.log('Микширование аудио успешно завершено');
})
.on('error', (err) => {
console.error('Ошибка при микшировании аудио:', err);
})
.run();
```
В этом примере мы используем пакет `fluent-ffmpeg`, который предоставляет удобный интерфейс для работы с ffmpeg из Node.js. Мы указываем пути к основной аудиозаписи (`mainAudioPath`), водяному знаку (`watermarkAudioPath`) и файлу, в который сохранится результирующая аудиозапись (`outputFilePath`).
В строке `complexFilter` мы создаем комплексный фильтр для ffmpeg, который объединяет два аудиопотока: громкость основной аудиозаписи (`a0`) и громкость ватермарка (`a1`). Фильтр `amix` объединяет два аудиопотока в один, применяя переход в начале исходной аудиозаписи и dropout на протяжении 3 секунд.
После завершения микширования, в консоль будет выведено сообщение "Микширование аудио успешно завершено". Если произойдет ошибка, будет выведено сообщение "Ошибка при микшировании аудио", а также информация об ошибке.
Убедитесь, что у вас установлен ffmpeg на вашем сервере и все необходимые пакеты для работы с ffmpeg в Node.js.