Customizing jitsi -- viewer only -- bandwidth -- usecase

So, i have this usecase:

10-15 persons meeting (video+audio) in 5-6 such rooms each (with customized ui)
500-600 viewers to that meeting, view privileges only (without talking/video sharing)

where i am right now:
only have deployed jitsi-meet to cloud so far – vultr

now i believe to do anything with UI i’ve to start with the development guide
https:// (added space intentionally )github.com/jitsi/jitsi-meet/blob/master/doc/development.md

then i’d need to instantiate and customize particular rooms

Question 1: General guide on how i’d instantiate a single room and have its UI customized specifically? would i need to use API and create separate react / any web app? or could i just modify src and do it?
Sorry to be so generic, i’m trying to fasttrack the process by getting any help possible.

Question 2: how could i best utilize the bandwidth of the server, if i want to have 500+ viewers (probably streaming the whole page / all 15-20 vids)

Question 3: so if i do not want to use aws and instead i opt for vultr, deploy instance with 4gb ram, 2 cpu X 5 (setups) with videobridge, should that be sufficient for 5 rooms (each having 15-20 persons in video conference) and then all of the rest as viewers?

Question 4: this is more of a custom app oriented question, what’s the possibility in allowing first 20 persons with camera / video sharing capability, and then all users after that will have to join in viewer mode only? are there any flags that could simply hide video / microphone capability from users? so i’d set that up programmatically after X number of users have joined in?

Question 5: there’s that option to mute everyone, however anyone can unmute themselves, could i modify src code in react app easily to disable the option of unmuting themselves? and only allowing moderator to unmute a particular person? what’s the point of raising hands if anyone can speak?

— And thank you everyone for keeping such an awesome community! my questions might be a bit too broad, trying to find the answers in search as well as googling stuff atm. Thought i’d ask here as well :slight_smile:

bump!

There is an example how to create a custom UI: https://github.com/jitsi/lib-jitsi-meet/tree/master/doc/example

No, you are not forced to use the API.

Yes you can do that: follow the instructions from the development guide
if you want to run a script at the end of the build that copy or deploy files to the right locations then create a file called
deploy-local.sh

use jitsi for the 15-20 people that interact
setup one of the computers that interact to stream up to google.
then put all the 500+ viewers on streaming using google.

Yes you can handle the up to 20 persions audio+video using one server, if the server have 1gb network. By using 5 servers you can handle 5 rooms.

No, you will very likely run out of bandwidth to handle the 500+ viewers * 5 rooms directly using your 5 servers, however if you stream then you he can handle the 500+ viewers * 5 rooms fine.

720p + audio require ~ 3mb/s * 500 * 5 = 7.5 Gigabit/s
360p + audio require ~ 1mb/s * 500 * 5 = 2.5 Gigabit/s
240p + audio require ~ 0.2mb/s * 500 * 5 = 500 Megabit/s

these are the same question: Yes you can hide buttons: look at interface_config.js
if you compile the userinterface then you can hide the buttons programmatically as you wish

2 Likes

Hi @xranby ,

I would like to ask if I deploy 1 VPS at Digitalocean with 8 GB RAM and 4 CPUs, would the number double the quantity of viewers? let’s say could handle up to 40 people?

Thank you for your insights.

Sincerely,
arivonto
https://www.linkedin.com/in/arivonto/

Unfortunaly jitsi do not scale linearly.
When you have 30 or more users then the client computers are unable to handle the load. Typically you will reach a roof how many participants each client can process video and audio from.

The client load bottleneck will become apparent before the server is overloaded.
A powerful server may be able to handle 100 users however most clients are only able to process up to 30 incomming video and audio, weaker client start to have trouble above 15.

You can overcome this limit slightly by configuring the videobridge and clients to only send and receive the video and audio from the last 6 talking participants.

1 Like

Hi @xranby ,

Thank you for your insights, I will explore more on LUA code.

Sincerely,
arivonto

1 Like

Here are some success stories, and configuration tweaks, how to configure jitsi-meet for 20+ participants

1: in /etc/jitsi/meet/yourdomain.com-config.js set the channelLastN parameter to 3 (only the last three speakers video streams will be trasmitted)

2: to make jibri (streaming to youtube) work put in
/etc/prosody/conf.d/yourdomain.com.cfg.lua in the top line:
consider_bosh_secure = true;

3: to improve audio quality important if you want to play background music and have it transmitted crystal clear:
in /etc/jitsi/meet/yourdomain-config.js

 disableAP: true,
 enableLipSync: false,

if you have only one speaker then you can disable all audio processing in the clients,
this will cause ringing if you have two speakers but work very good with headsets.

 disableAEC: true,
 disableAGC: true,
 disableNS: true,
 disableHPF: true,
 stereo: true,

4: set max video quality and startBitrate to limit video bandwith
also in /etc/jitsi/meet/yourdomain-config.js

startBitrate: 128,
resolution: 360,
constraints: {
     video: {
         aspectRatio: 16 / 9,
         height: {
             ideal: 360,
             max: 360,
             min: 240
         }
     }
},
2 Likes

Hi @xranby ,

I have tested with the config mention on points 1, 3 & 4 on my small deployed VPS 1 CPU 1GB RAM.
But for now I can only test by accessing from 10 tabs of Chrome Desktop Browser.
CPU Processing were about 30% and RAM 608MB & no swap space allocated.
I think this is not the best way to test due to local internet provider limit.
I will update you later today.

Thanks for your assistance.
Sincerely,
arivonto

1 Like

Hi @xranby ,

To setup Youtube live streaming, I have followed the tutorial on : https://github.com/jitsi/jibri
Now I have 1 server for meet subdomain and 1 server for recorder subdomain.
The option : “Start live stream” and “Start recording” is now available on the menu. But it still doesn’t show the Youtube Events List.
And also under “Settings” there is no “Calendar” tab as shown on the meet.jit.si.

Please assist me where am I missing a step on linking to Google Account “Single Sign On”?

Many thanks in advanced.
Sincerely,
arivonto

To make a meeting work for users with slow computers when 15+ users are connected, it is important to set

disableAudioLevels: true,

in the
/etc/jitsi/meet/*-config.js
file

Measuring of audio levels cause two problems with many users:

  1. the blue dots for the active speaker gets updated using the audio level data. This cause re-layout of the GUI. With many users the re-layout consume all CPU time on slower clients.
  2. the measurements of audio levels cause audio level data packets to be sent from all to all participants and this do not scale

On the left i have disabled measurement of audio levels, on the right measurement of audio levels are enabled.

The client do not have any idle time on the right when auto levels are measured… and this will cause the user to have a bad audio experience due to missed audio updates.

2 Likes

I think you need to set the config.js option to true

// Enables calendar integration, depends on googleApiApplicationClientID
// and microsoftApiApplicationClientID
enableCalendarIntegration: true,
1 Like

Hi @xranby ,

I think I made a typo saying : “And also under “Settings” there is no “Calendar” tab as shown on the meet.jit.si.”
What I meant was “there are no content inside the Calendar Tab. As shown on meet.jit.si, it shows the schedule of live streaming session I setup”

I think I made a mistake on either matching the config.js between meet and recorder subdomain or perhaps somewhere else. I’m still trying to figure out.

Sincerely,
arivonto