// the find
activetheory/activeframe
Custom .af video format for WebCodecs: frame-accurate playback without a video tag or third-party decoders.
ActiveFrame converts video files into a custom binary format (.af) that can be decoded frame-by-frame in the browser using the WebCodecs API — no video element, no JS decoder dependencies. It's aimed at creative/interactive web developers who need scrubbing, sync across multiple clips, or direct WebGL texture feeding that the native video element makes awkward.
Frame-accurate random access via setFrame() is genuinely hard to get with a standard video element, and this solves it cleanly. Piggybacking on H.264/H.265 intra-frame encoding keeps file sizes reasonable compared to JPEG spritesheets. Zero runtime dependencies is a real win for bundle size and supply-chain hygiene. The encoder is a single Node script (af.js) rather than a complex build pipeline, which keeps the on-ramp short.
WebCodecs browser support is still incomplete — Safari added it late, and there's no codec-probing before download, so users on unsupported browsers hit a silent failure. The entire .af file must be fetched before playback starts; range requests and streaming are listed as future ideas, not implemented, which makes this unusable for anything over a few MB on slow connections. The library lives in docs/ActiveFrame.js with no npm package and no versioning strategy beyond 'beta', so adopting it means vendoring a single file with no upgrade path. H.265 support depends on browser hardware decode availability, which varies wildly by platform and isn't surfaced to the caller.