works with gst-launch but not in python

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

works with gst-launch but not in python

Rohan-14
Hi all,

I am trying to stream video and audio over the network.  I have the
video working so far thanks to pointing out my little blunder the
other day.

But audio is not working, and this time I have remembered to add the
src to the pipeline.  The gst-launch sequence works perfectly, so I am
obviously missing another obvious thing.

These are the gst-launch commands that play happily together:

sender:

gst-launch-010 audiotestsrc ! queue ! audioconvert ! speexenc ! \
tcpserversink host=127.0.0.1 port=5001

receiver:

gst-launch-0.10 tcpclientsrc host=127.0.0.1 port=5001 ! speexdec ! \
queue ! alsasink sync=false

And here are the python scripts that are just reiterating this in
python, but it is not working

-------------------------------------------------------------------
#!/bin/env python

# sound_receiver.py

#gst-launch-0.10 tcpclientsrc host=127.0.0.1 port=5001 ! speexdec ! queue !
alsasink sync=false

import gobject
import pygst
pygst.require("0.10")
import gst

class server(object):
        def __init__(self):
                pipe = gst.Pipeline("receive")
                src = gst.element_factory_make("tcpclientsrc")
                src.set_property("host", '127.0.0.1')
                src.set_property("port", 5001)

                pipe.add(src)

                sbin = self.buildsound()
                pipe.add(sbin)
                src.link(sbin)

                pipe.set_state(gst.STATE_PLAYING )

        def buildsound(self):
                bin = gst.Bin("sound")
                speexdec = gst.element_factory_make("speexdec")
                queue = gst.element_factory_make('queue')
                soundsink = gst.element_factory_make("autoaudiosink")
                bin.add(speexdec, queue, soundsink)
                gst.element_link_many(speexdec, queue, soundsink)
               
                binsink = gst.GhostPad("sbinsink", speexdec.get_pad("sink"))
                bin.add_pad(binsink)
                return bin
               
if __name__ == "__main__":
        server()
        loop = gobject.MainLoop()
        loop.run()

----------------------------------------------------------------------
#!/bin/env python

# sound_sender.py

# gst-launch-010 audiotestsrc ! queue ! audioconvert ! speexenc ! tcpserversink
host=127.0.0.1 port=5001

import gobject
import pygst
pygst.require("0.10")
import gst

class client(object):
        def __init__(self):
                pipe = gst.Pipeline("sound")
                src = gst.element_factory_make("audiotestsrc")
                sbin = self.build_sound()
               
                pipe.add(src, sbin)
                src.link(sbin)

                pipe.set_state(gst.STATE_PLAYING)

        def build_sound(self):
                bin = gst.Bin("sbin")
                queue = gst.element_factory_make("queue")
                decode = gst.element_factory_make("decodebin")
                convert = gst.element_factory_make("audioconvert")
                speexenc = gst.element_factory_make("speexenc")
                sink = gst.element_factory_make("tcpserversink")
                sink.set_property("host", '127.0.0.1')
                sink.set_property("port", 5001)
                bin.add(queue, decode, convert, speexenc, sink)
                gst.element_link_many(queue, convert, speexenc, sink)

                binsink = gst.GhostPad("sbinsink", queue.get_pad("sink"))
                bin.add_pad(binsink)
                return bin
               


if __name__ == '__main__':
        client()
        loop = gobject.MainLoop()
        loop.run()
--------------------------------------------------------------------

I have noticed that with the gst-launch sequences you must have the
sound sender running before starting the sound receiver, but starting
the python scripts in either order makes no difference to the outcome:
no sound, and no error output.

Thanks in advance for any help, this has had me stumped for a while
now,

Rohan

------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel