Какие есть способы воспроизведения видео в окне пайгейм?

Я пишу игру на pygame и хотел бы вставить туда интро перед запуском.
Раньше бы я справился с встроенной библиотекой movie, но ее больше нет.

Какие есть способы?

p.s. Это не сама играю Просто накиданный шаблон.

import pygame as pg
import sys
class game:

    def __init__(self, x, y):
        #Инициализация переменных
        self.x = x
        self.y = y
        self.usr_width = 60
        self.usr_height = 100
        self.usr_x = disp_width // 3
        self.usr_y = disp_height - self.usr_height - 100

    def run(self):
        #Основной запуск игры
        pg.init()
        pg.mixer.init()
        self.display = pg.display.set_mode((800, 600))
        pg.display.set_caption('GAME')
        #Основной код игры
        while True:
            for event in pg.event.get():
                if event.type == pg.QUIT:
                    sys.exit()
                    pg.quit()
                    
            self.display.fill((255, 255, 255))
            pg.draw.rect(self.display, (247, 240, 22), (self.usr_x, self.usr_y, self.usr_width, self.usr_height))
            pg.display.update()
if __name__ == "__main__":
    start_game = game(0, 0)
    start_game.run()

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

Автор решения: S. Nick

С помощью модуля cv2 (OpenCV), который можно установить с помощью команды командной строки:

pip install opencv-python

import pygame
import cv2

video = cv2.VideoCapture("Samonastrojka.avi")           # Установите свое  видео
success, video_image = video.read()
fps = video.get(cv2.CAP_PROP_FPS)

window = pygame.display.set_mode(video_image.shape[1::-1])
clock = pygame.time.Clock()

run = success
while run:
    clock.tick(fps)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
    
    success, video_image = video.read()
    if success:
        video_surf = pygame.image.frombuffer(
            video_image.tobytes(), 
            video_image.shape[1::-1], 
            "BGR"
        )   
    else:
        run = False
    window.blit(video_surf, (0, 0))
    pygame.display.flip()

pygame.quit()
exit()

введите сюда описание изображения

→ Ссылка