stability over latency?

Forgive me if this is the wrong place to ask.

Is there any way to configure mediasoup so a specific producer/consumer values stability over latency? I’m trying to play audio (music) and video (webcam), but get way too much stuttering on the audio stream.

Don’t get me wrong, it’s not super bad, but there is what sounds like a minor “skip” in the sound from time to time (like average every 5-10 seconds, up to 30 seconds, down to 1 second).

I’ve been trying to search google about webrtc and how to improve audio stability, but I can’t find anything on the subject.


  1. Is there any way to force a high constant FEC along with a stream to correct any problems?
  2. Or set a target latency higher than the connection capability?
  3. Is it possible to disable or change the behaviour of acceleration / deceleration?
  4. Does webrtc (udp) do retransmissions at all?

Typical use case for this modified behaviour is one-to-many. However the music streamer will also participate in many-to-many conference at the same time (which shouldn’t be affected if possible, but can be run with different server and/or client code, so doesn’t matter).

I’ve already considered other technologies, but really wish for the stream to be realtime.


This is useless without packet retransmission. There is no packet retransmission for audio.

Of course, but just for video. In audio there is in-band FEC for OPUS. Enable it so the sender will send FEC to adapt itself to the worst receiver.

Any other subject in your topic is out of the scope of mediasoup and mediasoup-client. You can definitely do magic in client side with WebAudio and Audio Worklet, obtain a MediaStreamTrack originated with them and pass it to transport.produce(). Said that, mediasoup just focuses on proper RTP relay.

Thanks for all the good replies. What I meant by the first question is. Is it possible to inject “FEC” messages locally to a producer on client side to force all outgoing traffic to have the highest amount of error correction possible? Instead of relying on messages coming from consumers?

Why? What for? That’s not needed. If you have real numbers demonstrating how better that is, please share them. But I think it’s just speculation. Telling the OPUS sender the packet loss of the worst receiver is good enough.