Как можно воспроизводить видеофайлы в tkinter

tkvideoplayer и tkvideo сразу не советуйте! У tkvideo частота кадров оставляет желать лучшего и мен нужно будет потом файл закрыть, а это там не предусмотрено. tkvideoplayer вообще не устанавливается на мой компьютер!!! (P.s:кому интересно можете посмотреть, у меня есть вопрос на профиле про эту ошибку)

Мне без разницы как в окне или не в окне ГЛАВНОЕ чтобы открывалось и закрывалось, таймер я поставлю.

Буду признателен за помощь, будьте моим героем!


Ответы (1 шт):

Автор решения: Гор Манучарян

Для воспроизведения видеофайлов в Tkinter можно использовать библиотеку OpenCV. Вот простой пример:

import cv2
import tkinter as tk
from PIL import Image, ImageTk

class VideoPlayer:
    def __init__(self, video_file, master=None):
        self.cap = cv2.VideoCapture(video_file)
        self.master = master
        self.canvas = tk.Canvas(master)
        self.canvas.pack()
        self.delay = int(1000/self.cap.get(cv2.CAP_PROP_FPS))
        self.update()

    def update(self):
        ret, frame = self.cap.read()
        if ret:
            frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
            self.photo = ImageTk.PhotoImage(image=Image.fromarray(frame))
            self.canvas.create_image(0, 0, image=self.photo, anchor=tk.NW)
            self.master.after(self.delay, self.update)
        else:
            self.cap.release()

if __name__ == "__main__":
    root = tk.Tk()
    player = VideoPlayer("example.mp4", master=root)
    root.mainloop()

В этом примере видеофайл открывается с помощью cv2.VideoCapture(). Затем каждый кадр конвертируется в PhotoImage с помощью PIL.ImageTk, и отображается в Canvas с помощью create_image(). Метод update() вызывается рекурсивно через задержку, чтобы обеспечить плавное воспроизведение.

После запуска скрипта откроется окно Tkinter, в котором будет воспроизводиться видеофайл. Когда видео закончится, окно закроется. Вы можете использовать этот пример как отправную точку для создания своего видеоплеера с таймером и другими функциями, которые вам нужны.

→ Ссылка