A timestamp is not a universal frame number
A video player exposes time in seconds. Setting the media element's current time asks the browser to seek to that point in the timeline. The browser then decodes enough data to present an available frame near the requested time. The HTMLMediaElement currentTime documentation defines the seek interface, but it does not promise a stable source-frame index across every codec and container.
For constant 30 FPS media, one nominal frame lasts about 1 / 30 second, or 0.0333 seconds. That makes a 1/30-second nudge intuitive. For 24, 25, 29.97, 60, or variable-frame-rate media, the same nudge is only a small time step. It may move by more than one presentation frame, land on the same displayed frame, or expose a frame whose timestamp spacing differs from the average.
VideoToImg therefore describes its control as a 1/30-second nudge rather than promising one original frame for every source. This distinction matters for reproducible QA, scientific observation, legal evidence, and animation timing.
Why keyframes affect seeking
Most delivery video is compressed across time. A keyframe contains a self-contained picture, while following inter-frames often describe changes relative to earlier decoded images. To show a frame at 37.4 seconds, a decoder may need to locate an earlier keyframe and decode forward until it reaches the requested presentation time.
Sparse keyframes can make random seeking slower, especially in a long or high-resolution file. They can also expose browser or file-index problems that normal forward playback hides. The MDN video codec guide explains how inter-frame compression and periodic keyframes affect playback and artifact recovery.
A delayed seek is not evidence that the tool uploaded the file. Local files are still decoded by browser media APIs in the current tab. Decode time depends on the source structure, device, codec implementation, and distance from a useful random-access point.
Use a repeatable exact-frame workflow
- Locate the scene broadly. Scrub or enter a timestamp near the action, then wait for the preview to update.
- Inspect both directions. Nudge backward and forward through several small time steps. Compare subject position, focus, motion blur, captions, and interface state.
- Record media time. Keep the displayed timestamp with the exported image or in your review note. A filename alone may not preserve enough context.
- Export at source width first. Downscale only when the final use has a known display size. Resizing cannot recover missing detail later.
- Choose the output around the pixels. PNG avoids an additional lossy still-image step; JPG is compact for photographic scenes; WebP is useful for modern web delivery.
- Verify critical evidence independently. A browser screenshot tool is suitable for visual selection, not a substitute for a forensic decoder that reports exact frame identity and presentation timestamps.
Constant and variable frame rate need different language
Constant-frame-rate video aims for evenly spaced frames, though common rates such as 29.97 still require precise rational timing. Variable-frame-rate video allows presentation durations to change. Screen recordings, conferencing tools, and phones may use variable timing to adapt to content or capture conditions.
Dividing a timestamp by an advertised average FPS can therefore produce a convenient estimate, not an authoritative frame number. Two frames can have unequal durations, and a duplicated or dropped presentation may affect the relationship between time and ordinal position.
When a workflow needs a statement such as 'frame 1,248 of the encoded stream,' inspect the file with a tool that exposes packet and frame timestamps. When the task is 'save the clearest image around 41.2 seconds,' browser visual selection is usually the more direct method.
Diagnose a wrong, black, or stale frame
A black image near the end of a file can occur when the requested time sits beyond the last decodable frame even though the container reports a slightly longer duration. Move a small amount earlier and try again. A stale image after a seek can indicate that decoding has not completed; wait for the preview state rather than capturing during a transition.
If only one file fails, suspect its codec, indexes, timestamps, or damaged media data. If every file fails in one browser, test a current browser version and a small known-good H.264 MP4 or WebM file. If a direct URL fails while the downloaded local copy works, cross-origin permission or the remote response is the likely boundary.
The codec and container guide provides a fuller diagnostic sequence. Report reproducible problems to hello@videotoimg.com without sending private media.
Know what image export can and cannot change
After the browser presents a frame, the tool draws that decoded image to a canvas and asks the browser to encode an image blob. The canvas toBlob documentation describes this still-image encoding step. Changing PNG, JPG, or WebP affects the new image file, not the already-decoded source detail.
PNG cannot reverse motion blur, focus error, chroma subsampling, low bitrate, or previous video compression. JPG quality controls only the additional JPEG encoding tradeoff. A smaller maximum width reduces pixel dimensions and memory or file weight, but it should be chosen for the intended display rather than treated as a quality upgrade.
Open the exact frame extractor when visual selection is the goal, then use the image format guide before exporting a large batch.