|
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 ?
|