How to capture video frames locally — batch intervals and format advice
Introduces taking video screenshots with a browser video + Canvas, how to choose a batch interval, the PNG/JPG trade-off, and the features and limits of the TwoThink video screenshot tool.
Making a tutorial cover, checking the subtitles or picking sticker material often means pulling a few frames "out of" a video. There is no need to upload it to a screenshot site — the browser can do it.
The principle is simple
After you load an MP4 / WebM locally, use a <video> element to seek to a time, then draw it onto a canvas with drawImage and export a PNG or JPG. TwoThink Video Screenshot takes this route, without loading ffmpeg, so the first screen is lighter.
Manual or batch?
- Manual: drag the progress bar to the frame you want and press "Capture this frame"
- Batch: capture serially at 1 / 2 / 5 / 10 second intervals (avoiding seek conflicts)
For batch work, trim the intro and outro with Trim Video first — the number of frames stays under control.
Format and size
- Keeping a full-quality copy: choose PNG
- Sending it in a chat and saving space: choose JPG, and quality 0.9 is usually enough
- Preview only: scale it down to 720 or 480 pixels wide
Known limitations (honestly stated)
- Local files only; a remote video triggers cross-origin canvas tainting
- Seeking with
currentTimeis not frame accurate, so there may be a small offset - After a seek, some encodings occasionally produce a black frame — the tool retries once automatically
For animations use Video to GIF, and for a stitched long picture use Video to Long Image.