import cv2 import os def extract_frames(video_path, output_dir='frames', every_n_sec=1): os.makedirs(output_dir, exist_ok=True) video_name = os.path.splitext(os.path.basename(video_path))[0] save_path = os.path.join(output_dir, video_name) os.makedirs(save_path, exist_ok=True) cap = cv2.VideoCapture(video_path) if not cap.isOpened(): raise ValueError("Failed to open video.") fps = cap.get(cv2.CAP_PROP_FPS) interval = max(1, int(fps * every_n_sec)) frame_idx = 0 saved = 0 while cap.isOpened(): ret, frame = cap.read() if not ret: break if frame_idx % interval == 0: filename = os.path.join(save_path, f"frame_{saved:04d}.jpg") cv2.imwrite(filename, frame) saved += 1 frame_idx += 1 cap.release() return saved, save_path