mjpeg 流的 python GTK 容器

发布于 2024-08-12 23:15:20 字数 138 浏览 10 评论 0 原文

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

I have an mjpeg stream from a web-cam and would like to display it in an application written in python using pygtk.
The stream is a string of bytes from the driver.
What widget would be best for displaying this and would I need to do some intermediate conversion before putting it in the widget? Should I write my own widget to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

内心旳酸楚 2024-08-19 23:15:20

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

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

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

GTK+ does not contain a native widget capable of decoding and rendering video.

You should probably look into GStreamer, which is a streaming-media toolkit built on the same GObject framework as GTK+.

It has the GstXvImageSink that is capable of rendering video using X11, and you should be able to configure it to render on top of a GTK+ widget.

清风夜微凉 2024-08-19 23:15:20

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

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

This example helped me getting started with gstreamer, it shows how one grabbs the webcam stream and displays it in an widget.

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

乖不如嘢 2024-08-19 23:15:20

可以使用图像小部件来显示 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

It is possible to use an Image widget to show the MJPEG stream.

Start a background thread, and have it read the stream and update the Image using gtk.gdk.PixbufLoader and image_widget.set_from_pixbuf

For example:

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)

Full working example is here: https://gist.github.com/mic159/fa2181a69f9119871b87

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文