Я использую Multer в качестве промежуточного программного обеспечения для передачи файлового буфера в мой контроллер в Express. Я могу легко конвертировать буфер в читаемый поток, используя Streamifier, а затем конвертировать. Например:
ffmpeg()
.input(streamifier.createReadStream(req.file.buffer))
.format('mp3')
.audioCodec('libmp3lame')
.audioQuality(0)
///etc.....
Моя проблема в том, что я хотел бы подтвердить метаданные файла перед преобразованием.
ffmpeg()
.input(streamifier.createReadStream(req.file.buffer))
.ffprobe((err, data) => {
Проблема 1: Некоторые аспекты мета не могут быть захвачены из потока. Самое главное, data.format.duration
.
Задача 2:
Из документации fluent-ffmpeg:
"Предупреждение: ffprobe может вызываться с входным потоком, но в этом случае он будет использовать данные из потока, и эти данные больше не будут доступны для ffmpeg. Использование ffprobe и команды транскодирования в одном входном потоке скорее всего, потерпит неудачу, если поток не является живым потоком. Делайте это, только если вы знаете, что делаете. "
Я хотел бы сохранить свою архитектуру без сохранения состояния (не используя файловую систему), и, во-вторых, я хотел бы выполнить этот процесс достаточно эффективно. Кто-нибудь делал это с пакетами с открытым исходным кодом npm раньше, какие-либо рекомендации?
Заранее спасибо!