/membrane_rtc_engine

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

Primary LanguageElixirApache License 2.0Apache-2.0

Membrane RTC Engine

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

Usage

For usage examples, please refer to our membrane_demo or membrane_videoroom repositories.

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.

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. Ultimately, at a certain point in the future, the Endpoints are going to be entirely separate from each other (right now, due to certain shared modules, the HLS and RTSP Endpoints both depend on the WebRTC Endpoint).

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.16.0"},
    {:membrane_rtc_engine_webrtc, "~> 0.1.0"}
  ]
end

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