Hello guys. We are developing react app with using lib-jitsi-meet. We’ve added presenter mode as on jitsi-meet repo, and it works as expected. But there is one issue, when in a conference only 2 participants, then quality of video is good, but if there are more than 2 participants, video quality extremely low.
One more things, is that this issue only when presenter enable local video. What can we do in that situation ?
Do you have testing.capScreenShareBitrate set to 1 in your config.js ?
Yes, I put it directly to connection create function:
const JITSI_OPTIONS = {
hosts: {
domain: REACT_APP_JITSI_DOMAIN || 'alpha.jitsi.net',
muc: REACT_APP_JITSI_MUC || 'conference.alpha.jitsi.net',
},
serviceUrl: REACT_APP_JITSI_SERVICE_URL || 'wss://alpha.jitsi.net/xmpp-websocket',
clientNode: REACT_APP_JITSI_CLIENT_NODE || 'https://alpha.jitsi.net',
testing: {
p2pTestMode: false,
capScreenshareBitrate: 1, // 0 to disable
},
enableNoAudioDetection: true,
enableNoisyMicDetection: true,
p2p: {
enabled: true,
}
};
const connection = new JitsiMeetJS.JitsiConnection(null, null, JITSI_OPTIONS);
Is this on chrome ? Also do you have any maxBitratesVideo set under videoQuality ?
Chrome and FF the same behavior. No, nothing related to quality, I sent my options object
Also, we have our own server, can it be a source of problem ? Or is it front end issue ?
Chrome and FF the same behavior. No, nothing related to quality, I sent my options object
Can you try with enableLayerSuspension: true in your config ?
Will you be able to share browser console logs for the sender ?
That is not very useful, can you pls set the log level to debug and send the full log again ?
Logger.js:154 2021-02-04T23:38:57.505Z [/index.js] <TraceablePeerConnection.push../node_modules/lib-jitsi-meet/modules/RTC/TraceablePeerConnection.js.TraceablePeerConnection.setSenderVideoConstraint>: TPC[1,p2p:false] senderVideoMaxHeight: 720
Logger.js:154 2021-02-04T23:38:57.505Z [/index.js] <TraceablePeerConnection.push../node_modules/lib-jitsi-meet/modules/RTC/TraceablePeerConnection.js.TraceablePeerConnection.setSenderVideoConstraint>: TPC[1,p2p:false] setting max height of 720, encodings: [{"active":true,"networkPriority":"low","priority":"low"},{"active":true,"networkPriority":"low","priority":"low"},{"active":false,"networkPriority":"low","priority":"low"}]
I don’t think simulcast has been disabled for screenshare, I still see 3 streams being sent by the browser. This shouldn’t happen if testing.capScreenshareBitrate is set to 1.
Also you will have to make sure you call selectEndpoint([screenshare_ep] on the JitsiConference instance on the receiver. Only then the bridge will ask the client to send 1080p resolution. Bridge is requesting only 180p right now. As a result the sending client is suspending the higher resolution stream resulting in poor quality.
2021-02-04T23:38:51.206Z [/index.js] <WebSocket.channel.onmessage>: SenderVideoConstraints: {"idealHeight":180,"preferredFps":-1,"preferredHeight":-1}
2021-02-04T23:38:51.206Z [/index.js] <RTC._senderVideoConstraintsChanged>: Remote max frame height received on bridge channel: {"idealHeight":180,"preferredFps":-1,"preferredHeight":-1}
Logger.js:154 2021-02-04T23:38:57.610Z [/index.js] <WebSocket.channel.onmessage>: SenderVideoConstraints: {"idealHeight":0,"preferredFps":-1,"preferredHeight":-1}
Logger.js:154 2021-02-04T23:38:57.610Z [/index.js] <RTC._senderVideoConstraintsChanged>: Remote max frame height received on bridge channel: {"idealHeight":0,"preferredFps":-1,"preferredHeight":-1}
Logger.js:154 2021-02-04T23:38:57.693Z [/index.js] <WebSocket.channel.onmessage>: SenderVideoConstraints: {"idealHeight":180,"preferredFps":-1,"preferredHeight":-1}
Logger.js:154 2021-02-04T23:38:57.693Z [/index.js] <RTC._senderVideoConstraintsChanged>: Remote max frame height received on bridge channel: {"idealHeight":180,"preferredFps":-1,"preferredHeight":-1}
Thanks, I’ll take a look. And what could be a reason, that, without video on (only with screen share) it looks normal, but with local video - quality down ? And could you clarify where I can find selectEndpoint method ? Search doesn’t find anything.