---
obj: application
repo: https://github.com/alexheretic/ab-av1
---

# ab-av1
AV1 video encoding tool with fast VMAF sampling & automatic encoder crf calculation. Uses [`ffmpeg`](./ffmpeg.md), `svt-av1` & `vmaf`.

## Usage
### 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

```sh
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

```sh
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

```sh
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.

```sh
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.

```sh
ab-av1 vmaf --reference <REFERENCE> --distorted <DISTORTED>
```

### Command: `xpsnr`
Full XPSNR score calculation, distorted file vs reference file. Works with videos and images.

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