If you look around what has been written about AOM AV1 during the last month, everything sounds very optimistic, and you can get the impression that it's shortly before market launch. So, Facebook is just adding AV1 support to Facebook video, Youtube will soon add it, Netflix will be an early adopter and you can find the first Dash demos at bitmovin.com (e.g. at
https://demo.bitmovin.com/public/firefox/av1/).
AOM AV1 is already supported by
- Chrome Canary
- Firefox Nightly
- VLC Player
- ffmpeg (since end of March in the Zeranoe builds)
So, I decided to take a look at it and to download the latest Zeranoe build for some encoding tests.
The tests have been performed on my laptop with an Intel i7-7700HQ (Kabylake) CPU.
I started with a simple test first. A demo video created in 2003 named Robotica_720.wmv from the former Microsoft HD show case. Not a very challenging thing. It is 8 bit, has a resolution of 1280 * 720 px, a size of 16 MB and a duration of around 20 seconds with a total of 499 frames.
I've used the following encoding string (see suggestions at
https://trac.ffmpeg.org/wiki/Encode/AV1):
ffmpeg -i Robotica_720.wmv -map 0:v:0 -map 0:a:0 -aspect 1280:720 -c:v libaom-av1 -cpu-used 4 -crf 30 -b:v 0 -ac 2 -c:a libopus -b:a 96k -strict experimental -y robotica-30.mkv
The encoding started slow and didn't become faster. Encoding time has been about 10 seconds for one frame. As the video consists of nearly 500 frames it has taken 500 * 10 = 5000 seconds (which equals around 83 minutes).
Watching in
VLC Player the video quality looked good.
For comparison I did a similar encode with the same file and HEVC. This has taken 13 seconds.
From a subjective perspective there was no difference in av1 and HEVC quality.
In the second test I did it a bit harder. Input source has now been a 10 bit ProRes trailer with a resolution of 1920 * 1080 px, a duration of 1 minute, a frame rate of 23.976 and a file size of 1.14 GB. The goal has been to produce a 10 bit encode. Encoding command:
ffmpeg -i trans_spot.mov -map 0:v:0 -map 0:a:0 -aspect 1920:1080 -pix_fmt yuv420p10le -c:v libaom-av1 -cpu-used 4 -crf 30 -b:v 0 -ac 2 -c:a libopus -b:a 96k -strict experimental -y trans_spot-30.mkv
This was of course more challenging. Encoding time has increased to 30 seonds for one frame. With atotal of 1440 frames encoding has now taken about 12 hours.
For comparison I did again a similar encode with HEVC. The time for that has been around 2 minutes.
After 12 hours of waiting I had been excited to see the AV1 video running in VLC and to have a look at it's quality. But the fortune has not been on my side: The video started stuttering a bit, ran for 14 seonds and then stopped while the audio continued to run. Obviously this has been to much for VLC.
So I decided to try Chrome Canary or Firefox Nightly for playback. But no luck again: Chrome and Firefox don't play videos in an mkv-container.
That's why I looked into the demos at bitmovin and recognized that they are using a webm container. So, i Tried to mux it into webm. But again no luck:
ffmpeg doesn't currently support av1 in webm.
People who have read until here should draw their own conclusions.