Configuring room settings
Choosing the right room settings helps ensure your users have the best possible call experience.
Whether you’re using Daily Prebuilt 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.)
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.
Daily Prebuilt can be customized to support different call modes, features, and layouts:
Active Speaker view is the default layout mode. It displays the participant who is currently speaking prominently, while others are displayed smaller.
If Active Speaker is turned off, either via the
activeSpeakerMode iframe property or the
setActiveSpeakerMode() method, the layout switches to Grid View, where every participant appears the same size.
Grid View can be customized via the
layoutConfig iframe property. This property specifies the maximum and minimum participant tiles per page when a browser is resized. For example:
owner_only_broadcast room property for webinars, virtual conferences — or any scenario with an audience.
- Setting the
owner_only_broadcastroom property means that only meeting owners (created via a meeting token with the
is_ownerproperty set to
true) can share their video, audio, or screen in Daily Prebuilt calls.
- This works great for calls of up to 100,000 people — such as classrooms, webinars, or virtual conferences — where only one or two people need to present material.
owner_only_broadcastcan support up to ten owners sharing their video and audio, and up to 100,000 viewers watching (not sharing their own cams or mics).
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.
Whatever your use case, don't forget to share onboarding material with your users first to ensure they have the best possible call experience.
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. For mobile interfaces, you may want to limit this to as few as two or three videos at a time.
- 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're happy to help with any of this. Please contact us and we'll send you sample code that's best for your use case!