0

我有一个来自网络摄像头的 mjpeg 流,并想在使用 pygtk 用 python 编写的应用程序中显示它。流是来自驱动程序的一串字节。什么小部件最适合显示它,我需要在将它放入小部件之前进行一些中间转换吗?我应该编写自己的小部件来执行此操作吗?

4

3 回答 3

2

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

您可能应该研究一下GStreamer,它是一个流媒体工具包,构建在与 GTK+ 相同的 GObject 框架上。

它具有能够使用 X11 渲染视频的GstXvImageSink,并且您应该能够将其配置为在 GTK+ 小部件之上渲染。

于 2009-11-30T16:59:55.363 回答
1

这个例子帮助我开始使用 gstreamer,它展示了如何抓取网络摄像头流并将其显示在一个小部件中。

http://pygstdocs.berlios.de/pygst-tutorial/webcam-viewer.html

于 2010-03-02T15:17:06.473 回答
0

可以使用 Image 小部件来显示 MJPEG 流。

启动一个后台线程,让它读取流并使用gtk.gdk.PixbufLoader和更新图像image_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

于 2015-01-20T13:54:59.340 回答