How can I use gstreamer with a V4L2 UVC webcam that serves JPEG images for video streaming over the network?

Note: This is no ready-made solution yet, just a list of pointers.

You can use “gst-inspect | less” to get a list of the current capabilities of gstreamer and it’s plugins.

To start, you should be able to see live video using this:

gst-launch v4l2src device=/dev/video1 ! jpegdec ! autovideosink

The manpage of gst-launch has an example for “network streaming”, but it doesn’t work here.

But you would have to do something similar like this:

gst-launch v4l2src
  ! jpegdec
  ! videoscale
  ! video/x-raw-yuv, width=320, height=240
  ! ffmpegcolorspace
  ! ffenc_h263
  ! video/x-h263
  ! rtph263ppay pt=96
  ! udpsink host=127.0.0.1 port=8800 sync=false

This does not work yet:

  WARNING: Faulty connection: Could not connect ffenc_h2630 with rtph263ppay0

The reason seems to be that jpegdec does not serve the format declared as “video/x-raw-yuv”, and this is detected when trying to connect to RTP payloader. We need an additional encoder here.

The following commands show that the camera servers jpgeg:

$ gst-launch v4l2src ! filesink location=Desktop/test.file
$ gst-typefind test.file
test.file - image/jpeg

Additional useful things that can be used in the pipelines: r263depayloader, gconfv4l2src

The best solution will than be to combine this with the VLC multimedia player and server, to stream it. See:

  vlc --longhelp --advanced

Posted

in

,

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.