From: Dan Dennedy Date: Wed, 13 Feb 2013 18:25:03 +0000 (-0800) Subject: Add switcher.py SDI switcher example script. X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=6b2e714d1cd392e13ff3fc3919754e3c5eedf4fd;p=mlt Add switcher.py SDI switcher example script. --- diff --git a/src/swig/python/switcher.py b/src/swig/python/switcher.py new file mode 100755 index 00000000..d0994a56 --- /dev/null +++ b/src/swig/python/switcher.py @@ -0,0 +1,76 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# Import required modules +import mlt +import time +import sys +import tornado.ioloop +import tornado.web + +# Start the mlt system +mlt.mlt_log_set_level(40) # verbose +mlt.Factory.init() + +# Establish a pipeline +profile = mlt.Profile("atsc_1080i_5994") +profile.set_explicit(1) +tractor = mlt.Tractor() +tractor.set("eof", "loop") +fg_resource = "decklink:0" +bg_resource = "decklink:1" +if len(sys.argv) > 2: + fg_resource = sys.argv[1] + bg_resource = sys.argv[2] +fg = mlt.Producer(profile, fg_resource) +bg = mlt.Producer(profile, bg_resource) +tractor.set_track(bg, 0) +tractor.set_track(fg, 1) +composite = mlt.Transition(profile, "composite") +composite.set("fill", 1) +tractor.plant_transition(composite) + +# Setup the consumer +consumer = "decklink:2" +if len(sys.argv) > 3: + consumer = sys.argv[3] +consumer = mlt.Consumer(profile, consumer) +consumer.connect(tractor) +consumer.set("real_time", -2) +consumer.start() + +flip_flop = False +def switch(): + global composite, flip_flop + frame = fg.frame() + 2 + if flip_flop: + s = "0=20%%/0:100%%x80%%; %d=20%%/0:100%%x80%%; %d=0/0:100%%x100%%" % (frame, frame + 30) + composite.set("geometry", s) + else: + s = "0=0/0:100%%x100%%; %d=0/0:100%%x100%%; %d=20%%/0:100%%x80%%" % (frame, frame + 30) + composite.set("geometry", s) + flip_flop = not flip_flop + + +def output_form(handler): + handler.write('
') + +class SwitchHandler(tornado.web.RequestHandler): + def get(self): + switch() + +class MainHandler(tornado.web.RequestHandler): + def get(self): + output_form(self) + + def post(self): + switch() + output_form(self) + +application = tornado.web.Application([ + (r"/", MainHandler), + (r"/switch", SwitchHandler) +]) + +application.listen(8888) +tornado.ioloop.IOLoop.instance().start()