Client-Side Simulcast in LiveSwitch 1.20
LiveSwitch released version 1.20 on June 28th. Last week, we discussed one of the major elements of the release, our update to .NET 8, which you can read about here. Today, we’re excited to dive into the second major component of that release: updates to our client-side simulcast.
What is Simulcast?
Simulcast, short for “simultaneous broadcast,” is used in WebRTC to enhance the overall quality of group conferences. Instead of sending just one video stream to the server, each participant sends multiple copies (or “encodings”) of the same video, each encoded to different quality targets.
This approach is particularly useful when some participants have limited bandwidth and can only receive lower-quality video. Without a capability like simulcast, when one of the participants in the call struggles to receive the high-quality video feed, the quality of the feed will be degraded for everyone in the call to accommodate that one participant with limited bandwidth. With simulcast, participants with good network bandwidth can still receive high-quality video without their experience being impacted by peers with poorer network conditions.
To learn more about simulcast, check our documentation here.
Server-side and Client-side Simulcast
LiveSwitch offers both server-side and client-side simulcast. Here’s a breakdown of the differences and use cases for each.
Server-side Simulcast
In server-side simulcast, the server generates all the different levels of encodings. Clients send their video streams to the server, which then produces various quality versions (e.g. low, medium, and high) and forwards them to participants based on their bandwidth capabilities.
This method is beneficial for clients, especially those with low-powered devices, as they don’t have to generate the encodings themselves. However, the major downside is that it requires more server resources, leading to higher infrastructure costs.
Client-side Simulcast
With client-side simulcast, each participant generates multiple encodings. The server then forwards the appropriate encoding to appropriate participants in the call. This approach saves on infrastructure costs but places the processing burden on the clients’ devices.
Improvements to Client-side Simulcast
In the past year, we have been focused on refining our proprietary simulcast solution - our server-side simulcast implementation. With this solution, switching between encoding layers was responsive, relying on Packet Loss Indication (PLI) and Negative Acknowledgment (NACK) messages to adapt to changing network conditions.
In this release, we’ve updated our client-side simulcast to follow a similar logic, making it more responsive and efficient.
Packet Loss Estimation
We now use PLIs and NACKs for more accurate bandwidth estimation. This allows for quicker and more reliable switching between encoding layers.
Dynamic Encoding Adjustments
Previously, bitrate adjustments were gradual and not always responsive to real-time network conditions. Now, we dynamically adjust to a lower encoding based on immediate feedback from PLIs and NACKs, ensuring better quality control.
Monitoring and Troubleshooting
We’ve updated SDP offers to share platform information (browser and device used) and added warnings for unsupported platforms, aiding in faster troubleshooting and better network monitoring for developers.
Supported Platforms
Our client-side simulcast is fully supported on Chrome for the web and on native platforms like iOS, Android, Windows, macOS, and Linux.
How Do Our Customers Enable Client-side Simulcast?
The process to enable client-side simulcast remains unchanged. For detailed instructions, please refer to our guide here.
Future Improvements
Looking ahead, we are working on further enhancements, including the ability to automatically disable the video stream if a participant continues to struggle even at the lowest encoding, maintaining an audio-only connection to ensure continuous communication.
Stay tuned for more updates and improvements as we continue to enhance your LiveSwitch experience!
To learn more about our LiveSwitch 1.20 release, please check out our release notes here.
If you would like to try out our platform, sign up for now for free through our 30-day trial.
Need assistance in architecting the perfect WebRTC application? Let our team help out! Get in touch with us today!