membrane_rtc_engine
membrane_rtc_engine copied to clipboard
Customizable Real-time Communication Engine/SFU library focused on WebRTC.
Membrane RTC Engine
Customizable Real-time Communication Engine/SFU library focused on WebRTC.
Usage
For usage examples, please refer to:
-
the
examples/
directory of this repository, - our membrane_videoroom repository,
- our jellyfish repository.
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, -
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.22.0"},
{:membrane_rtc_engine_webrtc, "~> 0.8.0"}
]
end
The integration_test/
directory
contains test scenarios utilising multiple Endpoints of different types.