After establishing a successful connection to the conference, it happens after some minutes (sometimes just a few minutes, sometimes after almost an hour). The users affected first appear with frozen video for others, and then after some seconds they get the ICE_FAILED error. After that we force a page reload, they connect again, and will be the same after a random amount of minutes.
Here is a sample of lib-jitsi-meet logs at the moment. In this case it happened right after changing receiver and sender video constraints, changing the selected endpoints and muting the local track:
VM2044 lib-jitsi-meet.min.js:10 2020-08-14T13:14:50.827Z [modules/RTC/BridgeChannel.js] <l.sendReceiverVideoConstraintMessage>: sending a ReceiverVideoConstraint message with a maxFrameHeight of 360 pixels
VM2044 lib-jitsi-meet.min.js:10 2020-08-14T13:14:50.829Z [modules/xmpp/JingleSessionPC.js] <R.setSenderVideoConstraint>: JingleSessionPC[p2p=false,initiator=false,sid=7tn9lac0qjunj] setSenderVideoConstraint: 180
VM2044 lib-jitsi-meet.min.js:10 2020-08-14T13:14:50.831Z [modules/RTC/TraceablePeerConnection.js] <R.setSenderVideoConstraint>: Setting max height of 180 on local video
VM2044 lib-jitsi-meet.min.js:10 2020-08-14T13:14:50.834Z [modules/RTC/BridgeChannel.js] <l.sendSelectedEndpointsMessage>: sending selected changed notification to the bridge for endpoints (6) ["a760f576", "044829d6", "b6177a3b", "a2c50741", "de1ae113", "72996077"]
VM2044 lib-jitsi-meet.min.js:10 2020-08-14T13:14:51.189Z [modules/RTC/JitsiLocalTrack.js] Mute LocalTrack[1,audio]: true
VM2044 lib-jitsi-meet.min.js:10 2020-08-14T13:15:07.524Z [modules/xmpp/JingleSessionPC.js] <R.peerconnection.oniceconnectionstatechange>: (TIME) ICE failed P2P? false: 2935599.5600000024
VM2044 lib-jitsi-meet.min.js:10 2020-08-14T13:15:07.525Z [modules/connectivity/IceFailedHandling.js] <d.start>: ICE failed, but ICE restarts are disabled
VM2044 lib-jitsi-meet.min.js:10 2020-08-14T13:15:07.526Z [modules/connectivity/IceFailedHandling.js] <c._maybeSetDelayTimeout>: Will emit ICE failed in 15000ms
We did not find yet a specific pattern leading to the issue. As a side note, in our implementation we combine using
JitsiConference.setLastN in combination with
JitsiConference.selectParticipants, to get only the video feeds that the user is seeing on his browser viewport.