Je veux construire un lecteur vidéo avec Python, mais mon application aura plus de boutons que juste jouer/pause, donc j'ai besoin d'insérer la vidéo dans la fenêtre.Comment insérer un lecteur vidéo dans une fenêtre tkinter avec Python 3?
Je le code jusqu'à présent:
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()
Mais cela ne crée 2 fenêtres, l'un d'eux est un moteur de rendu OpenGL ... J'ai besoin du lecteur vidéo dans la même fenêtre ...
Vous avez actuellement un lecteur vidéo qui fonctionne? Si vous le faites alors tout ce que vous devez faire est d'ajouter plus de cadres ou placez vos autres boutons dans l'emplacement de la grille que vous voulez. Si vous avez besoin de placer quelque chose en haut ou à gauche de votre lecteur vidéo, vous devrez changer '.grid (row = 0, column = 0)' pour quelque chose qui n'est pas sur la première position de la grille. Probablement 'grille (rangée = 1, colonne = 1)'. Malheureusement, j'ai peu d'expérience avec l'intégration de vidéo, donc je ne peux pas aider beaucoup avec le problème de 2 fenêtres que vous rencontrez. Je ferais de l'imagerie il y a un moyen de l'intégrer dans un cadre. –