2009-11-28 4 views
0

웹캠에서 mjpeg 스트림을 가지고 pygtk를 사용하여 Python으로 작성된 응용 프로그램에 표시하려고합니다. 스트림은 드라이버의 바이트 문자열입니다. 위젯을 표시하는 데 가장 적합한 위젯은 위젯에 넣기 전에 중간 변환을해야합니까? 이렇게하려면 내 위젯을 작성해야합니까?python mjpeg 스트림 용 GTK 컨테이너

답변

2

GTK +에는 비디오를 디코딩하고 렌더링 할 수있는 기본 위젯이 포함되어 있지 않습니다.

GTK +와 동일한 GObject 프레임 워크를 기반으로 제작 된 스트리밍 미디어 툴킷 인 GStreamer을 조사해야합니다.

X11을 사용하여 비디오를 렌더링 할 수있는 GstXvImageSink이 있으며 GTK + 위젯에 렌더링되도록 구성 할 수 있어야합니다.

+0

autovideosink가 수도 또한 볼만한 가치가 있습니다. – XTL

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