Как использовать потоки с FFMPEG и Node

#node.js #ffmpeg #stream

#node.js #ffmpeg #поток

Вопрос:

Я заинтересован в использовании ffmpeg с узлом. Я просмотрел множество доступных библиотек (например, fluent-ffmpeg), но это не то, что я ищу.

Я хотел бы знать, есть ли способ выполнить FFMPEG с помощью node, но вместо создания файла перенести все в поток. Я не хочу использовать дисковое пространство по «причинам», и для моего приложения было бы разумнее выполнить команду и передать это аудио / видео в поток узла вместо этого.

Есть ли способ сделать это? Если да, то какой мой лучший выбор?

Ответ №1:

Да, это действительно просто, как дочерний процесс.

Если вы используете дефис - для входного или выходного имени файла, это позволит вам передавать с помощью STDIN или STDOUT. Поэтому вам просто нужно сделать что-то вроде этого:

 const ffmpeg = child_process.spawn('ffmpeg', [
  '-i', '-',
  // Some other parameters here
  '-'
]);
 

Вы можете использовать ffmpeg.stdin и ffmpeg.stdout здесь.

Смотрите также: https://nodejs.org/api/child_process.html

Комментарии:

1. Эй, это действительно полезно, большое вам спасибо! Кроме того, не могли бы вы предоставить мне какую-нибудь ссылку или документ о том, где получить эту информацию? Я просматривал документацию для child_process и таких методов, как spawn() и fork(), но ничего не нашел о том, что вы сказали.

2. @PedroDalla В конце моего ответа есть ссылка на документацию. 🙂

3. Я получаю ошибку «EPIPE», я просто читаю fs.createReadStream и передаю это в ffmepg.stdin любую подсказку, почему?

4. @Marc Вероятно, ваш процесс FFmpeg рано умер. Убедитесь, что вы читаете STDERR, чтобы выяснить, почему.

5. @Завершите его с кодом состояния 0 и завершите каждую операцию. Похоже, что у juse node была «проблема» с потоком stdin.