Contents
- 1Introduction
- 1.1Disclaimer
- 2Updates
- 2.1.1OBS V23 - 19th February 2019
- 3Contents
- 4VMAF
- 4.1History
- 4.2How it works
- 4.3Examples
- 4.4What to expect
- 5x264
- 5.1History
- 5.2Results
- 5.3Conclusions for x264
- 6x265
- 6.1History
- 6.2Results
- 6.3Conclusions for x265
- 7QuickSync
- 7.1History
- 7.2Results
- 7.3Conclusions for QuickSync
- 8NVENC part 1
- 8.1History
- 8.2Results
- 8.3Special note for NVENC Part 1
- 8.4Conclusions for NVENC Part 1
- 8.4.1Kepler
- 8.4.2Decisions decisions...
- 8.4.3Final thoughts on Maxwell and Pascal H.264 AVC
- 9NVENC Part 2
- 9.1History
- 9.2Results
- 9.3Conclusions for NVENC Part 2
- 9.3.1H.264 AVC and live streaming
- 9.3.2H.265 HEVC and offline encoding
- 10VP9
- 10.1History
- 10.2Results
- 10.3Conclusions for VP9
- 11AV1
- 11.1History
- 11.2Results
- 11.2.1Additional
- 11.3Conclusions for AV1
- 12Final thoughts
VP9
History
Back in 2012, Google released VP9 as royalty free. They believed that the patenting nature of the MPEG codecs was destined to burden video technology in the future. They were right, the issues with H.265 licensing caused considerable stagnation in the industry. VP9 is less well-known, but has gained some traction recently. The most popular YouTube videos have a VP9 copy to save bandwidth if the user can play them. You probably watch them all the time without even knowing. Now even Amazon/Twitch uses VP9 on their most popular streams since the bandwidth savings outweigh the cost of VP9 transcoding. Using VP9 is a great way to get better quality at the same bitrate as H.264 without any licensing issues. The current version of FFMPEG includes libvpx-vp9, the freely available software encoder for VP9.
For users that don’t have access to FPGA’s for live-encoding VP9, it is not a viable option for streaming. This may change in the medium-term since the encoder speed has been improving and may continue to do so. Also, CPUs are always getting better. QuickSync can assist somewhat with VP9 encoding through VAAPI. The process is extraordinarily complicated so it is not included in this article. I’ll do some live-streaming tests later this year to check on the progress. For now, considering 1440p 60 fps, this article will only consider VP9 using libvpx-vp9 for non-live purposes.
Results
Only one thing to note about VP9’s results:
- At any tested bitrate, VP9 beat all tested H.265 and H.264 encoders, both hardware and software. The only codec that beats this setting of VP9 is AV1.
Conclusions for VP9
This is NOT a live-stream setting, this is offline only testing. x265 Slow encodes the test video on my stock i7-8086k using 100% at around 8 fps. x265 Slower encoded at 3 fps and the quality is often no better. This VP9 test encoded at only 1 fps and I’m using tile columns for muti-threading. There are FPGAs and ASICs for VP9 hardware encoding, but they are very specialised and I don’t know what their parameter configurations are. I used a straightforward FFMPEG command in 2-pass. I’m fairly sure that the first pass can be speed 4 with no difference, but I went with 3 anyway.
ffmpeg -y -i original.mkv -c:v libvpx-vp9 -pass 1 -b:v 8000K -deadline best -speed 3 -g 9999 -an -f matroska NUL && ^
ffmpeg -y -i original.mkv -c:v libvpx-vp9 -pass 2 -b:v 8000K -deadline best -speed 1 -g 9999 -an -f matroska VP9_8_b3-1.mkv
VP9 is compatible with most browsers which makes it particularly good for high-volume VOD services. YouTube makes use of it on all popular videos and Netflix is implementing a similar principle. Saving as much data as possible while retaining as much quality as possible is paramount. Which is why I’ve tested 2-pass speed 3-1. The results are simply EXCELLENT. It works well on 1440p and as resolutions increase it will last longer than older codecs. As CPU power increases and hardware acceleration develops it will only become more popular. Anybody who is considering massive amounts of archiving or a VOD business would be foolish to ignore VP9.
Agamemnus has a passion for gaming and an eye for tech. You can see him streaming occasionally on twitch.tv/unrealaussies and catch him on the Unreal Aussies Discord. Evidence > Opinion.