如何使用python3在tkinter窗口中插入视频播放器?

2024-03-29 09:06:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用python构建一个视频播放器,但是我的应用程序将有更多的按钮,而不仅仅是play/pause,所以我需要在窗口中插入视频。在

到现在为止我有这个代码:

import tkinter
import os
import gi
gi.require_version('Gst', '1.0')
from gi.repository import GObject, Gst


def set_frame_handle(bus, message, frame_id):
    if not message.get_structure() is None:
        if message.get_structure().get_name() == 'prepare-window-handle':
            display_frame = message.src
            display_frame.set_property('force-aspect-ratio', True)
            display_frame.set_window_handle(frame_id)

root = tkinter.Tk()
w, h = root.winfo_screenwidth(), root.winfo_screenheight()
root.geometry("%dx%d+0+0" % (w, h))

Gst.init(None)
GObject.threads_init()

video = tkinter.Frame(root, bg='#000000')
video.grid(row=0, column=0, sticky="nsew")

frame_id = video.winfo_id()

player = Gst.ElementFactory.make('playbin', None)
player.set_property('video-sink', None)
player.set_property('uri', 'file://%s' % (os.path.abspath('out.mpeg')))
player.set_state(Gst.State.PLAYING)

bus = player.get_bus()
bus.add_signal_watch()
bus.enable_sync_message_emission()
bus.connect('sync-message::element', set_frame_handle, frame_id)

root.mainloop()

但这只创建了2个窗口,其中一个是OpenGL渲染器。。。我需要视频播放器在同一个窗口里。。。在


Tags: importnoneidmessageget视频tkintervideo