Video Frame Extractor
Extract one frame or a timed image sequence from a local video, then compare requested and decoded times before downloading the result.{{ summaryTitle }}
{{ summaryLine }}
Frame gallery
The chart renderer is unavailable. Requested and decoded times remain available in the frame manifest.
| File | Requested | Decoded | Delta | Dimensions | Size | Copy |
|---|---|---|---|---|---|---|
| {{ row.filename }} | {{ row.requested }} | {{ row.decoded }} | {{ row.delta }} | {{ row.dimensions }} | {{ row.size }} |
A video frame is a still image decoded from a point on a video timeline. Frames are useful for thumbnails, storyboards, visual evidence, annotation sets, and close inspection of motion that passes too quickly during playback. The requested time identifies where decoding should begin; it does not guarantee that the stored picture has an independently encoded timestamp at that exact decimal second.
Compressed video usually stores a mixture of complete reference pictures and pictures that depend on nearby frames. A player may need to seek to an earlier reference point, decode forward, and then present the nearest frame available for the requested time. Variable frame rate, sparse timing metadata, codec support, and browser seeking behavior can all create a small difference between the requested time and the frame that is actually presented.
- Requested time
- The position on the timeline where extraction asks the decoder to seek.
- Decoded time
- The media time reported for the frame the browser presents after that seek.
- Timing delta
- Decoded time minus requested time. A nonzero value shows that the presented frame did not land exactly on the request.
Single-frame extraction fits a known moment such as a title card or scene change. Range extraction samples a sequence at a fixed interval, which is better for contact sheets, review sets, or rough motion analysis. The interval describes elapsed seconds, not a frame-number stride, so the resulting pictures may be uneven in frame count when the source uses variable frame rate.
Image format and scale affect the still files, not the selected moments. PNG keeps lossless pixel data and is useful for text or interface captures. JPEG and WebP can reduce file size through lossy encoding, while quarter- or half-size output reduces both dimensions and therefore reduces total pixels sharply. None of these choices can recover detail that was absent from the decoded video frame.
A frame grab is evidence of what the decoder presented, not proof of an event's exact recording time. For forensic, legal, scientific, or frame-accurate editing work, compare the requested and decoded times and verify the result in software that exposes the source time base and frame indexes.
How to Use This Tool:
Load one browser-playable video, decide whether you need one moment or a sampled range, and review the timing record before saving the images.
- Choose a Source video. The file must be no larger than 250 MB or 10 minutes, and each decoded frame must contain no more than 16,777,216 pixels.
- Select Single timestamp and enter seconds from the start, or select Time range and set the start, end, and Frame interval. Range boundaries must remain inside the video and the plan may contain at most 30 frames.
- Choose PNG, JPEG, or WebP and set Output size. For JPEG or WebP, lower Encoder quality when smaller lossy files matter more than retaining fine detail.
- Start extraction, then compare Requested, Decoded, and Delta in the frame manifest. Inspect the stills before downloading the image or ZIP archive.
Interpreting Results:
The gallery answers whether the captured pictures contain the moments you wanted. The timing comparison answers a different question: how closely each presented frame matched its requested second. Review the largest absolute delta first, then inspect neighboring requests when a scene boundary or fast action makes the exact picture important.
File dimensions should equal the decoded source dimensions multiplied by the selected scale and rounded to whole pixels. A smaller byte size does not prove better extraction accuracy; it reflects dimensions, image content, format, and encoder quality. If the browser reports that it cannot encode WebP, repeat the extraction as PNG or JPEG.
Technical Details:
Range sampling builds an inclusive sequence from the start time. It adds one interval repeatedly and keeps every request that does not pass the end. Times are rounded to six decimal places for the plan, while the visible manifest reports requested time, browser-presented time, and their difference.
Formula Core
The planned frame count uses the duration of the selected range divided by the interval, then includes the starting frame.
Here, N is the frame count, tstart and tend are seconds from the beginning of the video, and Δt is the interval in seconds. A range from 1.0 to 4.0 seconds at a 1.5-second interval produces requests at 1.0, 2.5, and 4.0 seconds, so N is 3.
Output dimensions are rounded independently to whole pixels, and the total work limit counts every output pixel across the plan.
The allowed scales are 1, 0.5, and 0.25. Total output work must not exceed 60,000,000 pixel samples. A multi-frame ZIP must remain at or below 120 MB.
Mechanism Core
For each requested time, the decoder seeks and waits for a presented video frame. The decoded frame is drawn into an output canvas at the selected dimensions, serialized in the chosen image format, and recorded with both timing values. That order matters because image encoding happens after seeking; changing format, quality, or scale does not change the requested timeline.
| Boundary | Rule | Reason to review |
|---|---|---|
| Source file | At most 250 MB and 600 seconds | Large or long files are rejected before extraction. |
| Decoded frame | At most 16,777,216 source pixels | Very high-resolution frames exceed the decode boundary. |
| Interval | 0.1 to 600 seconds, inclusive | A shorter interval may exceed the 30-frame cap. |
| Output work | At most 60,000,000 pixel samples | Reduce scale, shorten the range, or increase the interval. |
| Timing delta | Decoded time minus requested time | Nonzero values reveal seeking or presentation differences. |
Supported filename extensions do not guarantee that a browser can decode the codec inside the file. If loading fails, try a browser-compatible MP4 or WebM source. Extraction also cannot reconstruct dropped frames, hidden edit-list behavior, or timing information that the browser does not expose.
Privacy Notes:
The selected video, decoded frames, and generated image files stay in the current browser tab. They are not uploaded. Closing or reloading the tab removes the temporary frame previews, so download any needed image or archive first.
References:
- Media elements, WHATWG HTML Living Standard.
- The canvas element, WHATWG HTML Living Standard.
- HTMLVideoElement requestVideoFrameCallback, MDN Web Docs.
- How to extract frames from a video with OpenCV, Simplified Guide.