Daily makes real-time video APIs for every use case: our servers can support up to 1,200 camera streams in one call as easily as we support a one-on-one chat. That said, developer choices affect call quality. Choosing the right room settings helps ensure your users have the best possible call experience.
Keeping in mind two key things will help ensure the best experience for your users:
Whether you’re using our prebuilt UI or you’re building your own custom video call UI using call object mode, we’ve provided material below to help you make the right choices for your use case — as well as template material for your own onboarding and help guides. Providing end users with this information before they start making calls can help solve call quality issues (before they become customer experience issues).
Video calls are constrained by several factors, including: CPU, bandwidth, and latency. For example, live video demands more bandwidth than streamed video, which can be buffered.
The number one thing that affects call quality — and which eats up bandwidth and taxes CPU — is the number of cameras on during a call.
(One quick clarification: the number of participants in the call and the number of cameras on are two different things. For example, a user on an old device can click to join a call with 200 participants. That user will be in the call. However, they will have a better experience if in that call limits the number of participants that have their cameras on.)
Good news: you can solve for this challenge by choosing the best room setting. (And — we’ll say it again — by providing call participants onboarding material before a call.)
Consider CPU and bandwidth constraints as you build
- Newer, more powerful devices can easily handle 30 simultaneous video streams.
- Users on mobile devices or older computers will experience poor call quality after around 12 video streams.
You can learn more about the technology behind your choices by reading our very short introduction to the architecture of a group call. This is by no means exhaustive but is designed to acquaint you with what's going on under the surface.
Our prebuilt UI supports several settings, for different use cases:
Our default setting is a standard grid layout. By default, the first 12 participants will join with their cameras on. After 12 participants, new participants who join will join with their cameras off by default.
Active speaker mode is best for larger group calls — or for users on mobile devices or older computers.
- If more than 12 people will join a call, we recommend that you consider Active speaker mode.
- Active speaker mode is also the best choice if your users will join a call from older laptops or mobile devices.
Set the owner_only_broadcast room property for webinars, virtual conferences — or any scenario with an audience
- Setting the owner_only_broadcast room property means that only meeting owners can share their video, audio, or screen.
- This works great for calls of up to 200 people — such as classrooms, webinars, or virtual conferences — where only one or two people need to present material.
Livestreaming is also an option
If you want to share a call with a large number of people — and you are okay with a slight delay — consider live stream.
- Live streaming is a different, related technology: real-time video chat has <200ms latency, whereas live streaming has about 20s latency.
- You can live stream a Daily video chat to platforms like YouTube, Facebook Live, and Mux. Live streaming support is currently in beta.
Whatever your use case, don't forget to share onboarding material with your users first to ensure they have the best possible call experience.
Building a custom video call UI using the Daily call object
Because of mobile browser limitations and the CPU required by video calls, users on older laptops and mobile devices will begin to have a poor call experience much sooner than those on new devices. For this reason, we have some strong recommendations.
We recommend showing no more than 10-12 cameras in the UI.
- A Daily client needs about 75 kb/s downstream connection per participant that is sending video during a call. In a 10-participant meeting, you need about 750kb/s downstream connection — in a 20-participant meeting you need about 1500kb/s.
- In practical terms, this means that newer laptops can play 30 or more videos without issues.
- If you are supporting users on a wide variety of devices, it's better to be conservative!
We strongly recommend that you manage incoming bandwidth by choosing the appropriate simulcast video layer to receive for each video you are displaying.
For larger calls, it makes sense to implement a paginated UI, using track subscriptions.
- Daily makes it easy to customize track subscriptions, which means you can design which users see each other (to what tracks a user is subscribed).
- Specifically, you can build pagination to rotate through subscribed participant streams (which is how Zoom handles large group calls, for example).
Finally, passing this information onto your users can help troubleshoot common call quality issues before they become a customer experience issue.
You're welcome to use material we've prepared for you, and we are happy to help with any of this. Please contact us and we'll send you sample code that's best for your use case!
Updated about a month ago