#!/usr/bin/env python2.4 import sys, Image, time import pgmrender import pygst pygst.require ("0.10") import gst from pgm import render, log from pgm.layout import window, group from pgm.form import rectangle, stroke, color, image, label from pgm.timing import controller, modifier, keyframe log.set_level(log.DEBUG) def handle_events(events): for event in events: event_type = event.type if event_type == pgmrender.DELETE: sys.exit(0) def main(args): title = 'Stream' if len(args) != 1: print 'Usage: %s mediafile' % sys.argv[0] return 1 pgmrender.init('opengl1') win = pgmrender.create_window() win.set_title(title, title) drb1 = pgmrender.create_surface() drb1.set_position(0, 0) drb1.set_size(800, 600) win.add_drawable(drb1, pgmrender.DRAWABLE_FAR) lbl = label.Label() lbl.text = "Pigment label" win.add(lbl) pipeline = gst.parse_launch("gnomevfssrc name=src ! decodebin name=d ! " \ "queue ! ffmpegcolorspace ! " \ "pgmrendersink name=sink ") src_element = pipeline.get_by_name('src') src_element.set_property('location', sys.argv[1]) sink_element = pipeline.get_by_name('sink') sink_element.set_property('drawable', drb1) pipeline.set_state(gst.STATE_PLAYING) win.start_loop() while 1: events = win.get_events() handle_events(events) win.update() time.sleep(0.025) if __name__ == '__main__': sys.exit(main(sys.argv[1:]))