MLT GTK + Consumer的Python绑定

时间:2014-11-07 09:29:10

标签: python multimedia mlt

我正在努力弄清楚如何在python中使用MLT的GTK2 Consumer。 消费者概述了here

Doxygen API中没有关于使用此消费者的信息,我能找到的唯一详细信息是C code itself

我根据play.py示例尝试了以下代码,但它给了我错误

NotImplementedError: Wrong number or type of arguments for overloaded function 'new_Consumer'.
  Possible C/C++ prototypes are:
    Mlt::Consumer::Consumer()
    Mlt::Consumer::Consumer(Mlt::Profile &)
    Mlt::Consumer::Consumer(Mlt::Profile &,char const *,char const *)
    Mlt::Consumer::Consumer(Mlt::Profile &,char const *)
    Mlt::Consumer::Consumer(Mlt::Service &)
    Mlt::Consumer::Consumer(Mlt::Consumer &)
    Mlt::Consumer::Consumer(mlt_consumer)

代码:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # Import required modules
    import mlt
    import time
    import sys
    import gtk

    # Start the mlt system
    mlt.Factory().init( )

    # Establish a profile
    mlt_profile = mlt.Profile( )

    # Create the producer
    p = mlt.Producer( mlt_profile, "video_file" )
    self.mltwidget = gtk.HBox()
    fp.add(self.mltwidget)

    if p:

        # Create the consumer
        c = mlt.Consumer( mlt_profile, "gtk_preview", self.mltwidget)

        # Turn off the default rescaling
        c.set( "rescale", "none" )

        # Connect the producer to the consumer
        c.connect( p )

        # Start the consumer
        c.start( )

        # Wait until the user stops the consumer
        while c.is_stopped( ) == 0:
            time.sleep( 1 )
    else:
        # Diagnostics
        print "Unable to open ", "video_file"

你们能让我知道如何使用这个消费者,或者就如何解决这个问题提出一些建议吗?或者,关于如何在我的GTK2应用程序中嵌入由MLT SDL消费者生成的SDL屏幕的一些建议会很棒:)

非常感谢!

1 个答案:

答案 0 :(得分:0)

因此经过一些进一步调查后,似乎GTK + Consumer使用SDL WINDOWID Hack,因此可以使用http://faq.pygtk.org/index.py?file=faq23.042.htp&req=show

中列出的代码手动嵌入标准SDL消费者

遗憾的是,这不适合我需要多个屏幕的应用程序,因此我会考虑其他选项。