Video lags behind audio

I don’t think there is something special done there … not sure why it would not work the same way on your deployment…
The only thing I can think of that may be related (but I’m totally not sure) is this jitsi-videobridge/20-jvb-udp-buffers.conf at master · jitsi/jitsi-videobridge · GitHub
Do you have it?

We didn’t and just added.
Will test for a while and circle back. Thanks @damencho

Yep, there is some way to monitor UDP packets dropped by the kernel which is a good one to observe it.

Why is the value shown on the Git link you sent is only 10,485,760?
I see some articles that suggest 104,857,600 or 262,14,400.

As we had considered 10 MB more than enough…

Alright so still having this nagging issue with lower-end devices and Chrome loads.
One of our team members had Figma open in the background which lead to Chrome taking 8Gigs of RAM and slowed everything down.

Figma gone → video audio synced right back up. This happened on a strong machine i7 10th gen desktop with 64GB RAM at 3200Mhz.

So I want to create a message to tell the user - hey close you Figma or whatever BUT for that we need to detect:

  1. The cpu load (can’t via JS)
  2. Chrome memory load (couldn’t find a way)
  3. Audio video mismatch via SSRC? Asking for help here

I noticed @Boris_Grozev answered this question before (see reference below) but couldn’t understand how this can be done.

Does anyone have any idea how we can detect the lag on the sender or receiver side?

Thank you!

It is the sender/encoder that is affected, right? One way to detect it could be to look at qualityLimitationReason in the PeerConnection stats. You can check if it changes to “cpu” while the sync issue occurs in chrome://webrtc-internals

Thanks @Boris_Grozev.
We found these stats when we had the video lag. Any insights will be greatly appreciated.

Down the rabbit hole we go…
We compared config to ours and found there’s a flag

disableRtx: false, // Enables RTX everywhere

The explanation is by disabling this flag we’re enabling RTX “everywhere”. What is “everywhere”?

@damencho I saw a link you sent explaining what RTX means, do you have an answer to how this works?

Also, what is this ratio?

   forceJVB121Ratio:  -1,


@jallamsetty can you chime in?

To have a percentage of 2 people meetings to not use p2p but jvb.

Not having this line, i.e., disableRtx: false in your config.js should not make any difference. RTX is enabled by default on all browsers except on Firefox versions < 96. The config is for explicitly disabling RTX.

It seems the culprit is VP9 after all.

We tried so many ways to go around it and eventually had to drop back to VP8. Happy to report VP8 works great.

I guess we’re not at VP9 hardware for the masses level yet.

@rn1984 thanks for feedback

how you do this one ; eventually had to drop back to VP8.


You can enforce the codec. Add this to your config.js

videoQuality: {
preferredCodec: ‘VP8’,
enforcePreferredCodec: true,
maxBitratesVideo: {
VP8: {
low: 200000,
standard: 500000,
high: 1500000

1 Like