- 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. It can flexibly use more memory for even faster operation if it is abundant
- Designed for a more automated & opinionated approach for ease of use; using shorter commands on the command line and memorizing less flags/parameters
- Uses and optimizes FFMS2 & vship internally without relying on VapourSynth and/or FFmpeg or any other external calls
- Fastest and most efficient chunked video encoding
- 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 crop detection and cropping, by also accounting for multi aspect ratio videos
- Optional photon noise application
- 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
- Auto resume where you left off for additional safety if it crashes or intentionally stopped
- Native trim and splice support
- Piping support: 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
- Refer to
user_doc.pdf(work in progress)
Build Time:
- Rust Nightly, NASM, Clang
Runtime:
- One encoder binary: SVT-AV1 | AVM | VVENC | X265 | X264
- FFMS2 (used to access decoders and provides frame accuracy)
Runtime (Optional):
- VSHIP (for GPU based target quality encoding)
- MP4Box (the only reliable muxer for
VVCand it's also used as the first option for concatting x264/x265 videos before the final mux) - mkvmerge (used as a secondary option for concatting x264/x265 videos if
MP4Boxis not present)
Run the build.sh script: Select static or dynamic build
Building everything statically with the script requires you to have static libraries for: glibc, libstdc++, llvm-libunwind, compiler-rt
Other robust tools I recommend with different philosophies:
- Av1an: A CLI tool utilizing VapourSynth and FFmpeg, that I always loved and contributed to. Most people interested in
xavalready know what it is, as it's a legendary pick - HandBrake: One of the most popular GUI/CLI video encoding frameworks. Less fancy in terms of bleeding-edge features but more complete for standardized video encoding.
- StaxRip: A Windows-only GUI with several encoders, FFMpeg and VapourSynth support
- nmkoder: Windows-only GUI wrapping FFMpeg tools and av1an
- alabamaEncoder: Offers some very interesting features but harder to use. Partially experimental and it's a work in progress as the author declared but definitely requires a mention
- ab-av1: It's an interesting pick. It can be seen as less sophisticated version of
xavorav1anbut might be preferable to some. For reference, it doesn't use chunked encoding; does not do scene-by-scene target quality and it only offers less psychovisually relevant VMAF/XPSNR metrics - aviator: Very easy to use and minimal GUI for encoding video/audio with svt-av1-psy forks and Opus