Какие есть способы воспроизведения видео в окне пайгейм?
Я пишу игру на 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()
