Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Webcam streaming using gstreamer over UDP

Tags:

gstreamer

Here is what I'm trying:

gst-launch -v udpsrc port=1234 ! fakesink dump=1

I test with:

gst-launch -v audiotestsrc ! udpsink host=127.0.0.1 port=1234

And everything works fine, I can see the packages arriving from the audiotestsrc

Now lets test with the webcam source:

gst-launch -v v4l2src device=/dev/video0 ! queue ! videoscale method=1 ! "video/x-raw-yuv,width=320,height=240" ! queue ! videorate ! "video/x-raw-yuv,framerate=(fraction)15/1" ! queue ! udpsink host=127.0.0.1 port=1234

And nothing happens, no package appears in the dump.

Here is a logdump of what verbose shows in the server.

Does anyone have a clue on this?

like image 497
David Benko Avatar asked Oct 06 '11 00:10

David Benko


2 Answers

Try these (You may have to install gstreamer-ugly plugins for this one)

UDP streaming from Webcam (stream over the network)

gst-launch v4l2src device=/dev/video0 ! 'video/x-raw-yuv,width=640,height=480' !  x264enc pass=qual quantizer=20 tune=zerolatency ! rtph264pay ! udpsink host=127.0.0.1 port=1234

UDP Streaming received from webcam (receive over the network)

gst-launch udpsrc port=1234 ! "application/x-rtp, payload=127" ! rtph264depay ! ffdec_h264 ! xvimagesink sync=false

Update

To determine the payload at the streaming end simply use verbose option with gst-launch -v ...

like image 141
enthusiasticgeek Avatar answered Nov 07 '22 19:11

enthusiasticgeek


Maybe packets are too large for udp? They are limited to 64K. Try resizing frames to really small size to check if this is the reason. If so, you may be interested in some compression and payloaders/depayloaders (gst-inspect | grep pay).

like image 36
peper0 Avatar answered Nov 07 '22 19:11

peper0