Мне нужно, чтобы gstreamer брал видео из rtsp uri и отправлял видео на стандартный вывод, чтобы имитировать аналогичное поведение из свободного ffmpeg.
Я могу сделать это на терминале (и получить необработанные двоичные данные), но когда внутри узла, я получаю:
«ошибочная синтаксическая ошибка конвейера».
gst-launch-1.0 uridecodebin silent=true uri=rtsp://192.168.x.x:8800/test.stm ! fdsink fd=1
когда указанная выше команда используется с «автовидеосинком», я могу просматривать видео.
Причина, по которой мне нужно использовать stdout, заключается в том, что существующее приложение использует fluent-ffmpeg и использует «pipe: 1», что в основном одно и то же. Я хочу как можно меньше мешать существующему приложению.
Внутри приложения node я вызываю gst-lauch-1.0 с помощью команды «spawn», как в:
var gstreamerProc = spawn(command, args, options);
куда:
command: '/usr/bin/gst-launch-1.0'
args: ["uridecodebin","silent=true","uri=rtsp://192.168.x.x:8800/test.stm","!","queue","! fdsink fd=0"]
options: {"captureStdout":false,"niceness":0}"
И из оригинального fluent-ffmpeg/lib/processor.js этот комментарий описывает значения, найденные в «опциях».
/*
:
* The 'options' argument may contain the following keys:
* - 'niceness': specify process niceness, ignored on Windows (default: 0)
* - `cwd`: change working directory
* - 'captureStdout': capture stdout and pass it to 'endCB' as its 2nd argument (default: false)
* - 'stdoutLines': override command limit (default: use command limit)
*
:
*/
Как я уже сказал, приведенная выше командная строка работает на обычном терминале, без ошибок, без предупреждений, когда она помещается внутрь Node.js, она выдает
"ошибочный синтаксис конвейера"
предупреждение. Любая помощь в решении этой проблемы приветствуется.
caps
в decodebin. В противном случае он будет декодирован в необработанные буферы, которые не будут вписываться в h264parse. Однако это должно привести к другой ошибке, отличной от синтаксиса конвейера. 19.04.2019