H.265 & VP9
You know it if you’re familiar with video compression technologies: in the current generation, you have two big choices for your video streams. The first one is H.264. It’s not patent-free, it’s not royalty-free, but it’s got the best compression out there, most notably thanks to x264, which is the best open-source encoder for the spec that exists. x264 has notably implemented several schemes for better encoder decisions (such as macroblock trees), and optimized them at an assembler level, making it both efficient and extremely fast.
VP8 is royalty-free and (sort of) patent-free, which is cool, but by comparison, suffers from two problems: the encoder is much slower, and the compression is around 30 to 50% worse than x264 at the same bitrate (basing on SSIM results).
The next generation is upon us, and I was expecting the same trend to continue. It turns out that the situation is a lot closer this time around.
I re-encoded some of my videos using the latest available encoder builds for VP9 and H.265, at 512kbps average bitrate, and using the “medium” speed/quality tradeoff. The quality is somewhat similar for both, save for one big thing: H.265 suffers from really awful chroma blocking.
This is VP9, and here’s H.265.
Yikes. You can sort of understand what they’re trying to do: the human eye is far more receptive to luma changes compared to chroma changes… but the encoder takes that advice and runs away with it.
All things considered, this is however pretty good for high definition at 512kbps! This is how x264 performs under the same conditions…
You can download the H.265 file here, and the VP9 file here.
There is however one thing that needs to be said: the VP9 encoder is horrifying slow. One of the major reasons for this: it’s not even multi-threaded. This video took nearly 3 hours to encode with VP9, whereas the H.265 encode took mere minutes.
Here’s a bonus comparison between VP8 and VP9, with a high-framerate 480p video that was encoded at 512kbps as well. This gives you a good idea of the generational gap.
Hopefully more psycho-visual optimizations will be implemented in VP9 in the future; it is extremely distracting to see sudden pixelization across a few frames, even if the quality jumps back right after.
YouTube has also been putting the encoder in production for a few months now, which I personally don’t believe is an entirely good decision considering how slow the encoder AND decoder are (dropped frames ahoy!). And it sometimes does weird stuff, like on the background of this video…