Search code examples
node.jswebrtcjanussimple-peermediasoup

What is the role of SFU., Janus, mediasoup or medooze. on a webRTC application


I'm using a webRTC application with a simple-peer npm package.

I want to know what is the purpose of all these topics (SFU., Janus, mediasoup or medooze.) and how can I integrate them to make my application performance greater?

PS: I'm using a node.js server the bundle the requesting and signaling between peers on my architecture. are those servers and services required to make my application performance well?

Hope I could find an answer here ...


Solution

  • With regular webrtc every peer needs to send and receive its data seperately to every other peer. So let's say there are 10 peers that do a video chat. Then every peer has to send their video 9 times simultaneously and also receive 9. Every peer would use a big amount of upload bandwidth which they usually don't have.

    SFUs solve this problem by every peer sending only one stream to a mediaserver and letting that server do all the routing to the other peers. This way every peer only sends 1 stream and receives 9. The download max download bandwidth is usually higher than the upload bandwidth.

    There is also something called simulcast which automatically switches the quality of depending on the available bandwidth of the peer. I have been able to achieve this with mediasoup.