How jvb bandwdith usage vary wrt to number of participents

When I saw this in the jvb github page, I got curious as to how jvb sends stream to conference participants:

Unlike the expensive dedicated hardware videobridges, Jitsi Videobridge does not mix the video channels into a composite video stream, but only relays the received video channels to all call participants.

Does this mean jvb sends the video stream received from a participant to all other participants and all the video streams are mixed at the client end into a single view?

Does this mean with increase in number of participants the bandwidth usage at each client increases?

Is it possible for some participants to choose a low bandwidth version as opposed to all getting same video streams?

If one participant chooses to send high resolution video, what happens to some one on a low bandwidth connection?

That is correct.

Because of simulcast that increase is very minimal.

It is possible, there is such menu.

Here the answer again is simulcast. So senders send multiple streams, depends on the cpu and bandwidth - 180p, 360p, 720p, and the bridge sends 720p if the participant is on stage for the receiver or 180p if it is on a thumbnail.

2 Likes

Thanks for the clarification!

Some more additional questions, as I dig deeper into this:

I understand that in simulcast, max 3 bit rates are supported. How are these 3 bit rates selected? Also how are codecs used negotiated? Can this be controlled/customized?

Apart from browsers, there are mobile clients for Android and iOS, is simulcast supported in mobile too?

Thanks again for spending time to answering!

Hi Raj,

This is mostly up to the browser implementation. In practice with Chrome/Chromium a sender sends up to three layers. When the main resolution is 720p, the additional two layers use 360p and 180p. The three layers are encoded at up to 2.5Mbps, 500Kbps, 150Kbps respectively (see here).

When the available send bandwidth decreases, the bitrate of the highest layer is decreased first. When it drops below a threshold, higer layers are disabled. Example: with 2Mbps available bandwidth the sender will send 180p (150Kbps) + 360p (500Kbps) + 720p (the remaining 1.35Mbps). With 800Kbps available bandwidth the sender will drop the 720p layer.

The codec to be use comes from jicofo (see here). It can be customized if you deploy your own jitsi-meet instance, but there is no runtime negotiation. VP8 is the most widely supported codec and the one used on meet.jit.si.

I hope this helps,
Boris

2 Likes