mediasoup-demo v3
August 14, 2026 · View on GitHub
A demo application of mediasoup.
Try it online at https://v3demo.mediasoup.org
Resources
- mediasoup website and documentation: mediasoup.org
- mediasoup support forum: mediasoup.discourse.group
Configuration via query parameters
By adding query parameters into the URL you can set certain settings of the application:
| Parameter | Type | Description | Default Value |
|---|---|---|---|
roomId | String | Id of the room | Autogenerated |
displayName | String | Display name of your participant | Autogenerated |
handlerName | String | Handler name of the mediasoup-client Device instance | Autodetected |
forceTcp | Boolean | Force RTC (audio/video/datachannel) over TCP instead of UDP | false |
produce | Boolean | Enable sending of audio/video | true |
consume | Boolean | Enable reception of audio/video | true |
mic | Boolean | Enable microphone by default | true |
webcam | Boolean | Enable webcam by default | undefined (it respects stored settings, initially true) |
datachannel | Boolean | Enable DataChannels | true |
preferLocalCodecsOrder | Boolean | Prefer the codecs order of the browser instead of the codecs order configured in the server | false |
forcePCMA | Boolean | Force PCMA codec for microphone | false |
forceVP8 | Boolean | Force VP8 codec for webcam and screen sharing | false |
forceH264 | Boolean | Force H264 codec for webcam and screen sharing | false |
forceVP9 | Boolean | Force VP9 codec for webcam and screen sharing | false |
forceAV1 | Boolean | Force AV1 codec for webcam and screen sharing | false |
enableWebcamLayers | Boolean | Enable simulcast or SVC for webcam | true |
enableSharingLayers | Boolean | Enable simulcast or SVC for screen sharing | true |
webcamScalabilityMode | String | scalabilityMode for webcam | 'L1T3' for VP8/H264 (in each simulcast encoding), 'L3T3_KEY' for VP9 |
sharingScalabilityMode | String | scalabilityMode for screen sharing | 'L1T3' for VP8/H264 (in each simulcast encoding), 'L3T3' for VP9 |
numWebcamSimulcastStreams | Number | Number of streams for simulcast in webcam | 3 |
numSharingSimulcastStreams | Number | Number of streams for simulcast in screen sharing | 3 |
videoContentHint | String | Value to apply to track.contentHint in produced video tracks (for webcam and screen sharing) | '' |
screenSharing4K | Boolean | Use 4K resolution for screen sharing | false |
info | Boolean | Display detailed information about media transmission over each peer | false |
stats | Boolean | Display detailed information about WebRTC stats | false |
faceDetection | Boolean | Run face detection | false |
externalVideo | Boolean | Send an external video instead of local webcam | false |
e2eKey | String | Key for media E2E encryption/decryption (just works with some OPUS and VP8 codecs) | |
consumerReplicas | Number | Create artificial replicas of yourself and receive their audio and video (not displayed in the UI) | 0 |
usePipeTransports | Boolean | If true, each room will use separate mediasoup routers to produce and consume and will communicate them with pipe transports | false |
disableBwe | Boolean | Disable Bandwidth Estimation (BWE). If true, no BWE logic will be run in mediasoup-worker. | false |
absCaptureTimeForAudio | Boolean | Enable "abs-capture-time" RTP extension for audio | false |
absCaptureTimeForVideo | Boolean | Enable "abs-capture-time" RTP extension for video | false |
rtcstatsUrl | String | If present, Websocket URL to connect to an rtcstats-server, including token (it overrides the providers.rtcstatsUrl value in config.mjs in the server) |
Installation
- Clone the project:
git clone https://github.com/versatica/mediasoup-demo.git
cd mediasoup-demo
-
Ensure you have installed the dependencies required by mediasoup to build.
-
Set up the mediasoup-demo server, read server/README.md.
-
Set up the mediasoup-demo browser app:
cd app
npm install --legacy-peer-deps