What is Jitsi Videobridge?
In short Jitsi Videobridge is the media server of Jitsi Meet. It's an XMPP Server component and most importantly it's WebRTC compatible and open source.
Is Jitsi Videobridge a SFU?
When building conferences with WebRTC which are not peer to peer most solutions adapt some sort of media server which act as the
the central server which handles all the streams of clients either by forwarding the incoming streams to all clients (SFU) or mixing the incoming streams and forwarding a single stream to everyone(MCU).
Jitsi Videobridge follows the first approach as it forwards the incoming streams to all clients who are connected to the videobridge.
Performance of Jitsi Videobridge
SFU modal is resource efficient compared to MCU modals. As per jitsi's
performance evaluation test a single videobridge can handle 1000 video streams at 550 Megabits 20% CPU which is really good. Another good side of this is that the quality of the videos is expected to be great as the videobridge does not do any mixing and simply relays the streams. The downside of this would
be on the client-side as they would experience higher CPU and bandwidth usage as the number of participants grows. Jitsi tries to minimize this by having simulcast and features like Last N
Main Components of Jitsi Videobridge
- WebRTC interface - Jitsi Videobridge supports WebRTC through both UDP and TCP
- XMPP Modules and Colibri - Jitsi Videobridge is controlled by XMPP and its extension COLIBRI. Signaling, Communication with the Client is handled by XMPP. For client-to-bridge messages either WebSockets
or WebRTC DataChannels can be used.
- Java Base - The core of Jitsi Videobridge is in Java. It handles all the media relays, TURN functionality, Image processing, WebRTC implementation
Statistics of Jitsi Videobridge
Jitsi has given its REST version of Colibri which can be used to get real-time statistics about the meetings at the conference. Details like ongoing conferences, details of the individual conferences, and other statistics like
RTP loss, bitrate download, audio channels, etc. can be received. You can refer to the API here
Scalability of Jitsi Videobridge
Out of the components of jitsi, videobridge is usually the first that needs to scale with increasing demand. Since it's the media server as mentioned above bandwidth becomes a limiting factor in most scenarios (specially when using servers from AWS)
There are two ways of scaling the videobridge.
In vertical scaling instead of adding more servers, the current server is upgraded to higher specs. If the traffic is uniform this solution would work to the threshold limits of the server.
But when the traffic varies the high specs could be overkill and costly since the server needs to keep running for the ongoing meetings.
This is the popular or the recommended way to scale the videobridge. We have a detailed article on how to achieve this on AWS here
In short, adding more videobridges means the system can handle more simultaneous participants. If octo is configured participants from the same conference can also be divided among the bridges.
If autoscaling is configured, the servers will scale in accordance with traffic.