[gst-devel] Mixing two ogg streams in gst-python

alfred alfred.hallmert at gmail.com
Fri Oct 7 02:04:45 CEST 2005


Hi

I am trying to accomplish something which would seem to be very
straightforward in gstreamer - mixing two ogg streams into one in a python
script, but I'm experiencing several problems.

This is the setup I'm trying to create:
filesrc->oggdemux->oggdec->audioconv->vol\
                                           > adder-> (..) shout2send
filesrc->oggdemux->oggdec->audioconv->vol/

The first problem I have is that I am only able to create an ogg decoding
pipeline using gst.parse_launch(), not by creating objects directly (i.e.
with gst.element_factory_make). I think this is because src pads are
available "sometimes", and I need to wait until they are creaed, but I
fail to convert the code at
http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/chapter-pads.html
to python:
oggdemux.connect("pad-added", new_pad)
gives the error message "TypeError: unknown signal name"

Instead I have tried to use gst.parse_launch() like this:

        bin = gst.parse_launch('( filesrc name=file1 !' +
                               'oggdemux name=oggdmx1 ! ' +
                               'vorbisdec name=oggdec1 !' +
                               'audioconvert name=auconv1 ) ' +
                               '( filesrc name=file2 !' +
                               'oggdemux name=oggdmx2 ! ' +
                               'vorbisdec name=oggdec2 !' +
                               'audioconvert name=auconv2 ) ')

This gives the error message "GStreamer-WARNING **: pushing data on
non-negotiated pad oggdec1:src, not allowed." when running the pipeline.

What really annoys me is that it works fine when the second source is a
sinesrc instead of another ogg stream. I am assuming this is some kind of
syncronisation issues, but I can't figure out how to use queue or similar
to fix this, all examples are the other way around (i.e. splitting a
stream in two and keeping them in sync).

What am I missing?




More information about the gstreamer-devel mailing list