After weeks of research, my understanding is that using rpicamsrc to stream video via rtsp is the preferred method. If you do something like raspivid piped to cvlc, you increase latency, etc.

Right now I'm comparing two methods:

raspivid -o - -t 0 -w 1920 -h 1080 -fps 30 -b 2000000 | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=1 pt=96 ! gdppay ! tcpserversink host= port=5000


gst-launch-1.0 rpicamsrc preview=false bitrate=2000000 ! video/x-h264,width=1920,height=1080,framerate=30/1 ! h264parse ! rtph264pay config-interval=1 pt=96 ! gdppay ! tcpserversink host= port=5000

The first method is excellent, the latency is very low and the video quality is quite good.

However, I must use rpicamsrc in order to use rtsp-simple-server. I tried using the "raspivid piped to gstreamer" method for rtsp-simple-server and it simply shows a single static frame. And in any case, rpicamsrc is supposed to be the superior method anyway, since it avoids a pipe.

Using rpicamsrc results in extremely poor video quality. There is a ton of smearing of colors and between frames.

I downloaded and built the source from here:


I'm assuming the error could either be something about this source code, maybe it's buggy, outdated, compiled wrong somehow, etc.

Or another option, perhaps I'm not passing the correct options to rpicamsrc?

How do I fix poor video quality from rpicamsrc?


There is a third option, which is to use v4l2src, ie: gst-launch-1.0 v4l2src ! etc. This method works quite well.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.