import cv2 import pygame import sys def main ( screen: pygame.Surface, video_path: str, ) -> None: # OpenCV で動画を読み込む cap = cv2.VideoCapture (video_path) if not cap.isOpened (): return # screen の幅、高さ (width, height) = screen.get_size () fps = cap.get (cv2.CAP_PROP_FPS) clock = pygame.time.Clock () while cap.isOpened (): # 動画のフレームを読み込む (ret, frame) = cap.read () if not ret: break # OpenCV の BGR フォーマットを RGB に変換 frame = cv2.cvtColor (frame, cv2.COLOR_BGR2RGB) # Numpy 配列を Pygame サーフェスに変換 frame_surface = pygame.surfarray.make_surface (frame) frame_surface = pygame.transform.rotate (frame_surface, -90) frame_surface = pygame.transform.flip (frame_surface, True, False) frame_surface = pygame.transform.scale (frame_surface, (width, height)) # フレームを描画 screen.blit (frame_surface, (0, 0)) pygame.display.update () # FPS に応じて待機 clock.tick (fps) cap.release ()