For developers choosing how their agent watches video

Playhead vs Gemini for video questions

Written by The Playhead team · Updated 10 min read

The cover of the article: Playhead vs Gemini for video questions

Gemini and Playhead solve different halves of the same problem. Gemini reads a video directly. In its default static mode it takes 1 frame per second, and every frame stays in the context window: Google documents about 100 tokens for each second of video at the default low media resolution and about 300 at high resolution, so 10 minutes costs about 60,000 to 180,000 tokens before the model answers anything. Google also offers an agentic mode on some Flash models, which loads only what the prompt needs and uses up to 88% fewer tokens on long videos. Playhead reads the video on its own servers and returns the answer in words, about 2,500 tokens, with the second of every moment it names. Use Gemini when the video is short and you want the model to look at it. Use Playhead when the video is long, when the agent has other work to do, or when a moment has to be found to the frame.

Share

Key takeaways

  • In its default static mode, Gemini samples video at 1 frame per second. Google's documentation warns that a fast action sequence can lose detail at 1 frame a second.
  • A 10 minute video costs about 60,000 tokens of Gemini's context at the default low media resolution, and about 180,000 at high resolution. Google's agentic mode uses up to 88% fewer tokens on long videos.
  • Playhead answers the same question in about 2,500 tokens, because the video is watched on our side and what comes back is prose with timestamps in it.
  • Playhead dates every moment in an answer to 2 decimal places, and a question about 4 seconds of a video reads those 4 seconds rather than the whole file.
  • Neither replaces the other. Playhead calls a vision model too, and that call is not free. The difference is whose context window pays for the pictures.

What Gemini is better at

First, because a comparison that opens with our own advantages is an advertisement rather than a comparison.

  • Gemini reads the video itself. There is no second service between the model and the frames, and no second bill.
  • A public YouTube URL can be passed straight to the API. Nothing is downloaded, stored or uploaded by you.
  • The reasoning and the looking happen in the same model, so a question that mixes the two never crosses a boundary where context is lost.
  • There is a free tier, and for a short clip it is genuinely free.
  • Gemini 3 exposes a media_resolution parameter, so the token cost per frame is a dial rather than a fixed price.
  • Gemini 3.8 Flash, 3.7 Flash, 3.6 Flash and 3.5 Flash Lite offer an agentic mode. The model loads only the frames, audio and transcript that the prompt needs, and Google documents up to 88% fewer tokens on long-form video.

How they compare

Playhead compared with Gemini, capability by capability
What you wantGeminiPlayhead
How often the video is looked atIn part1 frame per second in the default static mode, or a custom rate that you set. Google's documentation adds that fast action sequences can lose detail at 1 frame per second. [1]YesHow closely a stretch is looked at follows the question. Ask about 4 seconds and those 4 seconds are read, at a density the whole file would never get.
What the video costs your context windowIn partAbout 100 tokens for every second of video at the default low media resolution, or about 300 at high resolution. A 10 minute video is about 60,000 to 180,000 tokens before the model writes a word. The agentic mode loads less, and Google documents up to 88% fewer tokens on long videos. [2]YesAbout 2,500 tokens for a first look, whatever the length. The video is watched on our side and the answer comes back as prose.
How long a video fitsIn partA model with a 1M context window takes up to 3 hours at the default low media resolution, or 1 hour at high resolution. [2]YesThe sampling rate is derived from the frame budget rather than fixed, so the frames spread across whatever the runtime is. The answer names every second that was not looked at.
A second question about the same video is cheapIn partIn static mode, every call sends the video again. Context caching lowers the price of the tokens; it does not stop them being sent. In agentic mode, a follow-up that carries previous_interaction_id keeps the video context on Google's server. Google's page does not say what that context costs on the next turn. [1]YesThe first answer returns a session_id. A question that carries it reads what was already found, so it costs a few hundred tokens instead of a second pass.
One second, read at full resolutionIn partA frame is 66 tokens at low media resolution, or 258 tokens otherwise. The frame is the frame that 1 fps sampling landed on. [2]YesA question about one second reads that second large enough for a price, a logo lock-up and 12 pt legal type to be legible in the answer.
The timestamp cannot be inventedNot documentedTimestamps can be referred to in a prompt as MM:SS. Google's documentation does not describe how a returned time is grounded. [1]YesEvery frame carries its own time burned into the pixels above the picture, so a model cannot lose track of which frame it is looking at.
What could not be answered is namedNot documentedThe response is the model's answer. Nothing in the documentation describes a field that reports coverage. [1]YesEvery answer carries an unanswered list, so a video nobody could read and a video with nothing in it never look the same.
Works from a platform other than YouTubeIn partYouTube URLs are supported directly. Anything else is a file that you get first and then send: through the File API, as inline data under 100 MB, or from Cloud Storage. That is your download, your storage and your bandwidth. [1]YesTikTok, Instagram, X, Facebook, Vimeo, Twitch, Reddit, a Meta Ad Library link, or a path to a local file. The fetch runs on our side.

The difference is whose context window pays

