Попробуйте сделать так..
Рядом с app.js положите bat файл с этим кодом и стартоните его, у меня мгновенно взлетает.
Я изменил кодек на mpeg4 это основное.
@echo off
color a
start node app.js
set c=ffmpeg
set f=-f gdigrab -framerate 30 -rtbufsize 999999k -thread_queue_size 9999999 -indexmem 9999999 -i desktop -c:v mpeg4 -qscale:v 3 -movflags frag_keyframe+empty_moov -f mp4 tcp://127.0.0.1:4444
%c% %f%
exit
-rtbufsize 1G – Размер буфера 1 гигабайт. По умолчанию FFmpeg захватывает кадры из ввода, а затем выполняет все, что вы ему сказали. Например перекодирует их и сохраняет в выходной файл. По умолчанию, если он получает видеокадр "слишком рано" (в то время как предыдущий кадр еще не закончен), он отбрасывает этот кадр, чтобы он мог поддерживать ввод в реальном времени. Вы можете отрегулировать это, установив параметр rtbufsize, хотя обратите внимание, что если ваш процесс кодирования не успевает, в конечном итоге вы все равно начнете терять кадры (и его использование вообще может вызвать небольшую задержку). Однако может быть полезно указать некоторый размер буфера, в противном случае кадры могут быть потеряны без необходимости.
-thread_queue_size – Устанавливает максимальное количество пакетов в очереди при чтении из файла или устройства. Установка этого значения может заставить ffmpeg использовать отдельный входной поток и читать пакеты, как только они приходят. Может применяется для каждого входа, указанного после него.
-indexmem – максимальная память, используемая для индекса отметки времени (на поток).
Он хоть и староват но достаточно быстрый
-c:v mpeg4 -qscale:v 3