This is just a random page containing my results from playing around with AV1 settings in FFmpeg.
I am using a short 10 second clip from the Blender open movie: Spring
The initial settings I'm using are:
-c:v libaom-av1 -cpu-used 2 -crf 55 -row-mt 1
I'm then testing tiles, more tiles tend to mean quicker encoding speeds(especially when combined with -row-mt 1), while slightly reducing the compression efficiency.
I've found the maximum amount of tiles you can have is 5x3.
Here are the basic results from FFmpeg:
Please note these are not completely accurate, 10 seconds isn't nearly long enough, I'm using FFmpegs own reporting system which is just a guide and I was using my computer while it was encoding these files, so take these results with a huge shovel of salt!
Ordered by File Size, smallest to largest. 1080p encode.
Tiles | Encoding FPS | File Size (bytes) |
---|---|---|
1x1 | 4.2 | 47,720 |
1x2 | 4.6 | 50,131 |
2x1 | 5.2 | 50,388 |
3x1 | 5.6 | 50,931 |
1x3 | 5.3 | 51,747 |
2x2 | 6 | 51,890 |
4x1 | 6.2 | 52,542 |
2x3 | 7.3 | 53,652 |
3x2 | 6.2 | 53,790 |
4x2 | 7.3 | 55,690 |
3x3 | 7.7 | 56,367 |
4x3 | 7.9 | 58,835 |
So with these simple results, you can already see, more tiles means more speed but a larger file size.
As will all things video related, it comes down to either smaller files or quicker speeds, your choice.
Personally the 3x1 tiles look like a nice compromise, much faster than 1x1 but not a huge increase in size.
Some more tests
These are done with a 320p version of the same file, however they are run on a different machine, so don't compare these speeds to the 1080p ones above as they're done with different CPUs.
These tests also include FFmpegs speed info.
The command used for the following are:
-c:v libaom-av1 -cpu-used 2 -crf 45 -row-mt 1
Again, ordered by file size.
Tiles | Encoding FPS | Encoding Speed | File Size (bytes) |
---|---|---|---|
1x1 | 4.4 | 0.181x | 83,258 |
1x2 | 4.6 | 0.183x | 85,114 |
2x1 | 5.7 | 0.235x | 85,365 |
3x1 | 6.5 | 0.269x | 86,083 |
2x2 | 5.9 | 0.245x | 87,515 |
1x3 | 5.6 | 0.231x | 87,822 |
4x1 | 6.7 | 0.278x | 87,975 |
5x1 | 7.8 | 0.325x | 88,900 |
3x2 | 6.6 | 0.275x | 89,154 |
2x3 | 8.0 | 0.332x | 90,442 |
4x2 | 7.4 | 0.306x | 90,578 |
3x3 | 8.3 | 0.344x | 93,341 |
5x2 | 8.2 | 0.342x | 93,802 |
4x3 | 7.9 | 0.33x | 94,963 |
5x3 | 9.5 | 0.393x | 98,042 |
I also put all the resulting videos through VMAF - Video Multi-Method Assessment Fusion, just for fun, however the results where so close to each other that I am deciding not to post them.
Just so you're not left without any info, the highest value was 76.399934
(from tiles 1x3) and the lowest was 75.786541
(from tiles 4x2), a difference of 0.613393
, which to my very untrained eye, I'm never going to be able to tell any difference what so ever...
The number of tiles didn't really corellate to an increase or decrease in perceived quality, it was pretty much random and all within the above numbers.
I've also tested with -row-mt 0
, this will make everything slower!
Note: you can't encode with 0 tiles.
Tiles | Encoding FPS | Encoding Speed | File Size (bytes) |
---|---|---|---|
1x1 | 3.1 | 0.128x | 83,484 |
2x1 | 4.8 | 0.201x | 85,183 |
1x2 | 3.3 | 0.136x | 85,554 |
3x1 | 6.2 | 0.257x | 86,707 |
1x3 | 5.2 | 0.216x | 87,558 |
2x2 | 5.1 | 0.212x | 87,756 |
4x1 | 6.4 | 0.266x | 87,914 |
5x1 | 7.1 | 0.294x | 88,996 |
3x2 | 6.2 | 0.256x | 89,473 |
2x3 | 7.5 | 0.312x | 90,708 |
4x2 | 6.5 | 0.27x | 90,849 |
5x2 | 7.4 | 0.307x | 93,362 |
3x3 | 6.8 | 0.28x | 93,411 |
4x3 | 6.5 | 0.269x | 95,015 |
5x3 | 8.5 | 0.352x | 97,783 |
The highest VMAF score was 1x1 at 76.629003
and the lowest was 4x2 at 75.937733
.
So in conclusion, always use -row-mt 1
, it speeds up encoding without reducing quality or increasing the file size too much to be a problem.
Never use 4x2
tiles, it seems to consistently (As in I've done only 2 lots of encoding tests so not accurate at all...) produce the lowest visual quality score while not being very fast or even producing the smallest file size.
For -tiles
I'd recommend going for something that speeds up encoding, personally, 3x1
looks nice, almost as good compression as 1x1
yet it's almost twice the encoding speed!
Obviously this was all done using a single test sample of only 10 seconds, so it's very limited in its usefulness.
Due to AV1's slow encoding speeds and my old hardware, testing different types and longer samples becomes a very time consuming job.
So I hope this page may help someone out there, not too sure if it's even helped me but I'm sure it'll be useful somewhere in the future.
I may continue testing other command options...