Support both WebRTC and plain RTP input and output.
Be a Node.js module in server side.
Be a tiny JavaScript 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.
Architecture
Use Cases
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.
Features
ECMAScript 6 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.
SCTP support (WebRTC DataChannels and SCTP over plain UDP).
Extremely powerful (media worker subprocess coded in C++ on top of libuv).