Skip to content

alexheretic/ab-av1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

e84d408 · Apr 3, 2025
Jan 14, 2024
Apr 3, 2025
Dec 22, 2024
Apr 3, 2025
Apr 3, 2025
Apr 3, 2025
Jul 25, 2024
Feb 5, 2022
Dec 23, 2024
Jul 20, 2022

Repository files navigation

ab-av1

AV1 video encoding tool with fast VMAF sampling & automatic encoder crf calculation. Uses ffmpeg, svt-av1 & vmaf.

Also supports other ffmpeg compatible encoders like libx265 & libx264.

Command: auto-encode

Automatically determine the best crf to deliver the --min-vmaf and use it to encode a video or image.

Two phases:

  • crf-search to determine the best --crf value
  • ffmpeg to encode using the settings
ab-av1 auto-encode [OPTIONS] -i <INPUT> --preset <PRESET> --min-vmaf <MIN_VMAF>

Command: crf-search

Interpolated binary search using sample-encode to find the best crf value delivering --min-vmaf & --max-encoded-percent.

Outputs:

  • Best crf value
  • Mean sample VMAF score
  • Predicted full encode size
  • Predicted full encode time
ab-av1 crf-search [OPTIONS] -i <INPUT> --preset <PRESET> --min-vmaf <MIN_VMAF>

Notable options

  • --min-xpsnr <MIN_XPSNR> may be used as an alternative to VMAF.

Command: sample-encode

Encode short video samples of an input using provided crf & preset. This is much quicker than full encode/vmaf run.

Outputs:

  • Mean sample VMAF score
  • Predicted full encode size
  • Predicted full encode time
ab-av1 sample-encode [OPTIONS] -i <INPUT> --crf <CRF> --preset <PRESET>

Notable options

  • --xpsnr specifies calculation of XPSNR score instead of VMAF.

Command: encode

Invoke ffmpeg to encode a video or image.

ab-av1 encode [OPTIONS] -i <INPUT> --crf <CRF> --preset <PRESET>

Command: vmaf

Full VMAF score calculation, distorted file vs reference file. Works with videos and images.

  • Auto sets model version (4k or 1k) according to resolution.
  • Auto sets n_threads to system threads.
  • Auto upscales lower resolution videos to the model.
ab-av1 vmaf --reference <REFERENCE> --distorted <DISTORTED>

Command: xpsnr

Full XPSNR score calculation, distorted file vs reference file. Works with videos and images.

ab-av1 xpsnr --reference <REFERENCE> --distorted <DISTORTED>

Install

Arch Linux

Available in the AUR.

Linux

Pre-built statically linked x86_64-unknown-linux-musl binary included in the latest release.

Windows

Pre-built ab-av1.exe included in the latest release.

Using cargo

Latest release

cargo install ab-av1

Latest code direct from git

cargo install --git https://github.com/alexheretic/ab-av1

Requirements

ffmpeg newer than git-2022-02-24 with libsvtav1, libvmaf, libopus enabled.

ffmpeg should be in $PATH.

Debug

Enable debug logs by setting env var RUST_LOG=ab_av1=debug. This includes all ffmpeg calls.

$ RUST_LOG=ab_av1=debug ab-av1 auto-encode -i vid.mkv

Minimum supported rust compiler

Maintained with latest stable rust.

About

AV1 re-encoding using ffmpeg, svt-av1 & vmaf.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages