membrane_rtc_engine

Membrane RTC Engine and its client library


Keywords
membrane, multimedia-systems, realtime-communication, sfu, webrtc
License
Apache-2.0

Documentation

Membrane RTC Engine

Customizable Real-time Communication Engine/SFU library focused on WebRTC.

Usage

For usage examples, please refer to:

Repository structure

This repository currently holds the following packages:

  • engine - RTC Engine, the main package responsible for exchanging media tracks between Endpoints,
  • webrtc - WebRTC Endpoint, responsible for establishing a connection with some WebRTC client (mainly browser) and exchanging media with it,
  • hls - HLS Endpoint, responsible for receiving media tracks from all other Endpoints and saving them to files by creating HLS playlists,
  • rtsp - RTSP Endpoint, responsible for connecting to a remote RTSP stream source and sending the appropriate media track to other Endpoints,
  • file - File Endpoint, responsible for reading track from a file, payloading it into RTP, and sending it to other Endpoints,
  • sip - SIP Endpoint, responsible for establishing a connection with some SIP device (e.g. phone) and exchanging media with it.

For more info about a given Endpoint, refer to its documentation.

Each Endpoint is a separate package with its own source files, dependencies and tests. To use a certain Endpoint in your app, you have to declare it in your dependencies list (as well as the Engine), e.g.

def deps do
  [
    {:membrane_rtc_engine, "~> 0.20.0"},
    {:membrane_rtc_engine_webrtc, "~> 0.6.0"}
  ]
end

The integration_test/ directory contains test scenarios utilising multiple Endpoints of different types.