2009-11-28 59 views
0

我有一个网络摄像头的mjpeg流,并希望显示它在python中使用pygtk编写的应用程序。 流是驱动程序中的一串字节。 什么窗口小部件最适合显示此内容,并且在将其放入小部件之前需要进行一些中间转换?我应该写我自己的小部件来做到这一点?蟒蛇GTK容器为mjpeg流

回答

2

GTK +不包含能够解码和渲染视频的本机小部件。

您应该看看GStreamer,它是一个基于与GTK +相同的GObject框架构建的流媒体工具包。

它具有能够使用X11呈现视频的GstXvImageSink,并且您应该能够将其配置为在GTK +窗口顶部呈现。

+0

的autovideosink可能也值得一看。 – XTL 2012-02-15 10:25:59

0

,能够使用图像插件来显示MJPEG流。

启动一个后台线程,并使其读取流,并使用gtk.gdk.PixbufLoaderimage_widget.set_from_pixbuf

例如更新图片:

for frame in self.get_raw_frame(): 
    loader = gtk.gdk.PixbufLoader('jpeg') 
    loader.write(frame) 
    loader.close() 
    pixbuf = loader.get_pixbuf() 
    # Schedule image update to happen in main thread 
    gobject.idle_add(self.widget.set_from_pixbuf, pixbuf) 

全部工作的例子是在这里:https://gist.github.com/mic159/fa2181a69f9119871b87