How to set minimum resolution as 480p?

How do we force to use minimum resolution as 480p. I know there is an option in config.js to set ideal, min and max settings. I have set it to below values.
video: {
height: {
ideal: 720,
max: 720,
min: 480
}

But it does not always follow this. When the bandwidth is low or with minor disturbance, it many times goes to very low resolution/bitrate. And at full screen looks really bad. I would rather have the video freeze at good resolution than having this unclear low resolution being showed. I have learned that even if we have set this in config.js, browser finally decided what bandwidth/resolution to send based on bandwidth calculation. Do we have any control on this ? I am not asking for any option inside config file for this and I am ok to make any code changes and compile myself if anyone can guide me where to look for in the code.

Any help is really appreciated.

@damencho, @saghul Any help here ? We are successfully running Jitsi with over 4000 active users without any major issues. And the video resolution at times gets really bad with some irregular bandwidth calculation mechanism and switches to 180p or even less even if we have set minimum as 480p in config. Any way to set it to never go less than 480p under any circumstance. I am ok if video goes blank or freeze when bandwidth is low.

Thankyou

Changing the minimum to 480p would stress the server and since people’s bandwidth. Jitsi adapts to people’s bandwidth. So disrupting its course may cause some major issues for your clients and your server’s integrity. I will look for it tomorrow afternoon and keep you posted

I’m actually facing a similar issue when trying to stream from obs virtual camera.
No matter what options I set in the config.js, the client stream always goes down to 320x… although I’m trying to force it to stay at 720p.
The source sends at 720p and it’s not a bandwidth issue because the upload has 5MB/s upload and the clients 20MB/s download. What’s even more interesting is that using meet.jit.si gives a more consistend HD Stream while using a self-hosted solution immediately drops to LD at 320x…
And the server has no load. It does that even when testing with only 1-2 clients.

So I suspect it is the connection between clients and the server. So it can be inconsistent bandwidth on the server …

If I set the minimum resolution to 720p on all options, why does it still drop to a resolution of 320x…?
The bandwidth between client and server should be more than enough for a single client at 720p. The host is uploading at 3200kbps, so that’s nothing special…

Hi @Derek_Owumi, I am ok to stress the server as bandwidth and server cost is not my concern here, I wanted to know if there an option force to use the set resolution than allowing the app or browser to decide what is the best. I see many times the decision taken to reduce the quality is really poor. I tested with few other like zoom, teams, skype, etc. They were giving same or good quality overall, but Jitsi was frequently switching between LD, SD and HD.

Hi @damencho, It is always good to have the resolution switched whenever there is bandwidth inconsistency. But if our application need is to stick to one resolution irrespective any bandwidth condition (accepting that video may be choppy or cut off when bandwidth is poor) what can be done to achieve that ? Any help in this regards will be highly appreciated.

Disable simulcast in your config.js

Hi @Freddie, thanks for the hint, I shall give this a try. Which resolution parameter will it take ? The min, max or ideal resolution ? Still wouldn’t the browser control the resolution ?

An update, disabling simulcast did not help :frowning:
Somehow browser decides what is best for us :stuck_out_tongue:

What browser did you use?

had the same problem. disabled simulcast, resolution still at 320x…
Used chrome, firefox, jitsi app… no difference.

Using Chrome

If you are using your own instance, you might want to try to change https://github.com/jitsi/lib-jitsi-meet/blob/1958efd5d78293e29b5d8e030f54f6fd8550bb4c/modules/RTC/TraceablePeerConnection.js#L29

Thanks @maxired
The below lines looks interesting to me
const DEGRADATION_PREFERENCE_CAMERA = ‘maintain-framerate’;
const DEGRADATION_PREFERENCE_DESKTOP = ‘maintain-resolution’;

Can we change the DEGRADATION_PREFERENCE_CAMERA to maintain-resolution ?

To be honest, I never tried it, but I assume that yes and that it should give a behavior closer to what you want.

Thanks a lot. Looks promising. I shall try it today and share my findings.