A short YouTube explainer by Tsahi Levent-Levi comparing simulcast and SVC (scalable video coding) for WebRTC SFU/media-server deployments. Simulcast: device sends multiple independent streams at different bitrates/resolutions so the SFU can forward the best fit; favors hardware encoding and multiple codecs. SVC: device sends a single layered stream (layers peeled by SFU), uses less bandwidth but relies on software encoders, is harder to implement and less common in practice. Author notes many systems still choose simulcast because it’s easier and 'good enough.'
Chapters
SVC or simulcast. Which one of these technologies should you be using in your WebRTC solution in the SFU? The media server. Let's start by understanding what they are exactly and then discuss it a bit. So simulcast allows us to send multiple streams in multiple bitrates and resolutions and qualities from the device to the sfu. So I'm going to take the video that you're now seeing, send it in three different bit rates towards the media server. The media server will be able to then decide how to send it forward. Is it going to send the highest bitrate or is it going to send something else? And that's going to depend on the user on the other device, the capabilities there, the network, you know, the display, and many other things. SVC is different. If in simulcast we're sending three different streams to the sfu, in SVC scalable video coding, we're sending only one, but it's going to be like an onion. We're going to have a layer and on top of that another layer and another one. We're sending all this to the sfu. The SFU can then take the single bit stream, okay, and start peeling off the layers, keeping only what it needs when it sends it out. This means that we've got something that is a bit more optimized. It takes less room on the network, but in many ways it limits us. Why is that? In simulcast we can do hardware encoding decoding to these bitrates because we're actually encoding and decoding the simple streams in the codec that we're using. SVC requires an optimized or a type of an encoder that is very rare to find in hardware in terms of acceleration for encoder or decoder. So we're going to use only software encoding encoding there. SVC is also harder to implement and also doesn't allow us to use multiple video codecs in simulcast today, theoretically, and we're starting to see experiments of using two separate codecs on the higher bitrates using for example, SVP9 and in the lower bitrate using AV1, which is better but takes a lot more CPU. Also understand that this is not a new discussion that we're having. Twenty years ago, a company started off called Video with a Y. They started building a video conferencing solution that used SVC scalable video coding. Twenty years later, a lot of the system out systems out there, I'd say most of them still use Simulcast and not svc and not because SVC isn't superior, but because it's a lot easier to deal with simulcast and the end result is good enough. So next time you're going to check which one to use. Bear that in mind. You can learn more about svc simulcast and WebRTC in WebRTCcourse.com and you can use the testing and monitoring platform TestRTC.com as well. See you next time.