Start with the question the images must answer
Frame extraction is a sampling problem before it is an image-format problem. Define the useful time range and the decision someone will make from the images. A meeting contact sheet needs broad scene coverage. An animation review needs closely spaced states. A thumbnail search needs a manageable set of visually different candidates.
Trim first. If only 45 seconds of a 20-minute recording matter, set that range before raising the sampling density. This reduces decode work, memory use, duplicate-looking frames, and the time required to inspect the result.
- Use interval when calendar time is the stable unit: one image every 5, 10, or 30 seconds.
- Use requested FPS when motion spacing matters: for example, 2 samples per second across a short action.
- Use fixed count when review effort or output quantity is fixed: for example, 24 candidates across a scene.
- Use single frame only after you already know the moment or have narrowed the range enough to inspect nearby frames.
Calculate interval output before extraction
For a range from start time S to end time E, sampled every I seconds, a useful estimate is floor((E - S) / I) + 1 when both range boundaries are included. A 60-second range sampled every 10 seconds therefore produces about 7 timestamps: 0, 10, 20, 30, 40, 50, and 60 seconds. The final count can vary at the media boundary because a timestamp must remain decodable.
If the estimate exceeds 240 images, shorten the range or increase the interval. For example, sampling a 30-minute range every 5 seconds would request roughly 361 timestamps. Raising the interval to 8 seconds reduces the estimate to about 226, which fits in one run. Another option is to process separate scenes so each result remains easier to review.
Interval sampling is especially readable for tutorials, lectures, inspections, and long recordings where events are discussed in seconds or minutes. It is less suitable for a brief movement that finishes between two widely spaced timestamps.
Understand what requested FPS means
Requested FPS controls how many timestamps the tool samples per second; it does not change the source video and it does not prove the source frame rate. At 2 requested FPS, the target spacing is 0.5 seconds. At 10 requested FPS, it is 0.1 seconds. A 12-second range at 5 requested FPS asks for about 61 timestamps when both endpoints are included.
Sampling above the useful temporal detail of the clip often creates near-duplicates. A static presentation recorded at 30 source FPS rarely needs 30 exported images per second. In contrast, a two-second interaction bug may benefit from 10 requested FPS so state changes are visible across a compact sequence.
Variable-frame-rate media makes the distinction more important. The browser seeks by media time and returns a decoded presentation frame near that time; there may not be one source frame at every perfectly regular interval. For exact source-frame indexing, use a decoder designed to expose presentation timestamps and frame identities.
Use fixed count for bounded review work
Fixed-count mode distributes a chosen number of candidates across the selected range. If a 90-second range needs 10 images, the approximate gap between candidates is 90 / (10 - 1), or 10 seconds when both endpoints are included. This mode makes the review workload predictable even when clip durations differ.
A useful two-pass workflow starts with 12 to 24 images across the broad range. Identify the strongest subrange, then repeat with the same count inside that smaller window. The second pass increases temporal detail without generating hundreds of images from irrelevant footage.
This approach works well for thumbnails, event photos, product angles, and visual QA. It is also easier to explain to another person: 'review these 20 candidates' is a clearer handoff than an arbitrary FPS setting.
Worked sampling plans
Ten-minute software walkthrough
Start with a 30-second interval for about 21 images. Remove loading screens and duplicate states. If one workflow needs more detail, isolate that minute and sample every 5 seconds. Export PNG when small interface text must remain readable.
Eight-second sports play
Trim the range to the play and request 8 FPS for roughly 65 candidates. Review ball position, pose, occlusion, and motion blur. Narrow to the best one-second window and use single-frame nudges before exporting the final JPG or PNG.
Forty-five-minute lecture contact sheet
Use a 2-minute interval for about 23 images. This is enough to identify topic changes without turning the output into an unreviewable gallery. If slide text matters, keep source width or set a maximum width that preserves legibility.
Dataset inspection sample
Choose a fixed count that matches the human review budget, then record the exact time range and settings. A sample can reveal scene balance and obvious quality problems, but it is not automatically statistically representative. Dataset design, class balance, and randomization require a separate method.
Check the result before increasing density
Review timestamps in order and ask three questions: Are important transitions missing? Are many consecutive images visually redundant? Can a reviewer understand why each image exists? Missing events call for a narrower range or denser sample; redundancy calls for a wider interval or lower requested FPS.
Keep the first pass deliberately small. Browser-decoded full-resolution images can occupy far more memory than their compressed video source suggests. A 1920 x 1080 canvas contains about 8.3 million RGBA bytes before image encoding, so many simultaneous previews can pressure a mobile device even when the downloaded JPG files are compact.
Continue with the exact frame guide when the sample identifies a promising moment, or open the video to frames converter to apply a plan now.