- XAV is a command-line tool full of micro-optimizations and automations for scene change detection, cropping, decoding, encoding, metric testing, and memory flows and the complete pipeline required for efficient chunked video encoding, with the option of quality metric testing/targeting
- Aims for the lowest RAM and VRAM usage with the fastest possible operation.
- Designed for a more automated & opinionated approach for ease of use; using shorter commands on the command line and memorizing less flags/parameters
- Implements and optimizes its own internals without relying on VapourSynth and/or FFmpeg or any other external calls
- Fastest and most efficient chunked video encoding (now optionally with even faster library interface)
- Fastest and most efficient target quality encoding with state-of-the-art metrics such as CVVDP and Butteraugli 5p-norm & SSIMULACRA2 from JPEG XL (Google/Cloudinary)
- Very fast, state-of-the-art scene change detection with pre-configured sane defaults. Optionally, other SCD methods such as TransNetv2 can be used externally
- Automated color & HDR metadata and frame/container metadata parsing
- Fully automated, very fast and safe cropping, by also accounting for multi AR videos
- Optional FGS tables (photon noise)
- Convenient optional Opus audio encoding: With optional automated bitrate calculation, stereo downmixing and loudness normalization based on AC-4 standards: ETSI TS 103 190-1, Section 6.2.17
- Detailed progress monitoring for encoders and quality metric testing
- Detailed video output summary, TQ output summary and TQ related JSON log file
- Always resumes where you left off for safety
- Native trim and splice support
- Piping: You can pipe any command that produces frames:
command - | xav ...NOTE: This is of course slower than the native, highly optimized pipeline but it can be preferable in some workflows - Complex flags/parameters are abstracted for convenience. The user can still override them.
xavbuilds the encoder command and lets the user only deal with parameters that actually matter such as thepreset - Zoning: Parameters can be added next to keyframe positions in the scenes file to encode different scenes with different parameters
Build Time:
- Rust Nightly, NASM, Clang
Runtime:
- One encoder binary (or SVT-AV1 library): SVT-AV1 | AVM | VVENC | X265 | X264
- FFMS2 (used to access decoders and provides frame accuracy)
Runtime (Optional):
- VSHIP (for GPU based target quality encoding)
Run the build.sh script: Select one of static or dynamic builds
- Refer to
user_doc.pdf(WIP)