170 похожих чатов

Есть вот такой код // Получение буфера видео

const fileData = req.file.buffer;

// Сжатие видео
const compressedData = await new Promise((resolve, reject) => {
ffmpeg(fileData)
.size('500x500') // Установка размера
.outputOptions(['-movflags', 'faststart', '-pix_fmt', 'yuv420p']) // Дополнительные параметры
.outputFormat('mp4') // Установка формата
.on('error', (err) => reject(err))
.on('end', () => resolve(buffer))
.toFormat('mp4') // Формат сжатого видео
.save(`./temp/video-${Date.now()}.mp4`); // Сохраняем файл на сервере
});

Мне нужно сжать видео, получаемое из буфера и сохранить его на сервере.

Но выдает такую ошибку, говоря о том, что file должен быть строкой а не объектом, я так полагаю таким методом через ffmpeg сжать нельзя?

TypeError [ERR_INVALID_ARG_TYPE]: The "file" argument must be of type string. Received an instance of Object

8 ответов

27 просмотров

Может там путь к файлу надо указать

Andrey-Ponomarenko Автор вопроса
Romas Bitinas
Может там путь к файлу надо указать

Где именно?) Пробовал и так // Получение буфера видео const fileData = req.file.buffer; const filePath = `./temp/video-${Date.now()}.mp4`; fs.writeFileSync(filePath, fileData); // Сжатие видео const compressedData = await new Promise((resolve, reject) => { ffmpeg(filePath) .size('500x500') // Установка размера .outputOptions(['-movflags', 'faststart', '-pix_fmt', 'yuv420p']) // Дополнительные параметры .outputFormat('mp4') // Установка формата .on('error', (err) => reject(err)) .on('end', () => resolve(buffer)) .toFormat('mp4') // Формат сжатого видео .save(`./temp/video-${Date.now()}.mp4`); // Сохраняем файл на сервере }); То-есть видосик сохраняется в .temp но далее опять ошибка в консоли TypeError [ERR_INVALID_ARG_TYPE]: The "file" argument must be of type string. Received an instance of Object

Andrey-Ponomarenko Автор вопроса
Romas Bitinas
Output options возможно строкой должны быть?

Тоже не канает, можно вообще удалить outputOptions - ошибка та же)

Andrey Ponomarenko
Тоже не канает, можно вообще удалить outputOptions...

Странно. Вообще, как вариант - ffmpeg установить на сервер или комп и через js выполнять команды из терминала. У меня там всё раьотало

Andrey-Ponomarenko Автор вопроса
Romas Bitinas
Странно. Вообще, как вариант - ffmpeg установить н...

А есть еще какие-нибудь библиотеки для подобных целей? Не знаешь случайно?) А то третий день с этой голову ломаю)

Andrey Ponomarenko
А есть еще какие-нибудь библиотеки для подобных це...

Для выполнения команд терминала не нужно библиотек, есть модули ноды для этого. Нужно только ffmpeg установить на машину

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта