GStreamer rtp stream to vlc
Solution 1
I've solved the issue, it just needs an sdp file like this:
v=0
m=video 5000 RTP/AVP 96
c=IN IP4 127.0.0.1
a=rtpmap:96 MP4V-ES/90000
and the option "send-config=true" for the rtpmp4vpay element:
gst-launch videotestsrc ! ffenc_mpeg4 ! rtpmp4vpay send-config=true ! udpsink host=127.0.0.1 port=5000
and then, it can be played with
vlc <filename>.sdp
Solution 2
How to for H264 and new gstreamer (windows)
gst-launch-1.0 videotestsrc ! openh264enc ! rtph264pay config-interval=10 pt=96 ! udpsink host=127.0.0.1 port=5000
sdp file:
v=0
m=video 5000 RTP/AVP 96
c=IN IP4 127.0.0.1
a=rtpmap:96 H264/90000
for other codec see https://en.wikipedia.org/wiki/RTP_audio_video_profile and corresponding SDP example in RFC link
Solution 3
For some of you just check the answers, but not comments below the answers
For GStreamer 1.18.xxx. ffenc_mpeg4 was renamed to avenc_mpeg4(This confuses me alot) So try command:
gst-launch-1.0 videotestsrc ! avenc_mpeg4 ! rtpmp4vpay config-interval=1 ! udpsink host=127.0.0.1 port=5000
About VLC same as Dave's answer
Admin
Updated on July 09, 2022Comments
-
Admin almost 2 years
I'm having some trouble figuring out how to create a simple rtp stream with gstreamer and display it on vlc.
I've installed GStreamer 0.10.30 and VLC 1.1.3. My only requirement is to use MPEG4 or H.264 codecs.
Right now, I can stream the GStreamer videotestsrc through this simple pipeline:
gst-launch videotestsrc ! ffenc_mpeg4 ! rtpmp4vpay ! udpsink host=127.0.0.1 port=5000
which outputs the "caps" needed by the client to receive the stream:
/GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)1, config=(string)000001b001000001b58913000001000000012000c48d8800f50a041e1463000001b24c61766335322e3132332e30, payload=(int)96, ssrc=(uint)365697461, clock-base=(uint)390754204, seqnum-base=(uint)10399
I'm also able to display the stream using the following pipeline:
gst-launch udpsrc uri=udp://127.0.0.1:5000 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)1, config=(string)000001b001000001b58913000001000000012000c48d88007d0a041e1463000001b24c61766335322e3132332e30, payload=(int)96, ssrc=(uint)298758266, clock-base=(uint)3097828288, seqnum-base=(uint)63478" ! rtpmp4vdepay ! ffdec_mpeg4 ! autovideosink
but when I try to receive the stream with vlc:
vlc -vvv rtp://127.0.0.1:5000
I get nothing...
-
Alex Bezuglyi over 8 yearsI've found how to write sdp file for any codec. See en.wikipedia.org/wiki/RTP_audio_video_profile then go to coresponding RFC link that have sample of SDP syntax
-
nayana over 8 yearsYou mistyped the port number, otherwise it is working - tested but with x264enc (on Linux).. good tip on the RFC
-
Einar Sundgren over 8 yearsThis is the kind of behaviour that deserves multiple upvotes. The question was super relevant to me but without the self answer it would be kind of useless.
-
Einar Sundgren over 8 yearsUsing gstreamer 1.0 the line should be
gst-launch videotestsrc ! ffenc_mpeg4 ! rtpmp4vpay config-interval=3 ! udpsink host=127.0.0.1 port=5000
Whereconfig-interval=3
is the interval in seconds sending the config data.send-config
is now deprecated. -
beemaster almost 8 yearsHow to generate SDP file for MJPEG stream? rfc2435 seems too large. Also
rtpjpegpay
don't have option likesend-config
. -
Adam Plocher almost 8 yearsSince using 127.0.0.1 isn't clear, I just thought I would mention: in a multiple machine environment, this would be causing your client (VLC or whatever) to open an inbound port (so possibly firewall rules needed) and the stream would be sending to it. This solution isn't providing you with a way to easily have multiple VLC clients connect to a single endpoint. (that confused me a bit).
-
Adam Plocher almost 8 yearsIt will also require the server to define the outbound connection to each client - so no chance of having a URL that any client can connect to.
-
Jose V almost 6 yearsdeveloper.ridgerun.com/wiki/index.php/… This was useful to me to figure out the parameters.
-
Roy Shilkrot almost 6 yearsAnd the OSX equivalent:
gst-launch-1.0 videotestsrc ! vtenc_h264 ! rtph264pay config-interval=10 pt=96 ! udpsink host=127.0.0.1 port=5000
(instead ofopenh264enc
)