Gstreamer: No RTP protocol present

Howling wong watertreader at
Fri Dec 17 02:55:33 UTC 2021

I am having some issues with the following gstreamer command

Sender (on embeeded system)

gst-launch-1.0 videotestsrc ! video/x-raw, width=6400, height=480 ! queue ! vpuenc_h264 ! rtph264pay ! udpsink host= port=5555

Receiver(on windows)

gst-launch-1.0 udpsrc port=5555 ! queue ! rtph264depay  ! decodebin  ! autovideosink

But I have got the following response

   Setting pipeline to PAUSED ...

    Pipeline is live and does not need PREROLL ...

    Got context from element 'autovideosink0': gst.d3d11.device.handle=context, device=(GstD3D11Device)"\(GstD3D11Device\)\ d3d11device4", adapter=(uint)0, device-id=(uint)6429, vendor-id=(uint)32902, hardware=(boolean)true, description=(string)"Intel\(R\)\ HD\ Graphics\ P530";

    Pipeline is PREROLLED ...

    Setting pipeline to PLAYING ...

    New clock: GstSystemClock

     ERROR: from element /GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0: No RTP format was negotiated.

    Additional debug info:

      ../gst-libs/gst/rtp/gstrtpbasedepayload.c(538): gst_rtp_base_depayload_handle_buffer (): /GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0:

     Input buffers need to have RTP caps set on them. This is usually achieved by setting the 'caps' property of the upstream source element (often udpsrc or appsrc), or by putting a capsfilter element before the depayloader and setting the 'caps' property on that. Also see

     Execution ended after 0:00:00.019641000
    Setting pipeline to NULL ...
    ERROR: from element /GstPipeline:pipeline0/GstUDPSrc:udpsrc0: Internal data stream error.
    Additional debug info:
    ../libs/gst/base/gstbasesrc.c(3127): gst_base_src_loop (): /GstPipeline:pipeline0/GstUDPSrc:udpsrc0
    streaming stopped, reason not-negotiated (-4)
    Freeing pipeline ..

The complaint seem to be about the incoming stream is not in rtp format and the rtpdepayh264 should not be placed in the pipeline. This assumption is proven to be correct when i replaced the whole pipeline with a fakesink


gst-launch-1.0 udpsrc port=5555 ! queue ! fakesink

The pipeline work. However when i observed the packets exchange in wireshark, it show the communication exchange but the protocol is in udp. Though I know that RTP could be based upon UDP protocol but have thought that Wireshark is entirely capable of showing protocol in RTP format

I have thought that the sender has already wrapped the video in rtp format before sending the package out. Like to have some ideas on what is wrong here and how to proceed


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the gstreamer-devel mailing list