Error sending RTP stream to v4l2sink

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Error sending RTP stream to v4l2sink

charles.fox

Hi all,

I am trying to stream a webcam (Logitech C920) on computer A into OpenCV on computer B.    OpenCV can't open the stream directly so I installed loopback for v4l2 and want to have openCV read from a virtual /dev/video1 device of the stream.  

I can test the stream is working in gstreamer like this:
computer A:
gst-launch-1.0 v4l2src !     'video/x-raw, width=640, height=480, framerate=30/1' !     videoconvert !     x264enc pass=qual quantizer=20 tune=zerolatency !     rtph264pay !     udpsink host=192.168.0.5 port=1234
computer B:
gst-launch-1.0 udpsrc port=1234 !     "application/x-rtp, payload=127" !     rtph264depay !     avdec_h264 !     videoconvert  !     xvimagesink

and I can see the live stream in a window.

However when I try to pipe to my lookback instead via this on computer b:
gst-launch-1.0 udpsrc port=1234 !     "application/x-rtp, payload=127" !     rtph264depay !     avdec_h264 !     videoconvert  !     v4l2sink device=/dev/video1

it dies with
$ gst-launch-1.0 udpsrc port=1234 !     "application/x-rtp, payload=127" !     rtph264depay !     avdec_h264 !     videoconvert  !     v4l2sink device=/dev/video1
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
ERROR: from element /GstPipeline:pipeline0/GstUDPSrc:udpsrc0: Internal data flow error.
Additional debug info:
gstbasesrc.c(2948): gst_base_src_loop (): /GstPipeline:pipeline0/GstUDPSrc:udpsrc0:
streaming task paused, reason error (-5)
Execution ended after 0:00:09.842319925
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...


What's weird is that I can pipe computer B's OWN webcam to loopback with no problems -- if I do on computer B:
 gst-launch-1.0 -v v4l2src ! v4l2sink device=/dev/video1
then it works just fine (eg I can watch the stream on video1 in vlc)


This is driving me nuts, can anyone help?   Why can the stream be piped into xvimagesink but not into v4l2sink , when I know v4l2sink is working from the local webcam version?      Is v4l2sink expecting a different type of input from xvimagesink, and if so do I need a different chain of modules to pipe in ?
Reply | Threaded
Open this post in threaded view
|

Re: Error sending RTP stream to v4l2sink

pneves
Try forcing caps to something that you know v4l2sink accepts for sure. Then if you see not negotiated there is something wrong with the video convert. Sorry I cant help more.
Reply | Threaded
Open this post in threaded view
|

Re: Error sending RTP stream to v4l2sink

Arjen Veenhuizen
Use the capssetter element for that. we experienced that the capsfilter element is not always sufficient when working with v4l2sink.