我正在努力弄清楚如何在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屏幕的一些建议会很棒:)
非常感谢!
答案 0 :(得分:0)
因此经过一些进一步调查后,似乎GTK + Consumer使用SDL WINDOWID Hack,因此可以使用http://faq.pygtk.org/index.py?file=faq23.042.htp&req=show
中列出的代码手动嵌入标准SDL消费者遗憾的是,这不适合我需要多个屏幕的应用程序,因此我会考虑其他选项。