Playing a Pipeline
# [SNIPPET_NAME: Playing a Pipeline]
# [SNIPPET_CATEGORIES: GStreamer]
# [SNIPPET_DESCRIPTION: Construct and play a pipeline]
# [SNIPPET_AUTHOR: Tiago Boldt Sousa <[email protected]>]
# [SNIPPET_LICENSE: GPL]
#!/usr/bin/python
import pygst
pygst.require("0.10")
import gst
import sys
import gobject
#Create a player
class Player:
def __init__(self, file):
#Element playbin automatic plays any file
self.player = gst.element_factory_make("playbin", "player")
#Set the uri to the file
self.player.set_property("uri", "file://" + file)
#Enable message bus to check for errors in the pipeline
bus = self.player.get_bus()
bus.add_signal_watch()
bus.connect("message", self.on_message)
def run(self):
self.player.set_state(gst.STATE_PLAYING)
def on_message(self, bus, message):
t = message.type
if t == gst.MESSAGE_EOS:
#file ended, stop
self.player.set_state(gst.STATE_NULL)
loop.quit()
elif t == gst.MESSAGE_ERROR:
#Error ocurred, print and stop
self.player.set_state(gst.STATE_NULL)
err, debug = message.parse_error()
print "Error: %s" % err, debug
loop.quit()
#Execution starts here
#Specify your file bellow
#It can be any video/audio supported by gstreamer
file = "/usr/share/sounds/gnome/default/alerts/bark.ogg"
player = Player(file)
player.run()
loop = gobject.MainLoop()
loop.run()