GStreamer pipeline to show an RTSP stream
Solution 1
you can adjust the latency by setting the right property and using playbin component:
gst-launch-1.0 -v playbin uri=rtsp://localhost:8554/test uridecodebin0::source::latency=300
Hope you find this useful :)
Solution 2
Assume the rtsp stream is h264 format, use explicit h264 decoder and encoder to parse the stream. Use videoconvert and videoscale to change the frame shape.
gst-launch-1.0 rtspsrc location=rtsp://localhost:8554/test latency=100 ! queue ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! videoscale ! video/x-raw,width=640,height=480 ! autovideosink
Solution 3
playbin
does have a latency
option last time I have checked. Note that its scale is different from the one of rtspsrc
. rtspsrc
is in milliseconds while playbin
is in nanoseconds. It may still not go below a certain threshold - depending on the input video requirements (vbv buffer limitations).
For your rtspsrc
pipeline you probably miss a videoconvert
or autovideosonvert
element right before the autovideosink
.
Admin
Updated on July 09, 2022Comments
-
Admin almost 2 years
I am pretty new to Gstreamer.
I need to write a video client able to stream data from an RTSP source using GStreamer. I configured VLC to stream a video I have on my laptop using RTSP and I want to create a pipeline to get that stream and show it. I tried using
playbin
and everything works fine. The point is that I need to fine tune the latency used to stream the video but it seems I cannot do that with playbin.I tried
rtspsrc
because it allows to work on the latency but I don't know how to show the video on any window. That's the pipeline I created:gst-launch-1.0 rtspsrc location=rtsp://localhost:8554/test latency=300 ! decodebin ! autovideosink
I get the error "streaming task paused, reason not-negotiated (-4)".
I tried different pipelines after deeply looking on the internet but I definitely miss something. How can I write a gstreamer pipeline to show a video from RTSP?
The final goal is to have a pipeline which can be adjustable at least in terms of latency, so I have two choices:
- set the latency of playbin element, if possible. (This element correctly shows the video)
- Show the video with the correct pipeline since rtspsrc allows me to set the latency.
I use Xubuntu 16.04, gstreamer-tools-1.0 (used 0.10 as well) and the video I stream with VLC has mp4 extension.