rendered paste body#!/usr/bin/env python# Conrad Parker (kfish) <conrad@metadecks.org># 8 Sep 2006# Based on twism's player: http://pastebin.ca/150771import sysimport urllibimport pygstpygst.require("0.10")import gstimport pygtkimport gtkclass VideoPipeline: def __init__(self, uri, start_offset): self.uri = uri # Create a playbin playbin = gst.element_factory_make ("playbin") self.playbin = playbin # Create a pipeline self.pipeline = gst.Pipeline () bus = gst.Bus () self.pipeline.set_bus (bus) bus.add_signal_watch () bus.connect ("message::eos", self.eos_handler, playbin) self.pipeline.add (playbin) self.playbin.set_property ("uri", uri) self.pipeline.set_state (gst.STATE_PAUSED) self.seek(start_offset) def eos_handler (self, bus, message, playbin): print "Got EOS while playing", self.uri self.seek (0) def seek (self, time_nanoseconds): time_seconds = time_nanoseconds / 1000000000 print "Seeking to ", time_nanoseconds, " (", time_seconds, "s)" r = self.pipeline.seek (1.0, gst.FORMAT_TIME, gst.SEEK_FLAG_FLUSH, gst.SEEK_TYPE_SET, time_nanoseconds, gst.SEEK_TYPE_NONE, -1) print "Seek result: ", r def play(self): self.pipeline.set_state (gst.STATE_PLAYING)class Main: def __init__(self): if (len(sys.argv) < 3): print "Usage: vtest uri start_offset" return uri = sys.argv[1] if not gst.uri_is_valid(uri): uri = "file://" + urllib.pathname2url(uri) start_offset = long(sys.argv[2]) * 1000000000L v = VideoPipeline(uri, start_offset) v.play() gtk.main()start = Main()