I want to streaming RTMP signal to RTP(multicast, mpegts container) via GStreamer. As I understand, I need to perform the following actions (please correct me if I wrong):

  1. Demuxing RTMP stream
  2. Muxing tracks to MPEGTS
  3. Streaming data into RTP

I can perform it via FFmpeg:

ffmpeg -i rtmp:// \
       -c copy -f rtp_mpegts rtp://

I need to achive the same results via GStreamer and I've tried the next command:

gst-launch-1.0 -v rtmpsrc \
           location=rtmp:// \
           ! flvdemux ! h264parse ! rtph264pay \
           ! udpsink host= port=10001

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/GstRTMPSrc:rtmpsrc0: Internal data flow error.
Additional debug info:
gstbasesrc.c(2948): gst_base_src_loop (): /GstPipeline:pipeline0/GstRTMPSrc:rtmpsrc0:
streaming task paused, reason not-linked (-1)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
/GstPipeline:pipeline0/GstFlvDemux:flvdemux0.GstPad:audio: caps = "NULL"
Freeing pipeline ...

Please help figure out with. What is the correct command to streaming RTMP to RTP without transcoding via GStreamer?

Your Answer

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

Browse other questions tagged or ask your own question.