- Removed skipFrames logic — capture every frame for reliability - FFmpeg framerate set to actual FPS (capped at 60) instead of hardcoded 30 - Added -vf fps=30 filter to downsample to 30fps in output - First frame: CapturedFrame is null (no previous capture), skipped naturally - Second frame onwards: data available from previous frame's GPU copy