Simulcast
Overview
Simulcast is short for "simultaneous broadcast." It's used in WebRTC to improve the overall quality of a group conference.
Instead of sending just one video stream from the source to the server and then to each participant, the server also creates copies ("encodings") of the same video but encoded to different quality targets. Typically, a high-quality (full bitrate), medium-quality and low-quality (reduced bitrate) streams are encoded.
Consider a group call with Alice, Bob, Carol, and Dan:
- Alice is sending a video using a bitrate of 2 Mbps.
- Bob and Dan have reliable internet connections and can receive Alice's video at 2 Mbps.
- Carol, however, has a limited internet connection and can only sustain inbound video at 1 Mbps.
In this scenario, to keep Carol from dropping the call, you must coordinate with Alice to reduce her outbound bitrate to 1 Mbps. Unfortunately for Bob and Dan, they must also see Alice at the reduced bitrate. This negative side effect is amplified and becomes more and more noticeable as you add more participants. With simulcast, you can send Carol a low-quality encoding while allowing Bob and Dan to continue receiving the high-quality encoding.
Simulcast is not supported on P2P connections. In a two-way call, the bitrate simply adapts to each receiver. There are no side effects because there are no other receivers to impact. Only SFU connections can take advantage of simulcast.
How does Simulcast Improve Stream Quality?
Simulcast is a powerful tool for providing optimal video stream quality. It works by simultaneously sending multiple feeds of different quality from server to the receiving clients, dynamically enabling and disabling them depending to the network conditions experienced by the individual receivers.
Simulcast, by itself, can't resolve all quality issues for all network conditions. However, you can use it to fix most of the quality issues you encounter. There are other mechanisms that also affect overall stream quality. An alternative to simulcast that improves overall stream quality is Adaptive Video Resolution, where you adjust the video stream's resolution, constraining it to the actual solution of the receivers' view. For example, if you send HD video at a resolution of 1280 x 720, but all the receivers display the downstream in a smaller view because the app layout dictates demoting participant views during a screen share, you can adjust the sender's resolution to not waste bandwidth.
LiveSwitch continually improves bandwidth management and adaptation policies and capabilities. Contact Support if you have a use case that you want to improve.
Configure Simulcast
You can enable simulcast in the cloud console. Simulcast can be enabled for a particular channel pattern on a given application. When Enabled, simulcast will support two simulcast encodings (in addition to the primary one), at most three publishers (and unlimited number of viewers). Simulcast substreams degradation will depend on the media type. For camera video, simulcast substreams will offer smaller resolution; for screen-share media, simulcast substreams will offer smaller frame rate.