37 releases

new 0.8.0 Nov 16, 2024
0.7.18 Oct 4, 2024
0.7.17 Jul 28, 2024
0.7.14 Feb 10, 2024
0.3.1 Mar 17, 2022

#2 in Video

Download history 262/week @ 2024-07-29 23/week @ 2024-08-05 12/week @ 2024-08-12 22/week @ 2024-08-19 8/week @ 2024-08-26 7/week @ 2024-09-02 6/week @ 2024-09-09 13/week @ 2024-09-16 98/week @ 2024-09-23 169/week @ 2024-09-30 31/week @ 2024-10-07 24/week @ 2024-10-14 23/week @ 2024-10-21 131/week @ 2024-10-28 69/week @ 2024-11-04 132/week @ 2024-11-11

358 downloads per month

MIT license

145KB
3.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>

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>

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>

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.
  • Converts distorted & reference to appropriate format yuv streams before passing to vmaf.
ab-av1 vmaf --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.

Dependencies

~13–25MB
~385K SLoC