video_inspect seek fast vs precise: a quick look with keyframe stills

seek: fast moves each still to the keyframe at or before its instant and skips the decode. Use it for a quick look; precise when timing matters.

5 min readSume
All posts

Set frames.seek to fast for a quick look at a clip. Each still then moves to the keyframe at or before its requested instant and the server skips the accurate decode, so a still can be early by up to one GOP (about 0 to 5 seconds on typical sources) but is never late. Quality, resolution and the transcript do not change. Leave seek at precise when the timestamp must be right.

Two modes

precise is the default. It decodes to the accurate instant, so programs you already use keep their behavior. fast trades timing for speed. The result is a grid that records seek: fast, the sample_times the tiles actually show, and the requested_times from your program, so you can see the gap on every still.

Picking by task

A first look at a long export, a thumbnail pass, and a skim of what the clip contains all work with fast. A check that a caption appears at second 12.4, a comparison of two cuts at the same instant, or a frame handed to a model with a time claim all need precise. If a timing error would change the decision, you want precise. When in doubt, run fast first, find the interesting stretch, and then run precise only over it.

video_inspect seek modes, from Sume docs read 2026-10-05
TaskseekWhy
Skim an exportfastA few seconds early is fine
Explicit at[] instantspreciseThe time is the point
Default 8 mid-bin stillspreciseMidpoints should be accurate
Contact sheet of 24 stillsfastSpeed over timing
Frame at the source sizevideo_framesUse the dedicated route

A request

The frames object takes only one of at[] or fps, with optional format, max_edge and seek. The example samples one still every two seconds with seek fast. Remember the call limit of 24 stills and the 1,800-second source limit. At fps 0.5 on a 40-second clip, that gives 20 stills, each moved back to a keyframe, which is plenty for a skim of what the clip contains.

{
  "video_url": "https://media.sume.com/artifacts/artf_demo/export.mp4",
  "frames": {
    "fps": 0.5,
    "seek": "fast",
    "max_edge": 768
  }
}

What fast does not change

The probe, the resolution and the transcript are the same either way, and the stills are still durable media.sume.com images. Cost is unaffected by the seek mode in the docs: probe and stills are billed by the Modal compute they use, and a transcript adds $0.01 per audio minute. If you need an exact frame at a time and the source size, use video_frames, which is built for that. For a long review, run a fast pass to find the section that matters, then a precise pass with explicit at[] instants over that section only. Two small calls usually cost less than one wide precise call that you have to redo.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume