We have a case where there are 4 people in a conference, for sake of this issue lets call them users Alice, Bob, Claire, and Dave, and everyone has their camera’s on. Everyone can see everyone else except for one user who cannot see one specific person, aka → Alice cannot see Claire, but Bob and Dave can see Claire fine.
OS/Browser versions used:
- Alice Chrome 108.0.0.0 Windows
- Bob Chrome 107.0.0.0 Mac OS X
- Claire Chrome 107.0.0.0 Windows
- Dave Chrome 108.0.0.0 Mac OS X
Looking at jitsi-meet browser logs we only see 1 error or failure in Alice’s browser, but it’s related to Audio and not video:
2022-12-08T16:04:01.022Z 2022-12-08T16:04:01.022Z [modules/detection/VADAudioAnalyser.js] Failed to start VADAudioAnalyser RuntimeError: Aborted(LinkError: WebAssembly.instantiate(): Import #2 module="a" function="memory" error: memory import must be a WebAssembly.Memory object). Build with -sASSERTIONS for more info.
We don’t see any errors in the jvb for Alice either. Alice can see other users fine. This tells me that at least Alice can receive+decrypt+decode+render other users fine (so in other words, it shouldn’t be any issue regarding DTLS-SRTP key negotiation, as all the streams are muxed over the same connection.) And since other users can see Claire fine, this tells me that there is not an issue on Claire’s end sending video to the jvb. Why then can Alice see other users video but not Claire’s?
Where it gets interesting is the callstats data → Digging through the logs and metrics, I can see Claire’s video ssrc as ‘421061617’, so I did a comparison between Bob’s video received metrics for Claire vs Alice’s video received metrics for Claire. It is easy to spot the differences, and very clear about the following:
- Alice is receiving packets of seemingly expected rate/size for a video track for Claire’s video over that ssrc 421061617
- We can even see that the stats is detecting video frame boundaries (assuming this is the webrtc stack looking at whether or not the marker bits are set in the RTP headers, given that the stats for video frames received is incrementing at an expected rate)
- Alice has a high NACK/PLI count for Claire’s video
- On Alice’s side, ZERO packets are being decoded and rendered for Claire’s video.
But there are no errors/warnings/failures in the browser logs or jvb that would indicate any issue. Do we know why this might happen? If it’s not a key negotiation failure, could the JVB be encoding the RTP packets incorrectly, or possible encrypting the payload wrong, or maybe the JVB is sending the wrong encrypted payload over this SSRC id to Alice?
In the images attached, Alice, who cannot see Claire’s video, received metrics for this SSRC is on the right, while Bob, who can see Claire fine, is on the left.