extract_frame
Extract one frame at an exact timestamp from the original source video at native resolution. Use when keyframes miss the exact moment or full detail is needed.
Instructions
Re-extract ONE frame at an exact timestamp from the ORIGINAL source video at native resolution, with an optional crop {x, y, w, h} in source pixels. Use when the stored keyframes miss the instant (they capture scene changes + a 1 fps floor) or when you need full-resolution detail. Slower than get_frames — it decodes the source file, which must still exist at its recorded path. When NOT to use: normal browsing — get_frames serves stored keyframes instantly without touching the source. Examples:
keyframes sit at 12:31 and 12:38 but the flash happened at 12:34.5 → extract_frame(job_id, at_ms=754500)
extract_frame(job_id="...", at_ms=754500, crop={"x":800,"y":40,"w":400,"h":120}) — zoom into the toast text
tiny UI text unreadable in the 1568px keyframe → extract_frame at the same ms for native resolution
verify a one-frame glitch: extract_frame at 12300, 12400, 12500 and compare
OCR missed small text → extract_frame with a tight crop, then read the returned image
crop coordinates are SOURCE pixels (a Retina screen recording may be 2940x1912) — not keyframe scale
source file moved or deleted → clear error; stored keyframes via get_frames still work
audio-only job → always errors: there is no video stream to decode
anti-example: "show me around 5:00" → get_frames(job_id, at_ms=300000); extract_frame is for exact instants
anti-example: scanning a range frame by frame → get_frames(start_ms, end_ms) first, refine once after
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| crop | No | ||
| at_ms | Yes | ||
| job_id | Yes |