Skip to content

activetheory/activeframe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ActiveFrame 🖼️ (beta)

ActiveFrame sample ActiveFrame sample2

Demo: https://activetheory.github.io/activeframe/

ActiveFrame is a small pipeline and javascript library for turning a video into a single binary .af file and decoding it in the browser with the Web Codec API — without a <video> element and without third-party dependencies such as FFmpeg.wasm, Mediabunny, or other JS demuxers/decoders.

The file packs raw encoded samples (H.264 / H.265) plus a JSON manifest. The runtime loads the buffer, configures the decoder from the manifest, and exposes frame-accurate navigation via setFrame(index).


Why use this instead of “regular” video?

  • Frame-accurate control and random access
  • Feed the frame natively to WebGL/WebGPU and Canvas 2D
  • Hardware accelerated**
  • Optimized for interactive scrubbing, 3D, image-like control over which frame is shown

Why use this instead of “regular” spritesheet?

  • Smaller file size, leveraging H.264 / H.265 intra frame compression
  • Better memory management

Generating an .af file

node af.js <input video> <output.af> [maxWidth] [h264|h265] [gop] [crf]

Roadmap / ideas

  • Surface codec support before loading (e.g. companion manifest or a tiny probe).
  • Streaming or partial fetch (range requests), LOD, adaptive quality.
  • Runtime tuning of hardware vs software decode based on performance.
  • Benchmark suite to calibrate and fine tune performance and hw support.

Demo video is from Netflix Open Content – Meridian. Under Creative Commons Attribution 4.0 International Public License.

About

Custom .af video format for WebCodecs: frame-accurate playback without a video tag or third-party decoders.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors