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