Both mediasoup and mediasoup-client refer to the same common entities that are represented in both client and server sides. Those entities are described below:
A Room represents a multi-party conference with N participants (Peers). Within a Room, audio and video tracks generated by a client/browser are relayed to all the participants.
A Peer represents a participant in the conference, thus it has a local (client side) representation and a remote (server side) representation. When a client joins a Room it also gets information about existing and new Peers in the conference.
A Peer holds a set of associated Transport, Producer and Consumer instances.
A Transport represents a path for sending or receiving audio/video RTP and RTCP. In the context of WebRTC this means a network path negotiated by both, the client and the server, via ICE and DTLS. A Transport has an associated entity in both client and server sides.
A Producer represents and handles a media track (audio or video) sent by a client to the server. A Producer has an associated entity in both client and server sides, meaning that both sides (the client app and the server app) can run API methods on it (such as pausing or resuming it).
In order to send the media track to the server, the Producer needs to be provided with a Transport instance.
In mediasoup (server side) a Producer is connected with many Consumers associated to it.
A Consumer represents and handles a media track (audio or video) sent by the server to the client. A Consumer has an associated entity in both client and server sides, meaning that both sides (the client app and the server app) can run API methods on it (such as pausing or resuming it).
Typically, a Consumer has a remote Producer as a source. In fact, an audio Producer created by Alice's Peer will trigger the creation of an audio Consumer in Bob's Peer and all the other Peers.
It's up to the client side application whether to enable/activate a Consumer (by providing a Transport) or not. Once enabled, the corresponding RTP is relayed to the client.
A Profile represents a RTP quality layer and, hence, just makes sense for simulcast streams.
mediasoup defines the following profiles: