mediasoup and its client side libraries are designed to accomplish with the following goals:
- Be a SFU (Selective Forwarding Unit).
 - Support both WebRTC and plain RTP input and output.
 - Be a Node.js module or Rust crate in server side.
 - Be a tiny TypeScript and C++ libraries in client side.
 - Be minimalist: just handle the media layer.
 - Be signaling agnostic: do not mandate any signaling protocol.
 - Be super low level API.
 - Support all existing WebRTC endpoints.
 - Enable integration with well known multimedia libraries/tools.
 
mediasoup and its client side libraries provide a super low level API. They are intended to enable different use cases and scenarios, without any constraint or assumption. Some of these use cases are:
- Group video chat applications.
 - One-to-many (or few-to-many) broadcasting applications in real-time.
 - RTP streaming.
 
- ECMAScript 6/Idiomatic Rust low level API.
 - Multi-stream: multiple audio/video streams over a single ICE + DTLS transport.
 - IPv6 ready.
 - ICE / DTLS / RTP / RTCP over UDP and TCP.
 - Simulcast and SVC support.
 - Congestion control.
 - Sender and receiver bandwidth estimation with spatial/temporal layers distribution algorithm.
 - Data message exchange (via WebRTC DataChannels, SCTP over plain UDP, and direct termination in Node.js/Rust).
 - Extremely powerful (media worker thread/subprocess coded in C++ on top of libuv).
 
Try it at v3demo.mediasoup.org (source code).
- Twitter: @mediasoup_sfu
 
You can support mediasoup by sponsoring it. Thanks!

