| Version 6 (modified by , 8 years ago) ( diff ) |
|---|
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 1and-pass 2options, 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,
-anin 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:


