这是一个非常奇怪的问题,我正在经历并且没有解决方案的线索。 我正在为一个机器人制作一个GUI,我需要一个可以快速退出并启动的视频播放器。我发现了PyGTK库和GStreamer
import os
import gst, gtk, gobject
class VideoPlayer:
def __init__(self):
self.window = gtk.Window()
self.window.connect('destroy', self.on_destroy)
self.window.set_size_request(640, 480)
self.drawingarea = gtk.DrawingArea()
self.drawingarea.connect('realize', self.on_drawingarea_realized)
self.window.add(self.drawingarea)
self.playbin = gst.element_factory_make('playbin2')
self.playbin.set_property('uri',"file:///home/anger.ogv") #filepath
self.sink = gst.element_factory_make('xvimagesink')
self.sink.set_property('force-aspect-ratio', True)
self.playbin.set_property('video-sink', self.sink)
self.bus = self.playbin.get_bus()
self.bus.add_signal_watch()
self.bus.connect("message::eos", self.on_finish)
self.window.connect("destroy", gtk.main_quit)
self.window.show_all()
self.playbin.set_state(gst.STATE_PLAYING)
def on_finish(self, bus, message):
self.playbin.set_state(gst.STATE_NULL)
gtk.main_quit()
def on_destroy(self, window):
self.playbin.set_state(gst.STATE_NULL)
gtk.main_quit()
def on_drawingarea_realized(self, sender):
self.sink.set_xwindow_id(self.drawingarea.window.xid)
if __name__ == "__main__":
VideoPlayer()
gtk.main()
我必须承认这是我在网站上找到的代码并且它有效。我只是改变了文件路径。但是当我从Ubuntu 14切换到Ubuntu 16时,它停止了工作。 我收到没有错误,窗口打开正常,但视频无法播放。我完全没有头绪。问题是 gst在Ubuntu 16和14之间的工作方式有什么变化吗?可以解决什么问题?