My server and web client integration based on Mediasoup Client API V3 is experiencing the unfortunate effect of FPS instability.
Despite good network conditions, FPS deviates between 2-15 (15 is getUserMedia() upper limit), the video freezes periodically. In this case, the resolution is reduced reluctantly.
I experimented with different types and sets of simulcast layers and the initialAvailableOutgoingBitrate SFU parameter, but did not solve the problem.
DegradationPreferences WebRTC setting is not available in the MediaSoup API; using it through a hack with RTCPeerConnection pulled out from the producer does not work.
WebRTC server and clients not based on Mediasoup show stable FPS under the same conditions.
An eternal task for us is to replace libwebrtc based BWE mechanism in mediasoup with our own. Unfortunately we are not there yet, meaning that the BWE in mediasoup is a black box for us.
In the meantime you can mitigate the problem a bit by calling transport.setMinAvailableBitrate(value) although obviously it comes with its own downside. I’m afraid there is no magic response for this. We will work on the above task as soon as we can but no ETA yet.