#video-encoder #av1 #vmaf

app ab-av1

AV1 encoding with fast VMAF sampling

49 releases

Uses new Rust 2024

0.11.2 Mar 31, 2026
0.11.0 Feb 20, 2026
0.10.3 Dec 5, 2025
0.10.2 Nov 23, 2025
0.3.1 Mar 17, 2022

#11 in Video

Download history 5/week @ 2026-01-15 21/week @ 2026-01-22 20/week @ 2026-01-29 25/week @ 2026-02-05 9/week @ 2026-02-12 55/week @ 2026-02-19 43/week @ 2026-02-26 30/week @ 2026-03-05 38/week @ 2026-03-12 14/week @ 2026-03-19 62/week @ 2026-03-26 60/week @ 2026-04-02 57/week @ 2026-04-09 35/week @ 2026-04-16 22/week @ 2026-04-23 8/week @ 2026-04-30

141 downloads per month

MIT license

185KB
4.5K SLoC

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>

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>

JSON output

See --stdout-format json docs.

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.

Dependencies

~16–24MB
~438K SLoC