VideoThumbnailsConverter
Pull 12 evenly spaced thumbnails from a video right on this page. The video plays from your device in your browser, nothing is uploaded, and each thumbnail downloads as a JPEG. The page also covers generating thumbnails across a video library through an API.
Pull thumbnails from a video here
Runs in your browser. The file stays on your device and nothing is uploaded.
Drop an MP4, WebM or MOV file here, or choose one from your device.
Loading the reader.
How It Works
Drop an MP4, WebM or MOV file onto the reader at the top of this page, or choose one. The video plays from your device in your browser.
The reader splits the video into 12 equal parts and takes the frame from the middle of each, which keeps clear of the first and last moments, where many videos fade from or to black.
Each frame is drawn at up to 480 pixels wide and saved as a JPEG.
Download any thumbnail, or the JSON that lists every thumbnail's timestamp and size.
For a whole library, the API code below runs an extractor over every video in a bucket on Mixpeek's servers and stores the output as documents you can search.
Code Examples
import os, requests
API = "https://api.mixpeek.com"
H = {"Authorization": f"Bearer {os.environ['MIXPEEK_API_KEY']}",
"X-Namespace": os.environ["NAMESPACE_ID"]}
# 1. a bucket, with a schema that declares the field you will send
bucket = requests.post(f"{API}/v1/buckets", headers=H, json={
"bucket_name": "video-inputs",
"bucket_schema": {"properties": {"video": {"type": "video"}}},
}).json()
# 2. land the file as an object. the URL goes in data, on the blob
requests.post(f"{API}/v1/buckets/{bucket['bucket_id']}/objects", headers=H, json={
"key_prefix": "run-1",
"blobs": [{"property": "video", "type": "video",
"data": "https://example.com/clip.mp4"}],
})
# 3. a collection over that bucket, running the extractor
collection = requests.post(f"{API}/v1/collections", headers=H, json={
"collection_name": "video-to-thumbnails",
"source": {"type": "bucket", "bucket_ids": [bucket["bucket_id"]]},
"feature_extractor": {"feature_extractor_name": "multimodal_extractor", "version": "v1"},
}).json()
# 4. run extraction over the bucket
requests.post(f"{API}/v1/buckets/{bucket['bucket_id']}/batches", headers=H, json={
"collection_ids": [collection["collection_id"]],
"auto_submit": True,
})
# 5. read the output
docs = requests.get(
f"{API}/v1/collections/{collection['collection_id']}/documents", headers=H
).json()
print(docs)Use Cases
Supported Input Formats
Quick Info
Run it over a library
Mixpeek runs this conversion as a pipeline over a whole library in your object storage, with the output landing as queryable documents. The reader on this page handles one file at a time.
Frequently Asked Questions
Related Converters
Video to Keyframes
Find the scene changes in a video and save a frame from each, right on this page. The video plays from your device in your browser, nothing is uploaded, and every keyframe downloads as a JPEG with its timestamp. The page also covers doing this across a video library through an API.
Video to Metadata
Read a video file's technical metadata on this page: duration, frame size, frame rate, codecs, bitrate, and the audio track's sample rate and channels. The file is read in your browser and never uploaded. The page also covers what no header holds, such as the objects and speech in the video, and how to extract both across a library through an API.
Ready to convert video to thumbnails?
Start using the Mixpeek Video to Thumbnails in minutes. Sign up for a free API key and follow the documentation to get started.