Skip to content
/ xav Public

Fastest, Most Efficient, Minimal, Chunked & Target Quality Video Encoding

License

Notifications You must be signed in to change notification settings

emrakyz/xav

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

245 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Table of Contents

  1. Description
  2. Features
  3. Dependencies
  4. Build
  5. Guide

Description

  • 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

Features

  • 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. xav builds the encoder command and lets the user only deal with parameters that actually matter such as the preset
  • Zoning: Parameters can be added next to keyframe positions in the scenes file to encode different scenes with different parameters

Dependencies

Build Time:

  • Rust Nightly, NASM, Clang

Runtime:

Runtime (Optional):

  • VSHIP (for GPU based target quality encoding)

Build

Run the build.sh script: Select one of static or dynamic builds

Guide

  • Refer to user_doc.pdf (WIP)

About

Fastest, Most Efficient, Minimal, Chunked & Target Quality Video Encoding

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •