Failed delayed linking pad video of GstFlvDemux named demux to some pad of GstH264Parse named h264parse0

I am using Jetson Xavier NX.
This is the pipeline I am using:
GST_DEBUG=3 gst-launch-1.0 rtmpsrc name=rtmpsrc do-timestamp=true location=“rtmp://121.43.126.231:12966/live/28de595627d6d45cc11e4d17cbf021ee4c947bbb8ba8ddbc live=1” ! flvdemux name=demux demux.video ! h264parse ! video/x-h264 ! omxh264dec ! nvvidconv ! video/x-raw, format=I420 ! nv3dsink

This is the output:
0:00:00.095614794 30611 0x559292c6d0 WARN omx gstomx.c:2826:plugin_init: Failed to load configuration file: Valid key file could not be found in search dirs (searched in: /home/nephilim/.config:/etc/xdg/xdg-unity:/etc/xdg as per GST_OMX_CONFIG_DIR environment variable, the xdg user config directory (or XDG_CONFIG_HOME) and the system config directory (or XDG_CONFIG_DIRS)
Setting pipeline to PAUSED …
Pipeline is PREROLLING …
0:00:01.122327347 30611 0x559292ac50 WARN basesrc gstbasesrc.c:3055:gst_base_src_loop: error: Internal data stream error.
0:00:01.122444563 30611 0x559292ac50 WARN basesrc gstbasesrc.c:3055:gst_base_src_loop: error: streaming stopped, reason not-linked (-1)
0:00:01.122922390 30611 0x559292ac50 WARN default grammar.y:510:gst_parse_no_more_pads: warning: Delayed linking failed.
ERROR: from element /GstPipeline:pipeline0/GstRTMPSrc:rtmpsrc: Internal data stream error.
0:00:01.123015511 30611 0x559292ac50 WARN default grammar.y:510:gst_parse_no_more_pads: warning: failed delayed linking pad video of GstFlvDemux named demux to some pad of GstH264Parse named h264parse0
Additional debug info:
gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:pipeline0/GstRTMPSrc:rtmpsrc:
streaming stopped, reason not-linked (-1)
ERROR: pipeline doesn’t want to preroll.
Setting pipeline to NULL …
Freeing pipeline …

Pls suggest what’s wrong here?

Thanks.

Hi,
Could you try uridecodebin like

gst-launch-1.0 uridecodebin uri="rtmp://121.43.126.231:12966/live/28de595627d6d45cc11e4d17cbf021ee4c947bbb8ba8ddbc live=1" ! nvoverlaysink

The output is :
Setting pipeline to PAUSED …
Pipeline is PREROLLING …
ERROR: from element /GstPipeline:pipeline0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstFaad:faad0: Could not decode stream.
Additional debug info:
gstfaad.c(781): gst_faad_handle_frame (): /GstPipeline:pipeline0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstFaad:faad0:
decoding error: Bitstream value not allowed by specification
ERROR: pipeline doesn’t want to preroll.
Setting pipeline to NULL …
Freeing pipeline …

Hi,
It looks like uridecodebin cannot read the rtmp source. Woudl need to construct the pipeline manually. Please try

gst-launch-1.0 rtmpsrc name=rtmpsrc do-timestamp=true location=“rtmp://121.43.126.231:12966/live/28de595627d6d45cc11e4d17cbf021ee4c947bbb8ba8ddbc live=1” ! flvdemux name=demux demux.video ! h264parse ! video/x-h264 ! nvv4l2decoder ! fakesink

We have deprecated omx plugins. Please try nvv4l2decoder plugin.

I use this pipeline:

GST_DEBUG=2 gst-launch-1.0 rtmpsrc name=rtmpsrc do-timestamp=true location="rtmp://121.43.126.231:12966/live/28de595627d6d45cc11e4d17cbf021ee4c947bbb8ba8ddbc live=1" ! flvdemux name=demux demux.video ! h264parse ! video/x-h264 ! nvv4l2decoder ! fakesink

It seems like the problem is between flvdemux and h264parse?I don’t get it…The out is:

Setting pipeline to PAUSED ...
Opening in BLOCKING MODE 
0:00:00.191721814 24289   0x55948ec160 WARN                    v4l2 gstv4l2object.c:4447:gst_v4l2_object_probe_caps:<nvv4l2decoder0:src> Failed to probe pixel aspect ratio with VIDIOC_CROPCAP: Unknown error -1
0:00:00.191825078 24289   0x55948ec160 WARN                    v4l2 gstv4l2object.c:2388:gst_v4l2_object_add_interlace_mode:0x55948d79f0 Failed to determine interlace mode
0:00:00.191899029 24289   0x55948ec160 WARN                    v4l2 gstv4l2object.c:2388:gst_v4l2_object_add_interlace_mode:0x55948d79f0 Failed to determine interlace mode
0:00:00.191960597 24289   0x55948ec160 WARN                    v4l2 gstv4l2object.c:2388:gst_v4l2_object_add_interlace_mode:0x55948d79f0 Failed to determine interlace mode
Pipeline is PREROLLING ...
0:00:01.528452997 24289   0x559487f590 WARN                 basesrc gstbasesrc.c:3055:gst_base_src_loop:<rtmpsrc> error: Internal data stream error.
0:00:01.528543140 24289   0x559487f590 WARN                 basesrc gstbasesrc.c:3055:gst_base_src_loop:<rtmpsrc> error: streaming stopped, reason not-linked (-1)
ERROR: from element /GstPipeline:pipeline0/GstRTMPSrc:rtmpsrc: Internal data stream error.
Additional debug info:
gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:pipeline0/GstRTMPSrc:rtmpsrc:
streaming stopped, reason not-linked (-1)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
0:00:01.529694395 24289   0x559487f590 WARN                 default grammar.y:510:gst_parse_no_more_pads:<demux> warning: Delayed linking failed.
0:00:01.529866233 24289   0x559487f590 WARN                 default grammar.y:510:gst_parse_no_more_pads:<demux> warning: failed delayed linking pad  video of GstFlvDemux named demux to some pad of GstH264Parse named h264parse0
Freeing pipeline ...

Hi,
Not sure if it help but please try decodebin as the commands in the topic:
Gstreamer issue with adding timeoverlay on RTMP stream

I use decodebin like the topic, but it don’t work.
And i try this pipeline

GST_DEBUG=2 gst-launch-1.0 rtmpsrc name=rtmpsrc do-timestamp=true location="rtmp://121.43.126.231:12966/live/28de595627d6d45cc11e4d17cbf021ee4c947bbb8ba8ddbc live=1"  ! flvdemux name=demux demux.video ! fakesink

the output is:

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
0:00:01.235423211 26059   0x55828a06d0 WARN                 basesrc gstbasesrc.c:3055:gst_base_src_loop:<rtmpsrc> error: Internal data stream error.
0:00:01.235498892 26059   0x55828a06d0 WARN                 basesrc gstbasesrc.c:3055:gst_base_src_loop:<rtmpsrc> error: streaming stopped, reason not-linked (-1)
0:00:01.235782829 26059   0x55828a06d0 WARN                 default grammar.y:510:gst_parse_no_more_pads:<demux> warning: Delayed linking failed.
0:00:01.235853614 26059   0x55828a06d0 WARN                 default grammar.y:510:gst_parse_no_more_pads:<demux> warning: failed delayed linking pad  video of GstFlvDemux named demux to some pad of GstFakeSink named fakesink0
ERROR: from element /GstPipeline:pipeline0/GstRTMPSrc:rtmpsrc: Internal data stream error.
Additional debug info:
gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:pipeline0/GstRTMPSrc:rtmpsrc:
streaming stopped, reason not-linked (-1)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...

it’s ok when i link rtmpsrc to fakesink

GST_DEBUG=2 gst-launch-1.0 rtmpsrc name=rtmpsrc do-timestamp=true location="rtmp://121.43.126.231:12966/live/28de595627d6d45cc11e4d17cbf021ee4c947bbb8ba8ddbc live=1"   ! fakesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:00:03.056307217
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ..

Any ideas?

This is the pipeline by using decodebin:

GST_DEBUG=2 gst-launch-1.0 -v rtmpsrc location="rtmp://121.43.126.231:12966/live/28de595627d6d45cc11e4d17cbf021ee4c947bbb8ba8ddbc live=1" do-timestamp=true ! queue2 ! flvdemux name=demux flvmux name=mux demux.video ! queue ! decodebin ! nvvidconv ! 'video/x-raw, format=(string)I420' ! fakesink

the output is:

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
0:00:00.608450799 26665   0x5567b02cf0 WARN                 basesrc gstbasesrc.c:3055:gst_base_src_loop:<rtmpsrc0> error: Internal data stream error.
0:00:00.608544464 26665   0x5567b02cf0 WARN                 basesrc gstbasesrc.c:3055:gst_base_src_loop:<rtmpsrc0> error: streaming stopped, reason not-linked (-1)
ERROR: from element /GstPipeline:pipeline0/GstRTMPSrc:rtmpsrc0: Internal data stream error.
Additional debug info:
gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:pipeline0/GstRTMPSrc:rtmpsrc0:
streaming stopped, reason not-linked (-1)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...

Hi,
For rtmp source, it shall work fine with flvdemux. A bit strange it fails in the simple command rtmpsrc ! flvdemux ! fakesink. You would need to work out a working gstreamer command first, or we are not able to suggest next.

Would see if other users can share experience about the failure.

I believe that you have to also sink the audio (even if there isn’t any). Here’s the shortest pipeline I could get to work:

GST_DEBUG=1 gst-launch-1.0 -v rtmpsrc location="rtmp://121.43.126.231:12966/live/28de595627d6d45cc11e4d17cbf021ee4c947bbb8ba8ddbc live=1" do-timestamp=true ! \
flvdemux name=demux  \
demux.video ! queue ! decodebin ! nvvidconv ! xvimagesink  \
demux.audio ! queue ! fakesink

The \ character on each line tells the Terminal that the line continues, no carriage return. Everything should be on the same line.

There appear to be other issues. After a first run, it may take several attempts at launch before working correctly again. The debug info shows what decodebin selects to connect the pipeline together.

Here’s an image:

Here’s the launch debug info:

jetsonhacks@jetsonhacks:~$ GST_DEBUG=1 gst-launch-1.0 -v rtmpsrc location="rtmp://121.43.126.231:12966/live/28de595627d6d45cc11e4d17cbf021ee4c947bbb8ba8ddbc live=1" do-timestamp=true ! \

flvdemux name=demux
demux.video ! queue ! decodebin ! nvvidconv ! xvimagesink
demux.audio ! queue ! fakesink
Setting pipeline to PAUSED …
Pipeline is PREROLLING …
/GstPipeline:pipeline0/GstQueue:queue1.GstPad:sink: caps = audio/mpeg, mpegversion=(int)4, framed=(boolean)true, stream-format=(string)raw, rate=(int)8000, channels=(int)1, codec_data=(buffer)1588
/GstPipeline:pipeline0/GstQueue:queue1.GstPad:sink: caps = audio/mpeg, mpegversion=(int)4, framed=(boolean)true, stream-format=(string)raw, rate=(int)8000, channels=(int)1, codec_data=(buffer)1588
/GstPipeline:pipeline0/GstFakeSink:fakesink0.GstPad:sink: caps = audio/mpeg, mpegversion=(int)4, framed=(boolean)true, stream-format=(string)raw, rate=(int)8000, channels=(int)1, codec_data=(buffer)1588
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-h264, stream-format=(string)avc, width=(int)2560, height=(int)1440, codec_data=(buffer)01640032ffe1002867640032ad84010c20086100430802184010c200843b5014005ad37010101400000fa000030d421001000468ee3cb0
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = video/x-h264, stream-format=(string)avc, width=(int)2560, height=(int)1440, codec_data=(buffer)01640032ffe1002867640032ad84010c20086100430802184010c200843b5014005ad37010101400000fa000030d421001000468ee3cb0
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = video/x-h264, stream-format=(string)avc, width=(int)2560, height=(int)1440, codec_data=(buffer)01640032ffe1002867640032ad84010c20086100430802184010c200843b5014005ad37010101400000fa000030d421001000468ee3cb0
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = video/x-h264, stream-format=(string)avc, width=(int)2560, height=(int)1440, codec_data=(buffer)01640032ffe1002867640032ad84010c20086100430802184010c200843b5014005ad37010101400000fa000030d421001000468ee3cb0
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstH264Parse:h264parse0.GstPad:sink: caps = video/x-h264, stream-format=(string)avc, width=(int)2560, height=(int)1440, codec_data=(buffer)01640032ffe1002867640032ad84010c20086100430802184010c200843b5014005ad37010101400000fa000030d421001000468ee3cb0
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:sink: caps = video/x-h264, stream-format=(string)avc, width=(int)2560, height=(int)1440, codec_data=(buffer)01640032ffe1002867640032ad84010c20086100430802184010c200843b5014005ad37010101400000fa000030d421001000468ee3cb0
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:sink: caps = video/x-h264, stream-format=(string)avc, width=(int)2560, height=(int)1440, codec_data=(buffer)01640032ffe1002867640032ad84010c20086100430802184010c200843b5014005ad37010101400000fa000030d421001000468ee3cb0
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstH264Parse:h264parse0.GstPad:src: caps = video/x-h264, stream-format=(string)byte-stream, width=(int)2560, height=(int)1440, framerate=(fraction)25/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true, alignment=(string)au, profile=(string)high, level=(string)5
Opening in BLOCKING MODE
NvMMLiteOpen : Block : BlockType = 261
NVMEDIA: Reading vendor.tegra.display-size : status: 6
NvMMLiteBlockCreate : Block : BlockType = 261
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/nvv4l2decoder:nvv4l2decoder0.GstPad:sink: caps = video/x-h264, stream-format=(string)byte-stream, width=(int)2560, height=(int)1440, framerate=(fraction)25/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true, alignment=(string)au, profile=(string)high, level=(string)5
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-h264, stream-format=(string)byte-stream, width=(int)2560, height=(int)1440, framerate=(fraction)25/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true, alignment=(string)au, profile=(string)high, level=(string)5
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-h264, stream-format=(string)byte-stream, width=(int)2560, height=(int)1440, framerate=(fraction)25/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true, alignment=(string)au, profile=(string)high, level=(string)5
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/nvv4l2decoder:nvv4l2decoder0.GstPad:src: caps = video/x-raw(memory:NVMM), format=(string)NV12, width=(int)2560, height=(int)1440, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)mpeg2, colorimetry=(string)bt709, framerate=(fraction)25/1
/GstPipeline:pipeline0/Gstnvvconv:nvvconv0.GstPad:src: caps = video/x-raw, width=(int)2560, height=(int)1440, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)25/1, format=(string)YUY2
/GstPipeline:pipeline0/GstXvImageSink:xvimagesink0.GstPad:sink: caps = video/x-raw, width=(int)2560, height=(int)1440, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)25/1, format=(string)YUY2
/GstPipeline:pipeline0/Gstnvvconv:nvvconv0.GstPad:sink: caps = video/x-raw(memory:NVMM), format=(string)NV12, width=(int)2560, height=(int)1440, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)mpeg2, colorimetry=(string)bt709, framerate=(fraction)25/1
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstDecodePad:src_0.GstProxyPad:proxypad1: caps = video/x-raw(memory:NVMM), format=(string)NV12, width=(int)2560, height=(int)1440, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)mpeg2, colorimetry=(string)bt709, framerate=(fraction)25/1
Pipeline is PREROLLED …
Setting pipeline to PLAYING …
New clock: GstSystemClock

Hope this helps.

wow! it works ! THANKS!!!
I will continue to study the implementation on deepstream

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.