pyges: Add a PyGes example

This commit is contained in:
Thibault Saunier 2011-05-06 19:39:56 -03:00 committed by Thibault Saunier
parent 0275a1b777
commit 287fbc02b8

View file

@ -0,0 +1,105 @@
#!/usr/bin/env python
#
# simple.py
#
# Copyright (C) 2011 Thibault Saunier <thibault.saunier@collabora.co.uk>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
from gst import ges
import sys
import getopt
import gst
import glib
class Demo:
def __init__(self, files):
self.tl_objs = []
self.set_pipeline (files)
for f in files:
self.add_tl_object(f)
self.mainloop = glib.MainLoop()
def add_tl_object(self, file):
self.tl_objs.append(ges.TimelineFileSource (file))
self.layer.add_object(self.tl_objs[-1], -1)
transition = ges.TimelineStandardTransition("crossfade")
transition.duration = gst.SECOND * 2
self.layer.add_object(transition, -1)
def bus_handler(self, unused_bus, message):
if message.type == gst.MESSAGE_ERROR:
print "ERROR"
self.mainloop.quit()
elif message.type == gst.MESSAGE_EOS:
print "Done"
self.mainloop.quit()
return gst.BUS_PASS
def set_pipeline (self, files):
try:
opts, args = getopt.getopt(sys.argv[1:], "h", ["help"])
except getopt.error, msg:
print msg
print "for help use --help"
ges.init()
tl = ges.timeline_new_audio_video()
layer = ges.SimpleTimelineLayer()
tl.add_layer(layer)
pipeline = ges.TimelinePipeline()
pipeline.add_timeline (tl)
bus = pipeline.get_bus()
bus.set_sync_handler(self.bus_handler)
self.pipeline = pipeline
self.layer = layer
def run(self):
if (self.pipeline.set_state(gst.STATE_PLAYING) == gst.STATE_CHANGE_FAILURE):
print "Couldn't start pipeline"
self.mainloop.run()
def main():
try:
opts, args = getopt.getopt(sys.argv[1:], "h", ["help"])
except getopt.error, msg:
print msg
print "for help use --help"
sys.exit(2)
# process options
for o, a in opts:
if o in ("-h", "--help"):
print __doc__
sys.exit(0)
demo = Demo(args)
demo.run()
if __name__ == "__main__":
main()