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