Hallo, ik probeer een video met hulp van gstreamer af te spelen. Het geluid werkt al, alleen moet het nog gerenderd worden in bijvoorbeeld QWidget. Dit krijg ik niet voor elkaar, zeker niet omdat er stomweg geen documentatie is. Zeker niet voor renderen in een QWidget (of een ander QT onderdeel).
Dit is wat ik al heb:
import pygst
pygst.require("0.10")
import gst, time
from PyQt4.QtGui import *
class vidiplay():
def __init__(self, parent=None):
self.parent = parent
self.player = gst.element_factory_make("playbin", "player")
fakesink = gst.element_factory_make("fakesink", "fakesink")
self.player.set_property("video-sink", fakesink)
bus = self.player.get_bus()
bus.add_signal_watch()
bus.enable_sync_message_emission()
bus.connect('message::*', self.bus_message)
def bus_message(self, bus, message):
t = message.type
if t == gst.MESSAGE_EOS: print "End Of Stream"
elif t == gst.MESSAGE_ERROR:
err, debug = message.parse_error()
print "Error: %s" % err, debug
print t
def startstop(self, loop=False):
if self.player.get_state()[1] == gst.STATE_PLAYING and not loop :
self.player.set_state(gst.STATE_NULL)
self.parent.ui.playknop.setIcon(QIcon(self.parent.style().standardPixmap(QStyle.SP_MediaPlay)))
self.parent.ui.playknop.setText("Play")
else:
self.playmode = True
self.player.set_property("uri", self.vidiurl)
self.player.set_state(gst.STATE_PLAYING)
self.parent.ui.playknop.setIcon(QIcon(self.parent.style().standardPixmap(QStyle.SP_MediaStop)))
self.parent.ui.playknop.setText("Stop")
def null(self):
self.player.set_state(gst.STATE_NULL)
self.parent.ui.playknop.setIcon(QIcon(self.parent.style().standardPixmap(QStyle.SP_MediaPlay)))
self.parent.ui.playknop.setText("Play")
Groet