GstWebRTC - MCU Demo Application

From RidgeRun Developer Connection
Revision as of 14:28, 7 March 2019 by Jcruz (talk | contribs)
Jump to: navigation, search

AppRTC


Home

Contact Us



Demo Application Objective

The Multipoint Control Unit (MCU) application is a system built in Python for demonstrate the capabilities of GstRrWebRTC. The main function of the MCU is to enable a multiparty conference system between different WebRTC endpoints. To do so it establishes a bidirectional peer-to-peer connection with each device, receives their incoming streams and returns, for each endpoint, the combination of the streams of the other endpoints. Figure 1 depicts graphically this idea.

Figure 1. MCU system general use case

The bidirectional channel between an endpoint and the MCU can be audio, video, data or any combination of them. It is not required that the same configuration is used for each endpoint. For example, endpoint 1 and 2 may be configured with audio+video, while endpoint 3 may be configured with video only.

The MCU is composed by three different components:

  • Signaler
  • Mixer
  • Web Server

These components are completely independent at the point that they could be deployed in different servers each, if desired. Figure 2 shows this concept.

Figure 2. Component breakdown of the MCU

Features

The components shown in Figure 2, although independent, interact with each other. The Signaler is the service that establishes a connection between an endpoint and the MCU. The connection is established peer-to-peer with the Mixer which combines the streams from all the other endpoints and returns that. The Web Server hosts a web page that may be used as a browser endpoint. Each component is described in further detail below:

Signaler

The Signaler handles the WebRTC handshaking process in order to establish a connection between the endpoints and the MCU.

  • Each connection can have a different set of streams (audio, video, data).
  • Connections and disconnections are dynamically.
  • Each conference occurs in a different room.
  • A max number of participants per room configuration is enabled.
  • A room id configuration is enabled.
  • Each connection is identified by a unique name.

Mixer

The Mixer receives the streams provided by each endpoint, builds a single resulting stream and sends it back to each endpoint.

  • New endpoints are added dynamically.
  • An endpoint can be removed dynamically.
  • The video streams must be combined in a mosaic.
  • The mixer can compute the mosaic configuration that best displays the videos.
  • The audio streams can be added together.
  • The data streams can be sent sequentially.
  • The quality of the streams can be dynamically and independently configured according to the available bandwidth of each connection.

Web Server

The Web Server hosts a web page that could be used as an endpoint in a conference. It is not required for this endpoint to participate in the conference. It is just an example of one possible endpoint.

  • The web page works by using Google Chrome.
  • A list of connected endpoints is displayed.
  • A placeholder for the connection id is provided prior to connecting.
  • A placeholder for the room id is provided.
  • A disconnect button is provided to exit the ongoing.
  • No page refresh is needed to perform consecutive connections/disconnections.

Usage Instructions

Getting the Code

The source code of the application can be downloaded as follows:

git clone git@github.com:RidgeRun/rrtc.git

Installation Instructions

  • Open the downloaded folder on:
cd rrtc/mixer
  • Install the application:
sudo ./setup.py install
  • Run the application:
rrtc_mixer
  • Open Google Chrome




AppRTC


Home

Contact Us