Customizable Real-time Communication Engine/SFU library focused on WebRTC.
Note
This project has been archived and will no longer be maintained or updated.
If your business depends on Membrane RTC Engine or you are interested in custom feature development, please reach out to us at: [email protected].
For usage examples, please refer to:
- the
examples/directory of this repository, - our membrane_videoroom repository,
- our fishjam repository.
This repository currently holds the following packages:
engine- RTC Engine, the main package responsible for exchanging media tracks between Endpoints,ex_webrtc- ExWebRTC 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,recording- Recording Endpoint, responsible for saving incoming tracks to pointed storages.
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.25.0"},
{:membrane_rtc_engine_ex_webrtc, "~> 0.2.0"}
]
endThe integration_test/ directory
contains test scenarios utilising multiple Endpoints of different types.