Simulcast low quality

#1

Hi,

  • I’m using lib-jitsi-meet directly for my custom UI.
  • I do not pass constraints anywhere, just using the device ids returned from “mediaDevices.DEVICE_LIST_CHANGED” event.
  • i have a 720p camera.

problem:
the image looks great on the sender side, but received blurry on the receiver side (both clients are chrome tabs on my dev machine, so there’s no bandwidth limit or something like this).

  • when i set {disableSimulcast: true} the image on the receiver side is great as on the sender side.

questions:

  1. how can i use Simulcast and still enjoy great quality when the bandwidth is high?
  2. when using jitsi-meet directly, does the {constraints: …} in config.js only affect the selected camera/stream or also affects the encoding of the stream?
  3. which API in lib-jitsi-meet expect the constraints?

thanks in advance! for jitsi and for all the help you give us the community around jitsi!

0 Likes

#2

In order to have the bridge forward the high quality stream, your client needs to ‘select’ the endpoint. It’s a message the jitsi-meet client sends to tell the bridge who it is displaying on the main stage (big) and therefore who it should receive high quality for (by default we only forward the low quality stream for thumbnails)

0 Likes

#3

I don’t remember the exact name, but look around for something like sendSelectedEndpointMessage

0 Likes

#4

10x bbaldino, i’ll check this out.

what about passing constraints to lib-jitsi-meet? let’s say i want to prevent the user’s stream to 360p, how can i do that?

0 Likes

#5

You need to pass constraints like this one: https://github.com/jitsi/jitsi-meet/blob/master/config.js#L103

0 Likes

#6

Do you mean limit the resolution of what client A is sending? Or limit what resolution Client B sees for Client A?

0 Likes

#7

I know, but I’m using lib-jitsi-meet directly, so I’m not sure if it applies…

0 Likes

#8

Resolution of client A.
Although, it would be nice to let client B choose the received resolution :slight_smile:

0 Likes

#9

We pass the entire config object to lib-jitsi-meet, so that applies too. You can also select the received quality by calling setReceiverVideoConstraint in the conference object and passing the desired max frame height.

0 Likes

#10

Hi,

  1. @ damencho - I’m using lib-jitsi-meet directly and moving config.js like object with low resolution to the following api, but it doesn’t seem to have any affect (it does work in jitsi-meet):
  • JitsiMeetJS.init
  • connection = JitsiMeetJS.JitsiConnection
  • connection.initJitsiConference
  1. @ bbaldino - i see the selectParticipant API in https://github.com/jitsi/lib-jitsi-meet/blob/master/doc/API.md. i guess this what you were talking about :slight_smile:
  2. @ saghul - 10q, i haven’t found this method in the lib-jitsi-meet API docs, but i’ll give it a chance, and make a push request if needed.

10x guys!!

0 Likes

#11

answering myself for anyone who might need this info:

  1. the constraints object should be passed to JitsiMeetJS.createLocalTracks
  2. see selectParticipant in https://github.com/jitsi/lib-jitsi-meet/blob/master/doc/API.md
  3. setReceiverVideoConstraint is missing from the docs (#2), but is available and accept a number (180, 360, 720 or 1080).

i’ll create a pull request for docs asap.

1 Like

#12

Thank you so much for documenting those!

1 Like