2011-02-08 2 views
3

Est-ce que quelqu'un sait comment j'utiliserais une fenêtre tkinter comme une sortie d'un videoink/pipeline depuis python? J'ai trouvé des méthodes pour beaucoup d'autres systèmes GUI, mais je ne veux pas avoir à utiliser tkinter et autre chose ensemble xxx merci d'avance xSortie vidéo dans Tkinter De GStreamer?

+0

liés: [? Way pour lire des fichiers vidéo dans Tkinter] (http://stackoverflow.com/q/7227162/4279) – jfs

Répondre

2

Cela fonctionne pour moi sur Windows 32 bits. Je reçois une erreur seg sur Linux ou Windows 64 bits. Désolé, je ne sais pas pour Mac.

Vous devez utiliser bus.connect ("synchronisation message :: élément", on_sync_message) et passer un ID widget Tk (winfo_id), comme vous pouvez le voir dans le code suivant. Le conteneur peut être n'importe quel widget Tk, mais un cadre noir solide semble fonctionner le mieux pour moi.

import sys, os 
from Tkinter import * 
import pygst 
pygst.require("0.10") 
import gst 


def start(): 
     player.set_property('video-sink', None) 
     player.set_property("uri", "file:///" + sys.argv[1]) 
     player.set_state(gst.STATE_PLAYING) 

def on_sync_message(bus, message): 
     if message.structure is None: 
       return 
     message_name = message.structure.get_name() 
     if message_name == "prepare-xwindow-id": 
       imagesink = message.src 
       imagesink.set_property("force-aspect-ratio", True) 
       imagesink.set_xwindow_id(mwin_id) 

window = Tk() 
window.geometry("500x400") 
movie_window = Frame(window,bg='#000000') 
movie_window.pack(side=BOTTOM,anchor=S,expand=YES,fill=BOTH) 

mwin_id = movie_window.winfo_id() 

player = gst.element_factory_make("playbin2", "player") 
fakesink = gst.element_factory_make('fakesink', 'novideo') 
player.set_property('video-sink', fakesink) 

bus = player.get_bus() 
bus.add_signal_watch() 
bus.enable_sync_message_emission() 
bus.connect("sync-message::element", on_sync_message) 

start() 
window.mainloop() 
+0

Je reçois une erreur de segmentation sur Linux – erjoalgo

Questions connexes