Sources and formats

Nine platforms are recognised by name, any other page is attempted generically, and your own files upload directly. That last part covers more than web video: camera masters and edit-suite formats work too, and when one carries SMPTE timecode it is stamped onto every frame beside the elapsed time.

Last updated

Platforms

Recognised by name means there is a route to it that is maintained — several of these actively refuse datacenter traffic, and getting a video out of them is a per-platform problem rather than a download.

Supported video platforms
SourceWhat is specific about itURLs
YouTubeVideos, Shorts and unlisted links. Public captions are used when the uploader wrote them, which is both free and more accurate than transcribing.youtube.com/watch, youtu.be, youtube.com/shorts
TikTokVideos and photo carousels. Carousels need an extractor of our own — yt-dlp refuses them — and slides come back as one frame per second, second 0 being slide 1.tiktok.com/@user/video, vm.tiktok.com
InstagramPublic Reels and posts, including photo carousels. Anything behind a private account has to be uploaded instead.instagram.com/reel, instagram.com/p
X (Twitter)Videos in public posts.x.com/user/status, twitter.com/user/status
Facebook and Meta Ad LibraryAn ads-library link is a video like any other, which is what makes a competitor's creative something you analyse rather than describe. Watch, Reels and public posts work the same way.facebook.com/ads/library/?id=…, fb.watch
VimeoFetched through the player endpoint, so no account is involved.vimeo.com/…, player.vimeo.com
TwitchClips and VODs.twitch.tv/…/clip, clips.twitch.tv
RedditHosted video in posts.reddit.com/r/…, redd.it
DailymotionPublic videos.dailymotion.com/video
Any other pageAttempted generically: a landing-page hero video, a webinar recording, a direct .mp4 or .m3u8 URL. This reaches a great many sites and is not a guarantee — a page that hides its video behind a login or a bespoke player can still refuse.example.com/launch, cdn.example.com/reel.mp4
Your own filesUploaded once and reused for every later call. The only route for anything private, geo-blocked, or that never was on a platform.an export, a screen recording, a camera master

File formats

What ffprobe can read once the bytes are here — a longer list than the platform one, and a less interesting one, except at the two ends.

Web and delivery

What comes off a platform or out of an export preset.

mp4 · mov · mkv · webm · avi · m4v

Camera and edit suite

Production formats, not just web video. When one of these carries SMPTE timecode, every tile is stamped with it in blue beside the elapsed time in yellow — two clocks, both true.

mxf (XAVC · XDCAM · AVC-Intra · DNxHD) · mov (ProRes) · gxf · lxf · ts · dv

Refused, by name

Camera raw needs the manufacturer's own decoder, which cannot be shipped in a container. These are turned away with the export to make instead, rather than failing with something obscure about a stream.

.r3d · .braw · .ari · .crm

How the source is handled

Four things happen to every video before anything measures it, and each one changes what an answer means.

Letterboxing is detected, not analysed
A 16:9 video pasted into a 9:16 frame is two thirds black bars. The picture inside is found and the tiles show that region, so you are not paying for, or reasoning about, the padding.
Interlaced sources are woven first
Broadcast masters are routinely fielded. Fields are combined before anything measures a frame, because comb artefacts read as motion to every detector downstream.
Only the window asked for is fetched
Ask about 0.7 seconds at 30 fps and 0.7 seconds are downloaded, not the whole video. Measured on one HD window: 19 seconds and 12 MB instead of minutes and 100+ MB.
A login wall is not a block
The two failures need different fixes — one means upload the file, the other means try again from somewhere else — so they are reported as different things rather than as a generic failure.

Uploading is covered under the REST API, and the way an agent sends a local file up without a key of its own is on the connect page.

Questions

Can Playhead analyse a TikTok video?
Yes, including photo carousels — TikTok's photo mode, which yt-dlp refuses outright, so we ship our own extractor for it. Carousel slides come back as one frame per second, second 0 being slide 1, and the response says so rather than implying a duration.
Can it analyse an ad from the Meta Ad Library?
Yes. A facebook.com/ads/library link is a video like any other here, which is what makes a competitor's creative something you watch frame by frame rather than describe from its caption.
Does it work with any website?
Any page is attempted with a generic extractor, which reaches a great many sites — a landing-page hero video, a webinar recording, a direct .mp4 or .m3u8 URL. It is not a guarantee: a page that hides its video behind a login or a bespoke player can still refuse, in which case upload the file.
Can it read broadcast formats like MXF and ProRes?
Yes. MXF covering XAVC, XDCAM, AVC-Intra and DNxHD, ProRes in MOV, plus GXF, LXF, TS and DV. Camera raw — .r3d, .braw, .ari, .crm — needs the manufacturer's own decoder and is refused by name, with the export to make instead.
What about private or login-walled videos?
They cannot be reached by link, and no amount of retrying changes that. Upload the file instead — that is the route that exists for private, geo-blocked and never-published footage.