Video Frame Extractor – Frames & Thumbnails from Any Video
Pricing
from $0.80 / 1,000 frames
Video Frame Extractor – Frames & Thumbnails from Any Video
Extract frames from video files: every N seconds, a set number of frames, exact timestamps or one per scene change. Make thumbnails, preview strips and frames for AI vision models. JPG, PNG or WebP with timestamps. Pay per frame.
Pricing
from $0.80 / 1,000 frames
Rating
0.0
(0)
Developer
Mohit Sawhney
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 hours ago
Last modified
Categories
Share
What it does
Video Frame Extractor pulls still images out of video files. Give it links to videos and choose which frames you want:
- Every N seconds, e.g. one frame every 5 seconds for a contact sheet or preview strip.
- A set number of frames, spread evenly across the video, e.g. 10 thumbnails.
- At exact timestamps, e.g. 1.5 s, 10 s and 62 s.
- At each scene change, one frame per new shot, good for summaries and finding cover images.
Frames come back as JPG, PNG or WebP, optionally resized, each with its timestamp.
Common uses: video thumbnails, preview strips, training data for vision models, feeding frames to an AI model for video understanding, catalogue images from product videos, and checking footage without watching it.
How much it costs
You pay per frame saved. Scene-change mode also has a small charge per minute of video scanned, because it reads the whole video. See the Pricing tab for current prices. Videos that fail are not charged.
Set "Most frames per video" to cap how many frames a long video can produce.
Input
| Field | What it means |
|---|---|
| Video file links | Direct links to MP4, MOV, WebM, MKV or AVI files. Page links from YouTube, TikTok or Instagram are not supported. |
| Which frames | Every N seconds, a set number, exact timestamps, or scene changes. |
| Seconds between frames | For "every N seconds". |
| Number of frames | For "a set number". |
| Timestamps | For "exact timestamps", in seconds. |
| Scene change sensitivity | For "scene changes". Lower finds more scenes; 0.3 suits most videos. |
| Image format | JPG, PNG or WebP. |
| Maximum width | Shrink frames wider than this. Empty keeps full size. |
| Most frames per video | Safety cap. Default 100. |
Example:
{"videoUrls": ["https://example.com/product-demo.mp4"],"mode": "count","frameCount": 12,"imageFormat": "webp","maxWidth": 1280}
Output
One row per frame:
{"videoUrl": "https://example.com/product-demo.mp4","frameNumber": 3,"timestampSeconds": 22.5,"imageUrl": "https://api.apify.com/v2/key-value-stores/.../records/video-001-frame-00003.webp","videoWidth": 1920,"videoHeight": 1080,"error": null}
If a video could not be processed, its row has error set and no frames.
Use it as an API
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("mvisiondigital/video-frame-extractor").call(run_input={"videoUrls": ["https://example.com/product-demo.mp4"],"mode": "scenes",})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["timestampSeconds"], item["imageUrl"])
Good to know
- Videos up to 2 GB.
- Frames are stored in your own Apify storage.
- Exact timestamps are matched to the nearest frame in the video.