OpenAI, LLMs, WebRTC, voice bots and Programmable Video
Learn about WebRTC LLM and its applications. Discover how this technology can improve real-time communication using conversational AI.
Read MoreVP9 is the best unused codec today that can improve video quality and media experience in your WebRTC application. Lets see who is this codec good for.
Last year there were 3 video codecs available in browsers for WebRTC: VP8, H.264 and VP9. Now there seem to be 5, with the addition of HEVC and AV1. Let's put some sense into what is really going on, and where does each of these fit, focusing on VP9.
In the good old days, WebRTC video codec support was “simple”. The industry was bickering and fighting between VP8 or H.264 until resolving the matter by mandating both VP8 and H.264 codec support in web browsers.
Then Google went ahead, adding VP9 into the mix. Mozilla went along with it and added it to Firefox.
After that, we’ve got to the point where the Alliance of Open Media was created with AV1 as its video codec, prepping us nicely into the next codec war we’re going to face - the upcoming AV1 codec versus HEVC - both of which are now available (or eminently available, or soon to be available) in web browsers with WebRTC.
I’ve created this simple table for you to understand in which web browser which video codec is available for WebRTC:
To make things simple, if you need to launch something in 2020, then the video codecs available to you are:
Which leads us to the next question...
Let's check the new video codecs that are sprouting in WebRTC to understand where we stand with them.
It seems that Apple is adding HEVC to Safari. It is available to some extent in the Safari Technology Preview, so developers can tinker with it without knowing when it will be publicly available in Safari. And there is no indication or an inkling of an indication that other browser vendors are going to join - Google won’t. Mozilla definitely won’t. Microsoft just might, but that would mean forking away a bit from Chromium which is now the engine inside their Edge browser - not the right focus in my mind for Microsoft here.
HEVC is like VP9 in the same way that H.264 is like VP8:
The only difference is that HEVC doesn’t exist in any browser yet and will only be available on Safari while H.264 is available in all browsers.
To understand where we’re at with H.264 vs VP8 we only need to read the stats shared by Google in their recent semi-celebration for 10 years of WebM and WebRTC:
“These technologies have succeeded together, as today over 90% of encoded WebRTC video in Chrome uses VP8 or VP9.”
The bolded marking is my own doing 😃 - and just so we’re clear:
Now with AV1 coming up and the huge backing behind it, the HEVC track is all but dead. At least for the majority of WebRTC developers.
👉 If you want to use HEVC in WebRTC, then you limit yourself to future Safari releases and native applications (where you modify the WebRTC codebase to add HEVC). Don’t expect it to work in any other web browser
AV1 is the best next thing in video coding. The best invention since sliced bread. The best unlikely cooperation amongst industry co-opetitors moving away from royalty bearing video codecs towards an open video codec.
It is supposed to be better than both VP9 and HEVC from a compression standpoint.
And it is supposed to be a coombaya experience where everyone is supporting it. The members list of the Alliance of Open Media foundation behind it is impressive. It includes all browser vendors and many chipset vendors. How can you go wrong here?
The only problem for me is adoption time. It takes a long time to get a video codec to market.
Codec | Year started | Age |
H.264 | 2003 | 17 |
VP8 | 2008 | 12 |
HEVC | 2013 | 7 |
VP9 | 2013 | 7 |
AV1 | 2019 | 1 |
To get a video codec to market properly time is needed. From specification, to implementation, to modifying the implementation to work for real time communications, to optimizing the implementation to work reasonably on available CPUs.
In Chrome it doesn’t officially exist. It is there behind a flag, making sure users can’t really enjoy it and web developers don’t have meaningful enough access to it.
Getting a codec that came out of the oven a year or two ago to production is risky business.
👉 If you need this article to learn about codecs, then AV1 should NOT be in your roadmap in 2020. You better wait this one out a little bit
Google.
Not Google it. Google.
They use VP9 in Google Meet. That’s a large traffic source using VP9, but it says a lot about the adoption of VP9 so far.
There are also a few instances where VP9 is used in streaming or live streaming use cases. Nothing major though.
Why so low an adoption after being out on the market for 7 years?
I can only guess…
I’ve written about the role of VP9 in WebRTC before.
The premise of VP9 is improving encoding compression over VP8.
That comes at a cost of expending more CPU, giving us the option to balance between using network and CPU resources.
When looking at the higher end of the bitrate equation, one may prefer using VP8 or H.264 - we have enough network resources so we couldn’t really care on that front while saving on CPU might be beneficial
On the lower end of the bitrate equation, we’d want to squeeze every bit we have running on the network on higher quality. And then using VP9 might make more sense: since the bitrate is limited, we can spare more CPU on that and use VP9.
Sad thing is we can’t really know this in advance, at least not always.
Implementing a workable large scale video group call with WebRTC isn’t trivial. There are a lot of aspects to deal with both from a network perspective as well as from a CPU perspective.
The name of the game in this case is optimization, and this comes by having more flexibility in the tools you can use for optimizing the hell out of your video experience.
The flexibility here comes from VP9 SVC implementation in WebRTC:
If I had to chart the flexibility of a WebRTC video codec for large group sessions based on the tools it gives developers, this is what I’ll get:
👉 We expend more CPU on VP9 but we win in network performance and scalability of a video group call by doing that.
AV1 is the future.
Should you skip VP9 and just head to AV1 once it is ready? I don’t know.
The thing is, we had 2020. A pandemic that got us all cooped up at home doing video calls like crazy. The world has changed and with it priorities in our industry.
We’ve fast forwarded roadmaps by 5 years, so the future is already here. Can you wait a year or two more before you introduce a better video codec? If yes, then go straight to AV1. If you can’t, then you should seriously consider starting off with VP9 adoption.
Google Meet makes use of VP9 codec. Sadly, there is no other popular, large scale WebRTC application that makes use of it.
Yes. In fact, VP9 is the only codec today that supports SVC (Scalable Video Coding) in WebRTC. This gives developers more flexibility in large group video calls and even live broadcasts than other video codecs.
The challenge is that VP9 SVC support in WebRTC isn’t official or well documented.
Better compression rate compared to VP8 and H.264 which are mandatory to implement in WebRTC.
Better scalability. It has flexible tools that assist in scaling video group calls.
HEVC and AV1 don’t yet exist in WebRTC browser implementations. At least not in a way you can utilize in a production service.
VP9 is available and usable in Chrome, Firefox and Edge.
If you are looking to improve video quality or reduce bitrates in your WebRTC application, then you should seriously look at VP9.
Learn about WebRTC LLM and its applications. Discover how this technology can improve real-time communication using conversational AI.
Read MoreGet your copy of my ebook on the top 7 video quality metrics and KPIs in WebRTC (below).
Read More