avxs is a Docker-first AV1 encoding service written in Rust. Drop videos and an encode.toml profile into a folder - avxs picks them up, splits each file into scenes, encodes the chunks in parallel with SVT-AV1, and merges everything into a finished MKV.
- Scene-based encoding - splits files into scenes via av-scenechange, encodes all chunks in parallel, and resumes from the last completed chunk if interrupted
- HDR passthrough - auto-detects HDR10 and HLG, passes color metadata to the encoder automatically
- Auto-crop - detects and removes black bars
- Auto-scale - downscales to a target height
- Auto-keyint - derives
--keyintfrom source FPS for a ~5 s keyframe interval - Audio control - copy or re-encode per codec, language whitelist, per-codec rules
- Subtitle control - copy or strip, language whitelist
services:
avxs:
image: ivenos/avxs:latest
volumes:
- ./input:/input
- ./output:/output
environment:
- AVXS_POLL_INTERVAL=60
restart: unless-stoppedPlace an encode.toml next to your video files and configure your encoding profile. See docs.md for the full reference.
Encoded files land flat in /output/. Source files are moved to /input/processed/ after a successful encode.
| Variable | Default | Description |
|---|---|---|
AVXS_INPUT_DIR |
/input |
Input directory |
AVXS_OUTPUT_DIR |
/output |
Output directory |
AVXS_POLL_INTERVAL |
60 |
Directory scan interval in seconds |
Set RUST_LOG=debug for verbose logging.
encoder value |
Binary | Version |
|---|---|---|
svt-av1 |
SvtAv1EncApp |
v4.1.0 |
svt-av1-hdr |
SvtAv1EncApp-hdr |
v4.1.0 |
BSL 1.1 - free for personal and non-commercial use.