{ "id": "ffmpeg_frames", "name": "Extract Frames", "category": "ingest", "description": "Extract frames from video for photogrammetry/3DGS/mesh-gen. Supports fps sampling, near-duplicate removal (mpdecimate), and sharpness culling.", "accepts": ["video"], "produces": ["frames"], "entry": "run.py", "params_schema": { "type": "object", "properties": { "fps": {"type": "number", "default": 2, "minimum": 0.1, "maximum": 60, "description": "Frames per second to sample (2-3 for orbit scans)"}, "dedupe": {"type": "boolean", "default": true, "description": "Drop near-duplicate frames (mpdecimate)"}, "format": {"type": "string", "enum": ["jpg", "png"], "default": "jpg"}, "max_frames": {"type": "integer", "default": 300, "minimum": 1, "maximum": 5000, "description": "Hard cap on frames kept"}, "sharpness_cull_pct": {"type": "number", "default": 5, "minimum": 0, "maximum": 50, "description": "Cull the blurriest N% (by file size heuristic, jpg only)"} } } }