GStreamer- Ubuntu 16 vs Ubuntu 14

时间:2016-06-16 11:31:08

标签: python-2.7 ubuntu-14.04 gstreamer pygtk ubuntu-16.04

这是一个非常奇怪的问题,我正在经历并且没有解决方案的线索。 我正在为一个机器人制作一个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之间的工作方式有什么变化吗?可以解决什么问题?

0 个答案:

没有答案