import gradio as gr import cv2 import os def extract_frames(video_file): video_path = video_file.name cap = cv2.VideoCapture(video_path) frame_paths = [] i = 0 os.makedirs("frames", exist_ok=True) while True: ret, frame = cap.read() if not ret: break path = f"frames/frame_{i:03d}.jpg" cv2.imwrite(path, frame) frame_paths.append(path) i += 1 cap.release() return frame_paths[:5] # return first 5 for demo demo = gr.Interface( fn=extract_frames, inputs=gr.File(label="Upload Video", file_types=[".mp4"]), outputs=gr.Gallery(label="Extracted Frames").style(grid=5) ) demo.launch()