player.py 文件源码

python
阅读 26 收藏 0 点赞 0 评论 0

项目:hls-player 作者: weimingtom 项目源码 文件源码
def __init__(self, display=True):
        import pygst
        import gst
        if display:
            self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
            self.window.set_title("Video-Player")
            self.window.set_default_size(500, 400)
            self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
            self.window.connect('delete-event', lambda _: reactor.stop())
            self.movie_window = gtk.DrawingArea()
            self.window.add(self.movie_window)
            self.window.show_all()

        self.player = gst.Pipeline("player")
        self.appsrc = gst.element_factory_make("appsrc", "source")
        self.appsrc.connect("enough-data", self.on_enough_data)
        self.appsrc.connect("need-data", self.on_need_data)
        self.appsrc.set_property("max-bytes", 10000)
        if display:
            self.decodebin = gst.element_factory_make("decodebin2", "decodebin")
            self.decodebin.connect("new-decoded-pad", self.on_decoded_pad)
            self.player.add(self.appsrc, self.decodebin)
            gst.element_link_many(self.appsrc, self.decodebin)
        else:
            sink = gst.element_factory_make("filesink", "filesink")
            sink.set_property("location", "/tmp/hls-player.ts")
            self.player.add(self.appsrc, sink)
            gst.element_link_many(self.appsrc, sink)
        bus = self.player.get_bus()
        bus.add_signal_watch()
        bus.enable_sync_message_emission()
        bus.connect("message", self.on_message)
        bus.connect("sync-message::element", self.on_sync_message)
        self._playing = False
        self._need_data = False
        self._cb = None
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号