33 releases

new 0.9.3 Jul 4, 2025
0.9.2 Mar 26, 2025
0.9.1 Aug 12, 2024
0.9.0 May 10, 2024
0.1.0 Mar 31, 2021

#272 in Video

Download history 43/week @ 2025-03-16 187/week @ 2025-03-23 59/week @ 2025-03-30 103/week @ 2025-04-06 30/week @ 2025-04-13 37/week @ 2025-04-20 52/week @ 2025-04-27 29/week @ 2025-05-04 127/week @ 2025-05-11 46/week @ 2025-05-18 87/week @ 2025-05-25 55/week @ 2025-06-01 76/week @ 2025-06-08 70/week @ 2025-06-15 97/week @ 2025-06-22 123/week @ 2025-06-29

371 downloads per month
Used in 2 crates (via mediasoup)

ISC license

2.5MB
65K SLoC

C++ 62K SLoC // 0.1% comments FlatBuffers Schema 1.5K SLoC // 0.0% comments Python 637 SLoC // 0.2% comments Rust 227 SLoC // 0.1% comments Shell 204 SLoC // 0.0% comments JavaScript 56 SLoC // 0.1% comments

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 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.

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

Social

Sponsor

You can support mediasoup by sponsoring it. Thanks!

License

ISC

Dependencies

~0.5–3.5MB
~56K SLoC