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