question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

VideoRoom track's owner identification

See original GitHub issue

Participant identification

Jitsi just like Membrane support multiple peers on a single shared peer connection.

There is a problem of identifying each peer based on the incoming tracks. The SFU needs to keep track of its participants (things like display name ect.) and pass that information to the client when needed.

How Jitsi does that?

The low-level code that is responsible for identifying incoming tracks with participants is available here:

https://github.com/jitsi/lib-jitsi-meet/blob/baa78aca40541b87b44d5218bcdef2a7be5fee59/modules/RTC/TraceablePeerConnection.js#L813

Jitsi listens on remote tracks being added. Then it does manual search on the remoteDescription.sdp string to obtain necessary information.

First it checks the transceiver for mid field, if not found then if falls back to searching for msid that equals to the current stream id. (It all depends on what plan the browser is using but as far as I know Unifed Plan is now a standard). Then the sdp is filtered for lines that include mid or msid fields that has been found in previous step. In resulting lines we filter out received lines to get corresponding ssrc.

The main goal here is to obtain corresponding ssrc of incoming track. Then a request is sent to the server with given ssrc to return track’s participant id. And further down the line if participant is not in client’s cache, again a request is sent to obtain participant’s information.

How should we do that?

What fields can we use to query information about given participant? Each participant will see the same mid values, from what I recall msid will differ for each participant same goes with ssrc and when querying the server it will have to identify the caller to get the proper mapping of outgoing streams (with mid it can do a really quick check).

And how should we get participants information, after getting a new track by sending query request or the server itself should first send information about incoming participant?

Issue Analytics

  • State:closed
  • Created 2 years ago
  • Comments:11 (11 by maintainers)

github_iconTop GitHub Comments

1reaction
mat-hekcommented, Apr 20, 2021

Couldn’t we just send the mapping of (mid/msid/whatever) => user_data along with SDP? This case is a bit different than screensharing, at least if we assume that the user data changes only when SDP changes.

0reactions
mickel8commented, Apr 21, 2021

Maybe. It’s worth mentioning that besides ssrc there is also cname which stands for canonical name and is probably more valuable id than ssrc.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Understanding Video Rooms - Twilio
Video Rooms are based on a publish/subscribe model. This means that a Participant can publish media Tracks to the Room. The other Participants ......
Read more >
VideoRoom plugin documentation - Janus WebRTC Server
Notice that, in principle, all published streams will be only identified by their unique mid and by their type (e.g., audio or video)....
Read more >
Video Gallery - Konvi
Konvi's video gallery is a selection of proprietary or public content related to alternative assets - carefully curated anyone looking to diversify their ......
Read more >
when a session id is not destroyed the janus server cannot ...
Viewing tcptracks or netstat will show that the server is receiving a lot of tcp syn_send packets and never receives the new session...
Read more >
Pro Tools Reference Guide - Digidesign
Vari-Fi, Video the Web Way, VideoRAID, VideoSPACE, ... Track Ownership and Conflicting Changes . ... ing the Group ID letter (in either the...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found