2009-11-28 60 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