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 |
Free forum by Nabble | Edit this page |