wiki:

Encode

/

AV1


Version 6 (modified by llogan, 2 weeks ago) (diff)

fixed toc, used human readable -strict value, removed anchors as they are automatically created, re-order rate control methods from most to least useful.

libaom AV1 Encoding Guide

libaom-av1 is the AOMedia video encoder for AV1, an open source & royalty-free video codec. libaom-av1 can save about 30% bitrate compared to VP9 and H.265 / HEVC, and about 50% over H.264, while retaining the same visual quality.

To install FFmpeg with support for libaom-av1, look at the Compilation Guides and compile FFmpeg with the --enable-libaom option.

libaom offers the following rate-control modes which determine the quality and file size obtained:

  • Constant quality
  • 2-pass average bitrate
  • 1-pass average bitrate

For a list of options, run ffmpeg -h encoder=libaom-av1.

Note: AV1 encoding is very slow in comparison to VP9 or H.264, and considered experimental at this stage. Hence the use of -strict experimental (or the alias -strict -2) is necessary.

Constant Quality

In addition to the default VBR mode, there's a constant quality (CQ) mode (like CRF in x264 and x265) which will ensure that every frame gets the number of bits it deserves to achieve a certain (perceptual) quality level, rather than encoding each frame to meet a bit rate target. This results in better overall quality. If there isn't a fixed target file size, this should be your method of choice.

ffmpeg -i input.mp4 -c:v libaom-av1 -crf 30 -strict experimental av1_test.mkv

The CRF value can be from 0–63. Lower values mean better quality and greater file size.

Two-Pass

In order to create more efficient encodes when a particular target bitrate should be reached you should choose two-pass encoding. For two-pass, you need to run ffmpeg twice, with almost the same settings, except for:

  • In pass 1 and 2, use the -pass 1 and -pass 2 options, respectively.
  • In pass 1, output to a null file descriptor, not an actual file. (This will generate a logfile that ffmpeg needs for the second pass.)
  • In pass 1, you need to specify an output format (with -f) that matches the output format you will use in pass 2.
  • In pass 1, specify the audio codec used in pass 2; in many cases, -an in pass 1 will not work.
ffmpeg -i input.mp4 -c:v libaom-av1 -strict -2 -b:v 2M -pass 1 -f matroska /dev/null && \
ffmpeg -i input.mp4 -c:v libaom-av1 -strict -2 -b:v 2M -pass 2 output.mkv

Note: Windows users should use NUL instead of /dev/null and ^ instead of \.

Average Bitrate (ABR)

libaom-av1 offers a simple "Average Bitrate" or "Target Bitrate" mode. In this mode, it will simply try to reach the specified bit rate on average, e.g. 2 MBit/s.

ffmpeg -i input.mp4 -c:v libaom-av1 -b:v 2M -strict experimental output.mkv

Use this option only if file size and encoding time are more important factors than quality alone. Otherwise, use one of the other rate control methods described above.

Controlling Speed / Quality

-cpu-used sets how efficient the compression will be. Default is 1. Lower values mean slower encoding with better quality, and vice-versa.

More Info

More info about AV1 can be found here: