Encoder Comparison NVENC x264 Quicksync QSV VP9 and AV1

VMAF

History

Netflix has a financial interest in knowing how much quality they can deliver given certain constraints. Users may have equipment that can efficiently play some codecs but not others. They may also have limited bandwidth. Netflix needs to know how they can deliver the best viewing experience based on the limitations of each individual customer. As a result, Netflix stores multiple versions of each video, so they can send the best version that a customer can play.

Different videos encode differently, and sometimes codecs at one bitrate do well but at another bitrate perform poorly. In order to know which version of the video to send to the customer, Netflix developed VMAF.

How it works

At its core, VMAF provides a machine learning framework to tune a filter that assesses quality compared to an original. Basically, it detects differences, and predicts how people will rate the difference. You can access the source code for VMAF and train it specifically on videos of your choosing. I’ve used the release included in FFMPEG v4, although you still have to build it yourself with the flag enabled.

It’s not unusual for VMAF to give a score of 99 on an exact copy of a video. Technically, it should score 100. But due to the machine learning nature of the system, it is predicting people’s opinions. When showing a selection of people two identical videos, some of them will think they are NOT identical. Therefore, VMAF is correctly predicting that some people will rate the videos as different, even though those people are incorrect.

Examples

Below are some sample frames from the encoding results. I selected a frame that was not stationary because all codecs look better when there is no movement. There were a few frames that were more distorted, but they were rare and easy to miss. Using the most distorted frame would give an exaggerated impression. Therefore I chose something in the middle. You may notice that 2 of them don’t have the firing animation mid-air. This is a consequence of different encoding methods. In the actual videos, they all appear to be firing, it’s just split over different frames.

frame 1.317 from Overwatch - VMAF 98.858723 - Original
Original image losslessly copied from gameplay
Frame from Overwatch 1.317 - VMAF 94.292711 - VP9
With a VMAF of 94.292711 the quality loss is not immediately obvious
Frame from Overwatch 1.317 - VMAF 89.874846 - NVENC Turing
Blurring starts to appear on the terrain at VMAF 89.874846
Frame from Overwatch 1.317 - VMAF 80.829925 - x264
At VMAF 80.829925 blockiness gets worse and colour gradients are no longer smooth
Frame from Overwatch 1.317 - VMAF 71.10318 - NVENC Turing
Far more blockiness at VMAF 71.10318
Frame from Overwatch 1.317 - VMAF 60.034743 - x264
VMAF 60.034743 is the lowest quality this article includes

What to expect

I’m specifically referring to 2560×1440 60 fps Overwatch footage here. However, most of this applies in general, to some degree, even at 1080p real life footage.

  • 95+ – Generally speaking, on a 1440p 60 fps video, a VMAF score of 94 or higher looks perfect. It is very hard for a viewer to know that the video they are seeing isn’t the original. In my personal opinion a VMAF of 95 looks as good as if I were actually playing Overwatch.
  • 90-95 – This also looks fantastic. If a viewer can see the original and a 92 VMAF version side-by-side they may see a difference. But if a viewer only sees a 92 VMAF version, they may likely still think that the video is perfect.
  • 85-90 – The videos start to look flawed. Pixelation and colour blocking are evident especially if the viewer is looking for them. You can usually tell the difference between a +/- 1 difference here. So an 85 looks clearly worse than an 86.
  • 80-85 – More the kind of quality you typically expect from an average streamer. High-quality streamers may look better but there’s blockiness appearing everywhere.
  • 70-80 – Text gets really hard to read.
  • 60-70 – Starting to look really blocky, and difficult to see. Below 60 is terrible and therefore excluded from this article.

UNREAL AUSSIES ARE ALL OVER THE WEB

HELP SUPPORT
UNREAL AUSSIES

Unreal Aussies run many events over the year to help connect and build the Australian gaming community. If you are interested in helping out in any current or future planned events or wishing to offer some more ideas for us to explore - let us know!

About Us

Unreal Aussies is for passionate gamers from all walks of life. Games come and go, but the people still remain. From meetups to tournaments, hardcore teams to charity streams, Unreal Aussies core mission is to make gaming more fun as part of a community than it can ever be alone.