GPT, Claude and Gemini models are good at reading images, but most API endpoints do not take a video file. If you want a model to describe a product demo, tag a stock clip, check an ad, or summarise a screen recording, you first have to turn the video into a handful of well-chosen frames with timestamps. This guide shows how to do that in about 20 lines of Python, without installing ffmpeg or OpenCV, and then send the frames to an OpenAI model or Claude.
Disclosure: we (Kanto Labs) built the Apify actor used below. Everything here also works with your own ffmpeg script - the "how many frames, which frames" advice applies either way.
Why not just send every frame?
A 10-minute video at 30 fps has 18,000 frames. Vision models bill per image (or per image tile), so sending them all is slow and expensive, and most of them are near-duplicates. What you want is:
Scene-change keyframes for edited videos (ads, trailers, tutorials with cuts): one frame per shot tells the story.
Discussion
Start the conversation
Your voice can be the first to spark an engaging conversation.