Both approaches send frames to a vision model. They disagree about where the model sits.

Gemini takes the video as an input. In the default static mode, the frames enter the same context window as your prompt, your tools and the rest of the conversation, and they stay there for the whole turn.

Playhead puts a boundary in the middle. The video is fetched, decoded, sampled and read on our servers. What crosses back into your agent is prose with timestamps in it.

That is the whole architectural difference, and every row of the table above follows from it.

Gemini, 10 minutes of video
≈60,000 tokens600 seconds at about 100 tokens a second, at the default low media resolution. Google's own figure.
Gemini, the same at high resolution
≈180,000 tokensAbout 300 tokens a second. The frames are 258 tokens each instead of 66.
Playhead, the same video
≈2,500 tokensThe answer, in words, with the second of every moment it names.

What 1 frame per second cannot see

Google documents the rate and the consequence. The consequence is easy to underestimate.

At 1 frame per second, everything that happens between two frames is gone. A cut at 1.24 seconds and a cut at 1.88 seconds land in the same gap, so an answer can report one cut where there were two.

Google says so in the documentation: fast action sequences might lose detail due to the 1 FPS sampling rate. In static mode you can set a custom frame rate, and the token count grows with each extra frame.

For a talking-head interview this changes nothing. For an advert cut at 24 cuts a minute, a product demo, a sports clip or a screen recording where a menu opens and closes inside a second, it changes the answer.

What a Playhead answer looks like on a fast-cut advert
The video is cut at 1.24s, 2.88s, 4.02s, 5.60s and 7.14s. Five cuts across six segments, so about 24 cuts a minute. The shortest segment is 1.14s and the longest is the closing shot from 7.14s to the end.

Two of those cuts are 0.64 seconds apart. At 1 frame per second they are one frame.

Playhead answers the other end of this problem by narrowing the question. Ask about one stretch of a few seconds and those seconds are read on their own, closely enough to separate two cuts that land inside the same second.

Run the same question through both

The comparison above is arithmetic. This is the version you can check yourself.

Ask Playhead the question, and keep the sessionbash
curl -X POST https://api.tryplayhead.com/v1/watch_video \
  -H "Authorization: Bearer $PLAYHEAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.tiktok.com/@user/video/730…",
       "question": "list every cut, in seconds, and say how fast this is cut"}' \
  | jq -r '.answer, .session_id'

Send the same clip to Gemini with the same question, and count the tokens each one reports. That is the measurement, and it takes about five minutes.

When to choose Gemini instead

Choose Gemini when the video is short, when you are already building on Gemini, and when the question is about what the video is rather than about what happens at a particular second. For a 30 second clip the whole argument below is worth about 3,000 tokens at the default resolution, or 9,000 at high resolution, which is nothing, and one API call is simpler than two systems.

The verdict

For a short clip, send it to Gemini. One call, one bill, and 3,000 tokens at the default resolution is a price worth not thinking about. The moment the video gets longer than a couple of minutes, or the answer has to name a second and be right about it, the arithmetic turns: 60,000 to 180,000 tokens are spent before the reasoning starts, and 1 frame per second, the default rate, is a rate that cannot separate two cuts 0.64 seconds apart. That is the line, and it is a line about the video rather than about the model.

Common questions

Does Playhead replace Gemini?

No. Playhead is a layer in front of a vision model and it calls one on every reading. What it replaces is the part where a video enters your agent's context window frame by frame. The model that answers your question can still be Gemini.

How many tokens does a video cost in Gemini?

Google documents about 100 tokens for every second of video at the default low media resolution, and about 300 tokens a second at high media resolution. Individual frames are 66 tokens at low resolution or 258 otherwise, plus 32 tokens a second for the audio. In agentic mode the count varies, and Google documents up to 88% fewer tokens on long-form video.

How long a video can Gemini read?

Google documents up to 3 hours of video at the default low media resolution on a model with a 1 million token context window, or up to 1 hour at high media resolution.

Can Gemini read a TikTok or an Instagram video?

Not from the link. Google's API takes a public YouTube URL directly; any other platform means downloading the file yourself and sending it to the API first. Playhead fetches from TikTok, Instagram, X, Facebook, Vimeo, Twitch, Dailymotion and Reddit on its own side.

Which one gives more accurate timestamps?

Playhead burns each frame's own time into the pixels above the picture, so the model reading it cannot lose track of which second it is looking at or invent one. Google's documentation describes referring to timestamps in a prompt as MM:SS, and does not describe how a returned time is grounded.

Do you want to see more from Playhead when you search on Google? Add Playhead as a preferred source.

Where these numbers come from

  1. [1] Gemini API: video understanding read
  2. [2] Gemini API: token counting and media resolution read

Written by

The Playhead team

We build the video layer these numbers are measured on. Every figure about Playhead comes from the source file it lives in.

How we write these articles, and how to send a correction

Take apart a competitor's ad

Paste any ad from the Meta Ad Library, TikTok or Instagram and see the hook, every beat and every claim, with its second. The first analyses need no account, and a free account holds 50,000 credits a month.