Gapless playback
# [SNIPPET_NAME: Gapless playback]
# [SNIPPET_CATEGORIES: GStreamer]
# [SNIPPET_DESCRIPTION: Shows how to use gstreamer to play music without any gap between tracks ]
# [SNIPPET_AUTHOR: Simon Vermeersch <[email protected]>]
# [SNIPPET_LICENSE: GPL]
#!/usr/bin/python
import pygst
pygst.require("0.10")
import gst
import sys
import gobject
class Player:
def __init__(self, filename):
self.filename = filename
#this only works with playbin2
self.player = gst.element_factory_make("playbin2", "player")
self.player.set_property("uri", filename)
self.player.connect("about-to-finish", self.on_about_to_finish)
def run(self):
self.player.set_state(gst.STATE_PLAYING)
loop = gobject.MainLoop()
loop.run()
def on_about_to_finish(self, player):
#The current song is about to finish, if we want to play another
#song after this, we have to do that now
#we'll just repeat the song here as an example
player.set_property("uri", self.filename)
if __name__ == "__main__":
gobject.threads_init()
player = Player("file:///usr/share/example-content/Ubuntu_Free_Culture_Showcase/InTheCircle.oga")
player.run()