Playhead vs your own yt-dlp and ffmpeg script

You can absolutely do this yourself: yt-dlp fetches the video, ffmpeg extracts frames at whatever rate you pick, and a Whisper call gets you a transcript. That part is an afternoon. What takes the other months is everything after it — keeping the frames anchored to a time the model cannot lose, knowing what you did and did not cover, telling a dissolve from a cut, and keeping nine platforms working when they change their minds about who may download what.

Last updated

What a script of your own is better at

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

  • Free, entirely under your control, and no vendor to depend on.
  • You can tune it to exactly one use case, which a general tool never fits perfectly.
  • No data leaves your infrastructure.
  • For a single fixed pipeline over your own files, this is often the right call.

What it is, and where it runs

What it is, and where it runs — Playhead compared to a script of your own
CapabilityPlayheada script of your own
Nothing to install or maintainYesOne URL. The toolchain is ours to keep working.Noyt-dlp needs updating roughly weekly, and each platform breaks in its own way.
Platform access when a site starts refusing datacenter trafficYesTLS fingerprinting per platform, proof-of-origin tokens for YouTube, and a retry path when one route is blocked.NoThis is the part that turns a weekend project into an ongoing job.

What it can look at

What it can look at — Playhead compared to a script of your own
CapabilityPlayheada script of your own
Timestamp burned into the pixels of every frameYesEvery tile carries its time in a strip above the picture. A model cannot lose track of which frame it is looking at, and cannot invent a time for one.PartlyPossible, and it is exactly this list that is the work.
States what it covered and where the gaps areYesEvery response carries a coverage object: covered seconds, whether that was the whole video, every second it was not, and where to resume.PartlyPossible, and it is exactly this list that is the work.
30 fps inspection, frames 33 ms apartYesThe motion level puts two consecutive frames on a sheet at full size — the level at which easing curves and dropped frames become visible.PartlyPossible, and it is exactly this list that is the work.
SMPTE timecode from camera and edit-suite mastersYesWhen a file carries timecode, every tile is stamped with it in blue beside the elapsed time in yellow — the clock an editor's notes and the NLE are already in.PartlyPossible, and it is exactly this list that is the work.
Broadcast and production containersYesMXF (XAVC, XDCAM, AVC-Intra, DNxHD), ProRes MOV, GXF, LXF, TS and DV. Camera raw is refused by name with the export to make instead, rather than failing obscurely.PartlyPossible, and it is exactly this list that is the work.
Photo carousels (TikTok photo mode, Instagram)Yesyt-dlp refuses these outright, so we ship our own extractor. Slides become one frame per second — second 0 is slide 1 — and the response says so rather than implying a duration.PartlyPossible, and it is exactly this list that is the work.
Meta Ad Library linksYesA facebook.com/ads/library link is a video like any other, which is what makes competitor-ad teardowns a normal call rather than a workaround.PartlyPossible, and it is exactly this list that is the work.

What it measures

What it measures — Playhead compared to a script of your own
CapabilityPlayheada script of your own
Cut times returned as numbersYesscene_cuts is a list of seconds, with pacing alongside it — segment count, median and shortest segment, cuts per minute.PartlyPossible, and it is exactly this list that is the work.
Transitions classified, not counted as cutsYesDissolves, fades, dips, wipes and whip-blurs are detected on a longer baseline and named. Without that, a film with six dissolves reads as six extra cuts and its pacing comes back too fast.PartlyPossible, and it is exactly this list that is the work.
Freezes, black frames and silence detectedYesOne decode produces freezes, black frames, silence gaps and loudness together — the checks a render QA pass is made of.PartlyPossible, and it is exactly this list that is the work.
Sees what happened between the sampled framesYesA separate pass reads every frame at 32x32 grayscale, so a one-frame flash, a three-frame cut and a half-percent-per-second push-in are found even though no sheet shows them.PartlyPossible, and it is exactly this list that is the work.
Says whether the audio was speech at allYesMusic scored over a video transcribes into fluent sentences nobody said. The response reports that assessment instead of handing back lyrics as dialogue.PartlyPossible, and it is exactly this list that is the work.

Building on it

Building on it — Playhead compared to a script of your own
CapabilityPlayheada script of your own
Tunable to exactly one pipelinePartlySix levels plus raw fps, grid and sheet-width overrides. Wide, but it is somebody else's set of choices.YesYou control every parameter, and a general tool never fits one fixed use case as precisely as code written for it.
Token arithmetic done for youYesEvery response reports its estimated vision tokens before you send it to a model, and sheets are sized to the 1568 px ceiling rather than past it.NoThe most common and most expensive mistake here: extracting frames larger than any model will actually look at.

Running it

Running it — Playhead compared to a script of your own
CapabilityPlayheada script of your own
Free, with no per-video costPartly60 credits a month free, then paid. Repeat questions about a window already paid for cost 20%.YesYour own hardware and your own Whisper key. At high volume on footage you already hold, this is simply cheaper.
Video never leaves your infrastructureNoThe hosted service downloads and processes on our machines. An on-premise deployment exists for enterprise; the hosted product does not run locally.YesNothing leaves. For footage under NDA, or anything a data-processing agreement covers, this decides it on its own.
No vendor to depend onNoIf we are down, you are down. That is the trade for not maintaining a toolchain.YesIt breaks when you break it, and you can fix it the same afternoon.

The verdict

Which is to say: what actually decides it, rather than which row count is higher.

The part people underestimate is not extraction, it is the arithmetic of tokens and the honesty of coverage. A model downscales any image past 1568 px, so a 4K frame costs more and reads no better; looking closer has to mean fewer frames per sheet, not bigger ones, and getting that backwards makes a bill that scales with resolution for no benefit. And a script that quietly samples 100 frames from a 40-minute video produces confident answers about the 39 minutes it never saw. Playhead is the version of that script that states its gaps.

If none of that applies — if you want it on a phone, in a backend job, or shared with a team — the quickstart is two minutes and the free tier needs no card.