Aether Renderer Core
Aether Renderer is a minimal and sacred media compiler for image sequences โ now with smart CLI, glob support, and gentle rendering feedback ๐๏ธ
Aether Renderer Core is a lightweight, Rust-based and a sacred CLI tool to render transparent .webm, .mp4, and .gif from image sequences with alpha channel support, loop softening, and ffmpeg power.
Built with love for artists, developers, and sacred animation workflows.
โจ Features
- ๐ฆ Supports ZIP archives or folders with image sequences
- ๐ฏ Supports
frame_%04d.png(numbered) or glob patterns likescene_*.png - ๐ Live progress spinner with elapsed time (enabled via
--verbose) - ๐๏ธ Render using either
--configfile or inline CLI arguments - โจ Cross-platform (macOS, Linux, Windows)
- ๐ Minimal dependencies, no runtime server required
Built like a triple-mode sacred core:
- โ
--configโ full JSON or TOML-based config - โ
--input + --outputCLI mode - โ CLI override of config (hybrid input)
Useful for overriding output resolution, fps, or preview without rewriting full config. Aiming to be super dev-friendly โ a pleasure to use.
๐ง Usage
1. Render using a config file
Supports .json or .toml formats.
2. Render using CLI args
3. Mixed mode (config + override)
CLI params override matching fields in the config.
๐งพ Supported Parameters
| Flag | Type | Default | Description |
|---|---|---|---|
--input |
Path | required | Folder or ZIP with image frames |
--output |
Path | required | Output video file path |
--fps |
Number | 30 | Frames per second |
--file-pattern |
String | *.png |
Glob or sequence pattern for frames |
--format |
String | webm |
Output format (webm, gif, ...) |
--fade-in |
Float | 0.0 |
Seconds to fade in |
--fade-out |
Float | 0.0 |
Seconds to fade out |
--bitrate |
String | (none) | e.g. 2500k |
--crf |
Number | (none) | e.g. 23 for x264 (lower = better) |
--preview |
Flag | false | Enables preview mode |
--verbose |
Flag | false | Prints detailed logs + progress bar |
๐ก Notes
- If
--file-patterncontains*,globmode is used automatically (-pattern_type glob). - Numbered patterns like
frame_%04d.pnguse native ffmpeg sequence. - You can include only a partial config file โ unset fields fallback to CLI or defaults.
- Designed to integrate easily with GUI and queue systems.
๐งช Advanced
- You can use
"frame_%04d.png"for ffmpeg-native sequences. "*.png"or"scene*.png"will auto-activate-pattern_type glob.- CLI
--bitrateand--crfare mutually exclusive (if both set,crftakes priority). - CLI mode will fallback to defaults where parameters are missing.
- The
--fade-inand--fade-outflags apply ffmpeg'sfadefilter under the hood. The start of the fade out is automatically calculated from the frame count and FPS.
Example Configuration File (JSON)
Save this as example_config.json and run:
๐งช Usage
๐ Your input folder should contain files like:
frame_0000.png
frame_0001.png
frame_0002.png
...
You can now also pass a .zip file containing frames:
๐ Your input folder or ZIP file must contain images named like:
frame_0000.png
frame_0001.png
frame_0002.png
...
Alpha-enabled PNGs are recommended for transparent .webm.
Convert to gif file with transparent background:
(Just make sure ffmpeg is installed)
๐ฆ Download prebuilt binaries
prebuilds for linux, mac & windows can be found under releases in github repository.
๐ ๏ธ Download prebuilt binaries from the Releases page.
๐งฐ Requirements
- Rust & Cargo installed: https://rustup.rs
ffmpegmust be installed and accessible in your system path
๐งช Tests
This project contains both unit tests and integration tests. The unit tests live
next to the code they verify (for example in
src/utils/unzip_frames.rs) while the integration tests reside in
tests/integration.rs.
Run all tests using Cargo:
The integration suite relies on ffmpeg being available on your system. If
ffmpeg is missing, the rendering test is skipped but all other tests still
run.
๐ฆ Example ZIP
You can test the renderer using the provided frame sequence:
Run it like this:
This will generate a loopable .webm video with alpha.
โจ Example Output
See full demo here (just started): Webpage demo
Hereโs one frame from the sacred animation:

โจ Example Animation

โถ๏ธ Watch output video
๐ฎ Roadmap
- Render
.pngโ.webm(with alpha) - Support
.mp4export - Add bitrate / CRF quality control
-
--fade-in,--fade-outfor soft loops - Handle errors & missing frames gracefully
- Add optional CLI preview
- Begin GUI version with Tauri (
aether-renderer) ๐
๐งน Code Style
This project uses Rustโs official formatting standard via cargo fmt.
Before committing or opening a pull request, please run:
๐ฟ License
MIT โ created with sacred care by @madspaaskesen
๐ Related Projects
- ๐๏ธ Sacred-AI
- ๐ MySiteChart
- ๐ ๏ธ MP-IT
- ๐งต DDD Favoritter
๐ Made with love by Sacred-AI
๐ Made with clarity and care by @mads @ @sacred-ai ๐
๐ธ Powered by Rust Lang, Rust getting started
Aether Renderer Core is the sacred heart of a lightweight animation rendering toolkit. Converts frame sequences to video with love, transparency, and full creative control.