[gst-devel] Snapshot script - strange gobject/gtype conflict
Olivier Aubert
olivier.aubert at liris.cnrs.fr
Tue Jul 21 23:55:38 CEST 2009
Hello
I have just implemented a snapshot-taking module through a dedicated
"playbin ! ffmpegcolorspace ! pngenc" pipeline, ending in a custom sink
named notifysink, which can then be used to process/save the resulting
PNGs. It is inspired by the code in Pitivi, but without its dependencies
on the whole framework which made it un-reusable as is.
The code is available at
http://svn.gna.org/viewcvs/advene/trunk/lib/advene/util/snapshotter.py
and it works well in standalone mode as a script, invoked by
snapshotter.py movie.avi 1200 5400 2800 [list of timestamps...]
or in interactive mode (through a pygtk evaluator which allows
interactive use, download also
http://svn.gna.org/viewcvs/advene/trunk/lib/advene/gui/evaluator.py
if you want to try it interactively).
However, a problem arises when I try to use the module in my
application, which already has a running gst pipeline (to play the
video). Simply adding these two lines to the script (see the comment at
the end of snapshotter.py) exhibits the same issue:
pipe=gst.parse_launch('playbin uri=file:///media/video/Bataille.avi')
pipe.set_state(gst.STATE_PLAYING)
It raises various warnings/errors, and locks the snapshot pipeline (a
player.get_state() not even returns) :
sys:1: Warning: cannot register existing type `GstSelectorPad'
sys:1: Warning: g_object_new: assertion `G_TYPE_IS_OBJECT (object_type)' failed
(snap.py:26756): GStreamer-CRITICAL **: gst_pad_set_event_function: assertion `GST_IS_PAD (pad)' failed
(snap.py:26756): GStreamer-CRITICAL **: gst_pad_set_getcaps_function: assertion `GST_IS_PAD (pad)' failed
(snap.py:26756): GStreamer-CRITICAL **: gst_pad_set_chain_function: assertion `GST_IS_PAD (pad)' failed
(snap.py:26756): GStreamer-CRITICAL **: gst_pad_set_internal_link_function: assertion `GST_IS_PAD (pad)' failed
(snap.py:26756): GStreamer-CRITICAL **: gst_pad_set_bufferalloc_function: assertion `GST_IS_PAD (pad)' failed
(snap.py:26756): GStreamer-CRITICAL **: gst_pad_set_active: assertion `GST_IS_PAD (pad)' failed
(snap.py:26756): GStreamer-CRITICAL **: gst_element_add_pad: assertion `GST_IS_PAD (pad)' failed
(snap.py:26756): GStreamer-CRITICAL **: gst_pad_set_event_function: assertion `GST_IS_PAD (pad)' failed
(snap.py:26756): GStreamer-CRITICAL **: gst_pad_set_getcaps_function: assertion `GST_IS_PAD (pad)' failed
(snap.py:26756): GStreamer-CRITICAL **: gst_pad_set_chain_function: assertion `GST_IS_PAD (pad)' failed
(snap.py:26756): GStreamer-CRITICAL **: gst_pad_set_internal_link_function: assertion `GST_IS_PAD (pad)' failed
(snap.py:26756): GStreamer-CRITICAL **: gst_pad_set_bufferalloc_function: assertion `GST_IS_PAD (pad)' failed
(snap.py:26756): GStreamer-CRITICAL **: gst_pad_set_active: assertion `GST_IS_PAD (pad)' failed
(snap.py:26756): GStreamer-CRITICAL **: gst_element_add_pad: assertion `GST_IS_PAD (pad)' failed
I did not manage to find out if it was a gobject-specific issue, or a
gst-specific one. Does anyone have a clue ?
Thanks
Olivier
More information about the gstreamer-devel
mailing list