30 releases (8 breaking)

0.8.2 Jul 8, 2021
0.7.2 May 31, 2021
0.7.0 Mar 31, 2021
0.3.0 Dec 27, 2020
0.0.8 Nov 29, 2020

#84 in Multimedia

Download history 36/week @ 2021-04-08 127/week @ 2021-04-15 21/week @ 2021-04-22 46/week @ 2021-04-29 6/week @ 2021-05-06 44/week @ 2021-05-13 22/week @ 2021-05-20 55/week @ 2021-05-27 15/week @ 2021-06-03 103/week @ 2021-06-10 179/week @ 2021-06-17 70/week @ 2021-06-24 79/week @ 2021-07-01 78/week @ 2021-07-08 102/week @ 2021-07-15 41/week @ 2021-07-22

259 downloads per month
Used in hyperspeed-broadcast

ISC license

104MB
3M SLoC

GNU Style Assembly 1.5M SLoC // 0.0% comments Perl 1M SLoC // 0.0% comments C 335K SLoC // 0.1% comments Assembly 237K SLoC // 0.0% comments C++ 65K SLoC // 0.1% comments Python 20K SLoC // 0.3% comments Rust 14K SLoC // 0.0% comments Prolog 642 SLoC Automake 636 SLoC // 0.1% comments Shell 410 SLoC // 0.1% comments Emacs Lisp 292 SLoC // 0.2% comments Batch 55 SLoC // 0.1% comments JavaScript 21 SLoC

mediasoup v3

Website and Documentation

Support Forum

Design Goals

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/Rust crate 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/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).

Demo Online

Try it at v3demo.mediasoup.org (source code).

Authors

Sponsor

You can support mediasoup by sponsoring it. Thanks!

License

ISC

Dependencies

~4–5.5MB
~118K SLoC