From cd7e03d9364a7f2f45b3868fd602542c78385131 Mon Sep 17 00:00:00 2001 From: Stefan Sauer Date: Mon, 31 Oct 2011 10:49:41 +0100 Subject: [PATCH] examples: add helloworld example Add a straight 1:1 copy from cores' helloworld.c to show how the c api maps into the pythong bindings. It would rock to have the same in other bindings. --- examples/Makefile.am | 1 + examples/helloworld.py | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 examples/helloworld.py diff --git a/examples/Makefile.am b/examples/Makefile.am index c6338de..629b68e 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -10,6 +10,7 @@ examples_DATA = \ fvumeter.py \ gst-discover \ gstfile.py \ + helloworld.py \ mixer.py \ play.py \ pipeline-tester \ diff --git a/examples/helloworld.py b/examples/helloworld.py new file mode 100644 index 0000000..0ef0205 --- /dev/null +++ b/examples/helloworld.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python + +import sys + +import gobject +gobject.threads_init() + +import pygst +pygst.require('0.10') +import gst + +def bus_call(bus, message, loop): + t = message.type + if t == gst.MESSAGE_EOS: + sys.stout.write("End-of-stream\n") + loop.quit() + elif t == gst.MESSAGE_ERROR: + err, debug = message.parse_error() + sys.stderr.write("Error: %s: %s\n" % err, debug) + loop.quit() + return True + +def main(args): + if len(args) != 2: + sys.stderr.write("usage: %s \n" % args[0]) + sys.exit(1) + + playbin = gst.element_factory_make("playbin2", None) + if not playbin: + sys.stderr.write("'playbin2' gstreamer plugin missing\n") + sys.exit(1) + + # take the commandline argument and ensure that it is a uri + if gst.uri_is_valid(args[1]): + uri = args[1] + else: + uri = gst.filename_to_uri(args[1]) + playbin.set_property('uri', uri) + + # create and event loop and feed gstreamer bus mesages to it + loop = gobject.MainLoop() + + bus = playbin.get_bus() + bus.add_watch(bus_call, loop) + + # start play back and listed to events + playbin.set_state(gst.STATE_PLAYING) + loop.run() + + # cleanup + playbin.set_state(gst.STATE_NULL) + +if __name__ == '__main__': + sys.exit(main(sys.argv)) -- 2.7.4