Контейнер Python GTK для потока mjpeg - PullRequest
0 голосов
/ 28 ноября 2009

У меня есть поток mjpeg с веб-камеры, и я хотел бы отобразить его в приложении, написанном на python с использованием pygtk. Поток представляет собой строку байтов из драйвера. Какой виджет будет лучше всего отображать это, и мне нужно будет выполнить какое-то промежуточное преобразование, прежде чем поместить его в виджет? Должен ли я написать свой собственный виджет для этого?

Ответы [ 3 ]

2 голосов
/ 30 ноября 2009

GTK + не содержит встроенного виджета, способного декодировать и визуализировать видео.

Вероятно, вам стоит взглянуть на GStreamer , который представляет собой набор инструментов для потокового мультимедиа, построенный на той же платформе GObject, что и GTK +.

Он имеет GstXvImageSink , который способен воспроизводить видео с использованием X11, и вы должны иметь возможность настроить его для отображения поверх виджета GTK +.

1 голос
/ 02 марта 2010

Этот пример помог мне начать работу с gstreamer, он показывает, как захватить поток веб-камеры и отобразить его в виджете.

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

0 голосов
/ 20 января 2015

Для отображения потока MJPEG можно использовать виджет Image.

Запустите фоновый поток, и он прочитает поток и обновит изображение, используя 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

...