gtksink is not rendering my video (black screen)

Matthew Waters ystreet00 at gmail.com
Mon Jun 10 06:22:07 UTC 2019


On 10/6/19 9:18 am, pisymbol . wrote:
>
>
> On Sat, Jun 8, 2019 at 7:54 AM pisymbol . <pisymbol at gmail.com
> <mailto:pisymbol at gmail.com>> wrote:
>
>
>
>     On Sat, Jun 8, 2019 at 1:26 AM pisymbol . <pisymbol at gmail.com
>     <mailto:pisymbol at gmail.com>> wrote:
>
>         If I do the following on the command line:
>
>         gst-launch-1.0  filesrc
>         location="/mnt/storage/2cam/20190608_050606Z_00000000.mkv" !
>         matroskademux name=demux demux.video_0 ! h264parse !
>         avdec_h264 ! videoconvert ! gtksink
>
>         I see the video in the Cairo window.
>
>         However, if I do the exact same thing in Python:
>
>         on_realize():
>          53        self.pipeline = Gst.Pipeline()
>          54        factory = self.pipeline.get_factory()
>          55        gtksink = factory.make('gtksink')
>          56        self.pipeline.add(gtksink)
>          57        self.pipeline.add(self.bin) # self.bin =
>         Gst.parse_bin_from_dsecription(pipeline above)
>          58        self.bin.link(gtksink)
>

This working depends on the exact pipeline and the arguments you passed
to 'Gst.parse_bin_from_description'.  You may need to extract
videoconvert's src pad and expose that as a ghost pad before
'self.bin.link(gtksink)' may work.

matroskademux also exposes pads dynamically so you need to connect to
the 'pad-added' signal and connect it to the h264parse when it exposes
the video src pad.  This is most likely the cause of your not-linked error.

The python equivalent of 'gst_debug_bin_to_dot_file_with_ts' is your
friend here.

Cheers
-Matt

>          59        self.pack_start(gtksink.props.widget, True, True, 0)
>          60        self.pipeline.set_state(Gst.State.PLAYING)
>          61        gtksink.props.widget.show_all()
>
>
>
>     Weird, the pipe is actually failing within Gst:
>
>     0:00:05.944147506 12757      0x11d0f70 INFO          
>      GST_PIPELINE grammar.y:518:gst_parse_found_pad: trying delayed
>     linking pad  video_0 of GstMatroskaDemux named demux to some pad
>     of GstH264Parse named h264parse0
>     0:00:05.944179026 12757      0x11d0f70 INFO      
>      GST_ELEMENT_PADS gstutils.c:1573:gst_element_link_pads_full:
>     trying to link element demux:video_0 to element h264parse0:(any)
>     0:00:05.944199121 12757      0x11d0f70 INFO      
>      GST_ELEMENT_PADS gstelement.c:907:gst_element_get_static_pad:
>     found pad demux:video_0
>     0:00:05.944260817 12757      0x11d0f70 INFO      
>      GST_ELEMENT_PADS gstelement.c:907:gst_element_get_static_pad:
>     found pad h264parse0:sink
>     0:00:05.944287952 12757      0x11d0f70 INFO      
>      GST_ELEMENT_PADS
>     gstutils.c:1124:gst_element_get_compatible_pad:<h264parse0> Could
>     not find a compatible pad to link to demux:video_0
>     0:00:05.944307568 12757      0x11d0f70 INFO                
>     default gstutils.c:1962:gst_element_link_pads_filtered: Could not
>     link pads: demux:video_0 - h264parse0:(null)
>     0:00:05.944373647 12757      0x11d0f70 WARN                
>     default grammar.y:506:gst_parse_no_more_pads:<demux> warning:
>     Delayed linking failed.
>     0:00:05.944391151 12757      0x11d0f70 WARN                
>     default grammar.y:506:gst_parse_no_more_pads:<demux> warning:
>     failed delayed linking pad  video_0 of GstMatroskaDemux named
>     demux to some pad of GstH264Parse named h264parse0
>     0:00:05.944422927 12757      0x11d0f70 INFO      
>      GST_ERROR_SYSTEM
>     gstelement.c:1879:gst_element_message_full:<demux> posting
>     message: Delayed linking failed.
>     0:00:05.944459054 12757      0x11d0f70 INFO      
>      GST_ERROR_SYSTEM
>     gstelement.c:1902:gst_element_message_full:<demux> posted warning
>     message: Delayed linking failed.
>     0:00:05.944496014 12757      0x11d0f70 INFO              
>     GST_EVENT gstevent.c:760:gst_event_new_segment: creating segment
>     event time segment start=0:00:00.648000000,
>     offset=0:00:00.000000000, stop=99:99:99.999999999, rate=1.000000,
>     applied_rate=1.000000, flags=0x00, time=0:00:00.000000000,
>     base=0:00:00.000000000, position 0:00:00.000000000, duration
>     99:99:99.999999999
>     0:00:05.945143367 12757      0x11d0f70 WARN          
>     matroskademux
>     matroska-demux.c:4761:gst_matroska_demux_loop:<demux> error:
>     stream stopped, reason not-linked
>     0:00:05.945192006 12757      0x11d0f70 INFO      
>      GST_ERROR_SYSTEM
>     gstelement.c:1879:gst_element_message_full:<demux> posting
>     message: GStreamer encountered a general stream error.
>     0:00:05.945221830 12757      0x11d0f70 INFO      
>      GST_ERROR_SYSTEM
>     gstelement.c:1902:gst_element_message_full:<demux> posted error
>     message: GStreamer encountered a general stream error.
>     0:00:05.945249445 12757      0x11d0f70 INFO                  
>      task gsttask.c:316:gst_task_func:<demux:sink> Task going to paused
>
>     Again, why does this work on the command line but not in my Python
>     window?
>
>
> In general: Are gst-launch-1.0 pipelines equivalent to
> Gst.parse_from_description() ones? This has me a bit confuzzled.
>
> -aps
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20190610/6238d8fc/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20190610/6238d8fc/attachment-0001.sig>


More information about the gstreamer-devel mailing list