FFMPEG & Node.js Spawn ничего не выводит - PullRequest
1 голос
/ 17 января 2020

У меня есть следующий Node.js код:

var ffmpeg = spawn('ffmpeg', ["-f","v4l2",
                         "-framerate","30",
                         "-video_size","1920x1080",
                         "-i","/dev/video0",
                         "-f","mpegts",
                         "-codec:v","mpeg1video",
                         "-s","1920x1080",
                         "-b:v","3000k",
                         "qscale:v","20",
                         "-bf","0",
                         "http://localhost:8081/DEFAULT",
                         "pipe:1"]);

ffmpeg.stdout.on('data', function(chunk){
    var textChunk = chunk.toString('utf8');
    console.log(textChunk);
});

, который ничего не выводит при выполнении, и, насколько я могу судить, не генерирует никакого процесса FFMPEG.

Есть ли что-то очевидное, что Мне не хватает?

Заранее спасибо

1 Ответ

1 голос
/ 17 января 2020

Ваша программа ничего не печатает, потому что ffmpeg ничего не отправляет на стандартный вывод. Если вы также прослушаете stderr, вы поймете, почему.

var ffmpeg = spawn('ffmpeg', ["-f","v4l2",
                         "-framerate","30",
                         "-video_size","1920x1080",
                         "-i","/dev/video0",
                         "-f","mpegts",
                         "-codec:v","mpeg1video",
                         "-s","1920x1080",
                         "-b:v","3000k",
                         "qscale:v","20",
                         "-bf","0",
                         "http://localhost:8081/DEFAULT",
                         "pipe:1"]);

ffmpeg.stdout.on('data', function(chunk){
    var textChunk = chunk.toString('utf8');
    console.log(textChunk);
});

ffmpeg.stderr.on('data', function(chunk){
    var textChunk = chunk.toString('utf8');
    console.error(textChunk);
});

Для меня это выводит

ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
  built with Apple LLVM version 10.0.0 (clang-1000.11.45.5)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/4.2.2 --enable-shared --enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-cflags='-I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.0.1.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.0.1.jdk/Contents/Home/include/darwin' --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libmp3lame --enable-libopus --enable-librubberband --enable-libsnappy --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libsoxr --enable-videotoolbox --disable-libjack --disable-indev=jack

  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Unknown input format: 'v4l2'

Добавление флага -hide_banner в список аргументов ffmpeg избавит всего, кроме самого сообщения об ошибке.

...