Skip to main content

Understanding mediasoup

mediasoup is a powerful WebRTC SFU (Selective Forwarding Unit) library. This guide explains how it works in simple terms.

What is an SFU?​

An SFU (Selective Forwarding Unit) is a server that receives media streams from participants and forwards them to others. Unlike peer-to-peer, all media flows through the server.

Peer-to-Peer (Mesh) - The Problem​

Problem: Each person sends to everyone (N×N connections). With 4 people, that's 6 connections. With 10 people, that's 45 connections!

SFU Architecture - The Solution​

Solution: Each person sends once, server forwards to everyone else. Scales much better!

Core Concepts​

1. Worker​

A Worker is a separate process that handles media. Think of it as a "media engine."

Key points:

  • One Worker per CPU core (recommended)
  • Workers are isolated - if one crashes, others continue
  • Workers handle the heavy lifting of media processing

2. Router​

A Router is like a "virtual room" inside a Worker. It routes media between participants.

Key points:

  • One Router per conference room (typically)
  • Router knows which media goes where
  • Participants in the same Router can exchange media

3. Transport​

A Transport is the network connection between a client and the server. It carries media data.

Each participant typically has 2 transports:

  • Send Transport - for sending their media (camera, mic, screen)
  • Receive Transport - for receiving others' media

4. Producer​

A Producer sends media to the server. When you share your camera, you create a Producer.

Producer types:

  • audio - Microphone
  • video - Camera
  • video (with screen label) - Screen share

5. Consumer​

A Consumer receives media from the server. When you see someone's video, that's a Consumer.

Key insight: One Producer can have many Consumers. Bob's camera creates 1 Producer, but Alice, Charlie, and Dave each get their own Consumer for it.

Complete Flow Diagram​

Here's how everything connects when Alice joins a room and shares her camera:

RTP Capabilities​

Before producing or consuming, clients and server exchange "RTP Capabilities" - a list of supported codecs and features.

Simulcast​

Simulcast sends multiple quality layers of the same video. The server can forward different qualities to different receivers.

Summary​

ConceptWhat it isAnalogy
WorkerProcess handling mediaKitchen in a restaurant
RouterVirtual room for participantsA private dining room
TransportNetwork connectionThe waiter serving your table
ProducerSends media to serverChef preparing your dish
ConsumerReceives media from serverYou eating the dish

Next Steps​