WebRTC technology (Web Real-Time Communication) for audio/video calls is emploeyd at QuickBlox.
WebRTC allows real-time media (audio/video streams) exchange between client-side devices.
There are two approaches for WebRTC audio/video calls implementation in QuickBlox:
1. Client side - Peer-to-peer or Mesh
2. Server side - SFU (Selective Forwarding Unit) - routing software
1. P2P (Mesh) scheme. It stands for peer-to-peer connection, no routing software is required.
With standard WebRTC approach, it's possible to set up to 3-4 users in Group Video call simultaneously, having more people on the call might bring to some of the participants to lose connection. Due to peculiarities and limitations of this approach, it doesn't support Video streaming.
2. Multiparty Video calls (SFU). This functionality relies on the same WebRTC standards, but it implies deploying a separate server with needed software to process Video calls. With a separate server for Multiparty Video calls, it is possible to include up to 10 users in Group call and have Video streaming as well.
SFU solution that is employed by QuickBlox at the moment is Janus.
Separate (dedicated) Janus server is provisioning is chargeable and available as an add-on only for Startup/Growth/HIPAA/Enterprise Plan customers as a separate instance within AWS account: Chat API & Messaging SDK Pricing | QuickBlox
Please refer to the following links to find out more on WebRTC client side (peer to peer) implementations:
Frequently asked questions.
1. Does SFU solution allow to add participants ONLY at the time of conference initiation?
User can join ongoing audio/video call anytime while it lasts (unlike standard approach). To join the call, the user must be listed in Occupants_ID list of the room/dialog, there is no way to add random person to the current session who hasn't been among the participants when the call was initiated.
2. Is a user able to add him/herself in a Call if he/she knows a room/dialog ID?
No. To join the call the user must be listed in Occupants_ID list of the room/dialog from the very beginning of the call.
3. Can a user re-join a Call if a session is still going?
Yes, the user can.
However, after loosing connection UserID exists on the server about 30 sec, so after a while you can join successfully to dialog again.
Customer also can implement re-join button for this case.
We can offer the following way for implementing it on Web:
In this case we have 3 conditions:
- no call;
- call is on and the user is in the call;
- call is on, but the user is not in the call (for instance, the user has been disconnected due to internet connectivity issues and reloaded the page).
You can check if the call is still on using a code snippet provided here: EnterpriseFeatures/videoconf/web - QuickBlox Developers (API docs, code samples, SDK)
4. Are there different/separate IDs for Call and Text dialog?
There will be one and the same ID (analogues to Skype).
5. How many users can join a call without affecting the performance?
It is better to not exceed 8-10 participants.
6. Are there any requirements for minimum number of participants in a call?
No, there are no.
7. How much bandwidth is required for successful audio/video call for both mobile and web platforms?
9. Is there “Record” feature available?
There is no server-side recording available at the moment (should be released in Q1, Q2 of 2021