mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 11:45:25 +00:00
pyges: fix and clean examples/simple.py
This commit is contained in:
parent
b77da13eb8
commit
c24f57846a
1 changed files with 47 additions and 54 deletions
93
bindings/python/examples/simple.py
Normal file → Executable file
93
bindings/python/examples/simple.py
Normal file → Executable file
|
@ -23,25 +23,42 @@
|
||||||
# the Free Software Foundation; either version 3, or (at your option)
|
# the Free Software Foundation; either version 3, or (at your option)
|
||||||
# any later version.
|
# any later version.
|
||||||
|
|
||||||
from gst import ges
|
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import getopt
|
import optparse
|
||||||
import gst
|
|
||||||
import glib
|
import glib
|
||||||
|
import gobject
|
||||||
|
gobject.threads_init()
|
||||||
|
|
||||||
class Demo:
|
import gst
|
||||||
def __init__(self, files):
|
import ges
|
||||||
self.tl_objs = []
|
|
||||||
self.set_pipeline (files)
|
|
||||||
|
|
||||||
for f in files:
|
class Simple:
|
||||||
self.add_tl_object(f)
|
def __init__(self, uris):
|
||||||
|
# init ges to have debug logs
|
||||||
|
ges.init()
|
||||||
self.mainloop = glib.MainLoop()
|
self.mainloop = glib.MainLoop()
|
||||||
|
|
||||||
def add_tl_object(self, file):
|
timeline = ges.timeline_new_audio_video()
|
||||||
self.tl_objs.append(ges.TimelineFileSource (file))
|
self.layer = ges.SimpleTimelineLayer()
|
||||||
self.layer.add_object(self.tl_objs[-1], -1)
|
timeline.add_layer(self.layer)
|
||||||
|
|
||||||
|
self.pipeline = ges.TimelinePipeline()
|
||||||
|
self.pipeline.add_timeline(timeline)
|
||||||
|
bus = self.pipeline.get_bus()
|
||||||
|
bus.set_sync_handler(self.bus_handler)
|
||||||
|
|
||||||
|
# all timeline objects except the last will have a transition at the end
|
||||||
|
for n in uris[:-1]:
|
||||||
|
self.add_timeline_object(n, True)
|
||||||
|
self.add_timeline_object(uris[-1], False)
|
||||||
|
|
||||||
|
def add_timeline_object(self, uri, do_transition):
|
||||||
|
filesource = ges.TimelineFileSource (uri)
|
||||||
|
filesource.set_duration(long (gst.SECOND * 5))
|
||||||
|
self.layer.add_object(filesource, -1)
|
||||||
|
|
||||||
|
if do_transition:
|
||||||
transition = ges.TimelineStandardTransition("crossfade")
|
transition = ges.TimelineStandardTransition("crossfade")
|
||||||
transition.duration = gst.SECOND * 2
|
transition.duration = gst.SECOND * 2
|
||||||
self.layer.add_object(transition, -1)
|
self.layer.add_object(transition, -1)
|
||||||
|
@ -56,50 +73,26 @@ class Demo:
|
||||||
|
|
||||||
return gst.BUS_PASS
|
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):
|
def run(self):
|
||||||
if (self.pipeline.set_state(gst.STATE_PLAYING) == gst.STATE_CHANGE_FAILURE):
|
if (self.pipeline.set_state(gst.STATE_PLAYING) == \
|
||||||
|
gst.STATE_CHANGE_FAILURE):
|
||||||
print "Couldn't start pipeline"
|
print "Couldn't start pipeline"
|
||||||
|
|
||||||
self.mainloop.run()
|
self.mainloop.run()
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main(args):
|
||||||
try:
|
usage = "usage: %s URI-OF-VIDEO-1 ... URI-OF-VIDEO-n\n" % args[0]
|
||||||
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)
|
if len(args) < 2:
|
||||||
demo.run()
|
sys.stderr.write(usage)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
parser = optparse.OptionParser (usage=usage)
|
||||||
|
(options, args) = parser.parse_args ()
|
||||||
|
|
||||||
|
simple = Simple(args)
|
||||||
|
simple.run()
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
sys.exit(main(sys.argv))
|
||||||
|
|
Loading…
Reference in a new issue