Ошибка записи Mat3b в приемник UDP GStreamer - PullRequest
0 голосов
/ 29 октября 2019

Отправитель

Я получаю видео с камеры Intel RealSense и использую OpenCV для редактирования кадров. Отображение его с помощью imshow дает мне желаемый результат. Вместо того чтобы использовать imshow, я хочу записать его в приемник UDP Gstreamer. Это основано на примере кода librealsense: click me

Я только добавил VideoWriter вверху:

VideoWriter out("appsrc ! videoconvert ! x264enc tune=zerolatency ! rtph264pay pt=96 ! udpsink host=127.0.0.1 port=8553", CAP_GSTREAMER, 0, 30, Size(640, 480), true);

и ниже, как я пишу полученный Mat3bдля этого VideoWriter:

out.write(foreground);

Receiver

Я написал другую программу, которая использует gst-rtsp-server для чтения данных из источника UDP и обеспечения их доступности. как поток RTSP. Я проверил, что это работает нормально, используя командную строку:

gst-launch-1.0 -v videotestsrc ! video/x-raw,width=800,height=600,codec=h264,type=video ! videoscale ! videoconvert ! x264enc tune=zerolatency ! rtph264pay ! udpsink host=127.0.0.1 port=8553

Сервер RTSP использует следующий конвейер:

udpsrc port=8553 ! application/x-rtp, payload=96 ! rtpjitterbuffer ! rtph264depay ! avdec_h264 ! x264enc tune=zerolatency ! rtph264pay name=pay0 pt=96

Помимо конвейера, сервер RTSP по сути является также примером кода, поэтому он должен работать.

Опять же, сервер RTSP работает нормально, используя videotestsrc из командной строки, но когда я пытаюсь использовать его с OpenCV appsrc, как написано выше, я получаю следующее сообщение об ошибке на сервере RTSPconsole: Войдите сюда и VLC не может открыть поток.


Полный код здесь: click me

I 'Буду признателен за любую помощь, я пытался выяснить это в течение нескольких недель, но я действительно не знаю, почему он не работает, когда он работает почти с тем же конвейером из командной строки.

...