Also see:


I wrote a new plugin/element and I would like it to be included in GStreamer, how to proceed?

See SubmittingPatches.

It is hard to give unique names to elements I create, is there no better way to do this?

You can just pass NULL as the element name to gst_element_factory_make. GStreamer will assign a unique name automatically in this case.

My handler for the message signal of GstBus is never called, how to get it to work?

You need to call gst_bus_add_signal_watch to enable emission of the message signal. Also make sure that you have a main loop running (g_main_loop_run or e.g. gtk_main).

How to read the meta data (tags) of a file?

Use a playbin element with fakesinks, connect handlers for ERROR and TAG messages and set state to PAUSED. FIXME give full code example

My pipeline with multiple sinks never reaches the PAUSED state, what am I doing wrong?

You need to add queue elements after the demuxer (or tee element) that you use.

The problem is that the pipeline will deadlock without queues: When the demuxer/tee element is sending data to the first sink, the flow will block there while going from READY to PAUSED (this is called "prerolling"). Since the flow is blocked inside the first sink, the second sink will never receive any data which means that it can never reach the PAUSED state. A queue element decouples the flow by sending on data in another thread.

FIXME give example pipelines

When capturing from a video and/or audio source, how to make recording stop correctly?

Since (live) video and audio sources provide an endless stream of data until you stop them, some special steps are needed. These are outlined in the documentation of GstBaseSrc under the section "Controlled shutdown of live sources in applications".

How to read raw audio or video content from a file?

The audioparse and videoparse elements can be used for this. FIXME Give examples/link to element docs. FIXME Since they are in -bad, maybe explain the old method of capsfilter + filesrc-blocksize.

How to turn a list of image files into a video file?

This can be done with the multifilesrc element. FIXME Give example/link to element docs.

I installed new LADSPA modules/libvisual plugins but the corresponding GStreamer elements do not show up, what's going on?

First make sure that the needed plugin is installed (ladspa from gst-plugins-bad, libvisual from gst-plugins-base). You can verify that by checking the output of gst-inspect-0.10 ladspa (gst-inspect-0.10 libvisual).

If the GStreamer plugin is installed properly, you have to force a registry update:

rm -fv ~/.gstreamer-0.10/registry*

Unfortunately this step is needed everytime the set of LADSPA modules/libvisual plugins changes. Bug #350477 is keeping track of this issue.


My pygst program is mysteriously core dumping, how to fix this?

Make sure that you initialize glib threading by using gobject.threads_init() very early in your program. The full import stanza that every pygst program should have looks like this:

import pygtk
pygtk.require ("2.0")
import gobject
gobject.threads_init ()
import pygst
pygst.require ("0.10")
import gst

How to get a list of all elements available in the registry?

Use the get_feature_list method of the default registry:

>>> import pygst; pygst.require ("0.10")
>>> import gst
>>> registry = gst.registry_get_default ()
>>> registry.get_feature_list (gst.ElementFactory)
[<gst.ElementFactory bin @ 0x87fb874>, <gst.ElementFactory pipeline @ 0x87fbc84>, <gst.ElementFactory dvdsrc @ 0x87fbc5c>,