Skip to content
ecnivslabsPublic

Repository files navigation

Weft, ASCII video codec

GitHub stars GitHub issues Noncommercial license Main language

Weft is a Rust video codec built around ASCII symbols. The encoder fits source frames into colored glyph compositions, stores them in a seekable .sci archive, and the decoder reconstructs the picture from those compositions. Opus audio lives in the same archive.

Use the CLI to prepare video, the Rust library to work with frames and archives, or the WebAssembly decoder to build browser playback. Video timing, seek points and synchronized sound live in one file.

OutputDetails
Original cartoon excerptSource
1920×1080
Cartoon excerpt encoded with WeftWeft
1080p

What is here

  • ASCII encoder and decoder. Fixed printable glyphs, RGB attributes, reflections and layered spatial groups. Every rendered frame comes from that representation.
  • .sci archives. Explicit presentation times, independent seek chunks, checksums, prepared renditions and synchronized audio.
  • Rust libraries and CLI. The portable codec works without FFmpeg or a web server. Media ingestion is a separate crate.
  • Browser playback. The same Rust decoder runs in workers through WebAssembly, with Canvas or equivalent WebGL2 glyph reconstruction.

Rendered resolution targets are 360p, 480p, 720p and 1080p. Ingestion preserves source timing up to 60 FPS. The local SCI player supports seeking, quality selection, playback speed and synchronized audio.

Start here

Install Rust 1.89 or newer. Encoding also needs FFmpeg and FFprobe on PATH, with libopus support.

cargo build --release --locked
cargo run -p weft-cli --release -- encode videos/input.mp4 videos/output.sci
cargo run -p weft-cli --release -- inspect videos/output.sci
cargo run -p weft-cli --release -- decode videos/output.sci 30 frame.ppm

decode writes an RGB PPM reconstructed from a zero-based presentation frame. Existing output archives are never overwritten. Encoding options cover resolution selection, timing and fitting options.

To build the website (Node.js 22 or newer):

npm ci --prefix website
npm run build --prefix website

website/dist/ is the GitHub Pages artifact for weft.ecnivs.com. It contains the product website, image previews and hosted documentation. The local SCI player, ingestion server, tests and benchmarks live separately under player/. Original footage stays in the ignored videos/ directory. Deployment uses a manually triggered workflow. Website development covers local preview and hosting.

Documentation

Research

Weft’s longer-term goal is faithful video with lower bandwidth and playback cost. Recorded comparisons favor the tested conventional codecs in archive size, and fitting remains lossy. Sustained 2x playback across every resolution is not yet established. Research status separates implemented features from measured results and future targets.

Contributing

Fork, make a focused change, and open a pull request against master. Codec changes need format and decoder agreement tests. Performance changes need controlled measurements. Read CONTRIBUTING.md before starting.

License

Weft Noncommercial License 1.0. Noncommercial use is free. Commercial use requires a separate paid license from the applicable copyright holders, including use by solo developers.

Media and fonts have separate terms. See asset notices and the notices under shared/web/fonts.

Releases

Packages

Contributors

Languages