Esempio n. 1
0
    def run(self):
        print("Starting XML render")
        player = PLAYER()

        # Don't try anything if somehow this was started
        # while timeline rendering is running
        if player.is_rendering:
            print("Can't render XML when another render is already running!")
            return

        # Stop all playback before producer is disconnected
        self.current_playback_frame = player.producer.frame()
        player.ticker.stop_ticker()
        player.consumer.stop()
        player.producer.set_speed(0)
        player.producer.seek(0)

        # Wait until producer is at start
        while player.producer.frame() != 0:
            time.sleep(0.1)

        # Get render producer
        if self.rendered_sequence == None:  # default is current sequence
            timeline_producer = PROJECT().c_seq.tractor
        else:
            timeline_producer = self.rendered_sequence.tractor

        # Get render consumer
        xml_consumer = mlt.Consumer(PROJECT().profile, "xml",
                                    str(self.file_name))

        # Connect and start rendering
        xml_consumer.connect(timeline_producer)
        xml_consumer.start()
        timeline_producer.set_speed(1)

        # Wait until done
        while xml_consumer.is_stopped() == False:
            print("In XML render wait loop...")
            time.sleep(0.1)

        print("XML render done")

        # Get app player going again
        player.connect_and_start()
        player.seek_frame(0)

        self.render_done_callback(self.data)
Esempio n. 2
0
    def run(self):
        print "Starting XML render"
        player = PLAYER()
        
        # Don't try anything if somehow this was started 
        # while timeline rendering is running
        if player.is_rendering:
            print "Can't render XML when another render is already running!"
            return

        # Stop all playback before producer is disconnected
        self.current_playback_frame = player.producer.frame()
        player.ticker.stop_ticker()
        player.consumer.stop()
        player.producer.set_speed(0)
        player.producer.seek(0)
        
        # Wait until producer is at start
        while player.producer.frame() != 0:
            time.sleep(0.1)
        
        # Get render producer
        timeline_producer = PROJECT().c_seq.tractor

        # Get render consumer
        xml_consumer = mlt.Consumer(PROJECT().profile, "xml", str(self.file_name))

        # Connect and start rendering
        xml_consumer.connect(timeline_producer)
        xml_consumer.start()
        timeline_producer.set_speed(1)

        # Wait until done
        while xml_consumer.is_stopped() == False:
            print "In XML render wait loop..."
            time.sleep(0.1)
    
        print "XML render done"

        # Get app player going again
        player.connect_and_start()
        player.seek_frame(0)

        self.render_done_callback(self.data)