Spaces:
Runtime error
Runtime error
| import os | |
| import cv2 | |
| import pandas as pd | |
| import gradio as gr | |
| import matplotlib.pyplot as plt | |
| from utils.except_dir import cust_listdir | |
| def get_video_metadata(video_path, category, benchmark): | |
| """Extract metadata from a video file.""" | |
| cap = cv2.VideoCapture(video_path) | |
| if not cap.isOpened(): | |
| return None | |
| # Extract metadata | |
| video_name = os.path.basename(video_path) | |
| frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) | |
| fps = cap.get(cv2.CAP_PROP_FPS) | |
| frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) | |
| frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) | |
| resolution = f"{frame_width}x{frame_height}" | |
| duration_seconds = frame_count / fps if fps > 0 else 0 | |
| aspect_ratio = round(frame_width / frame_height, 2) if frame_height > 0 else 0 | |
| file_size = os.path.getsize(video_path) / (1024 * 1024) # MB | |
| file_format = os.path.splitext(video_name)[1].lower() | |
| cap.release() | |
| return { | |
| "video_name": video_name, | |
| "resolution": resolution, | |
| "video_duration": f"{duration_seconds // 60:.0f}:{duration_seconds % 60:.0f}", | |
| "category": category, | |
| "benchmark": benchmark, | |
| "duration_seconds": duration_seconds, | |
| "total_frames": frame_count, | |
| "file_format": file_format, | |
| "file_size_mb": round(file_size, 2), | |
| "aspect_ratio": aspect_ratio, | |
| "fps": fps | |
| } | |
| def process_videos_in_directory(root_dir): | |
| """Process all videos in the given directory structure.""" | |
| video_metadata_list = [] | |
| # λ²€μΉλ§ν¬ ν΄λλ€μ μν | |
| for benchmark in cust_listdir(root_dir): | |
| benchmark_path = os.path.join(root_dir, benchmark) | |
| if not os.path.isdir(benchmark_path): | |
| continue | |
| # dataset ν΄λ κ²½λ‘ | |
| dataset_path = os.path.join(benchmark_path, "dataset") | |
| if not os.path.isdir(dataset_path): | |
| continue | |
| # dataset ν΄λ μμ μΉ΄ν κ³ λ¦¬ ν΄λλ€μ μν | |
| for category in cust_listdir(dataset_path): | |
| category_path = os.path.join(dataset_path, category) | |
| if not os.path.isdir(category_path): | |
| continue | |
| # κ° μΉ΄ν κ³ λ¦¬ ν΄λ μμ λΉλμ€ νμΌλ€μ μ²λ¦¬ | |
| for file in cust_listdir(category_path): | |
| file_path = os.path.join(category_path, file) | |
| if file_path.lower().endswith(('.mp4', '.avi', '.mkv', '.mov', 'MOV')): | |
| metadata = get_video_metadata(file_path, category, benchmark) | |
| if metadata: | |
| video_metadata_list.append(metadata) | |
| # df = pd.DataFrame(video_metadata_list) | |
| # df.to_csv('sample.csv', index=False) | |
| return pd.DataFrame(video_metadata_list) | |