Red5 Pro Mix-Minus Audio Engine

The mix-minus audio engine is used in conjunction with a Mixer to create video conferences where participants receive a single mixed video stream and a mixed minus version of the conference audio to prevent feedback. In addition to the mix-minus feature, the implementation determines the three loudest participants and provides only their audio to the presenters. The audio mix-minus feature is meant to be used with a Mixer that will create the composite video returned to conference participants. The current mix-minus implementation supports WebRTC clients using Chrome. It also requires the live streams of a conference to be published to the Origin of the final mixer in a composition to allow it to generate the mix-minus streams.

Using the Red5 Pro Mixer

The following components are required to use the Red5 Pro Mixer:

  • HTML5 Page for the Mixer
  • Optional Editing Front-end
  • Optional Editing Back-end

These components and their implementation depend on the use case and requirements of the application. To help developers get started, Red5 Pro provides a set of testbeds that showcase possible implementations for different use cases.

Simple Composition with Static HTML5 Page for the Mixer

This composition requires a single HTML5 page that is used for creating the composition. The page determines the look and content of the composite stream created by the Mixer. The Mixer loads this page and publishes it and its content as it would a screen share stream. Therefore, all content displayed on the page will also be displayed in the composite stream.

As a simple use case, consider using the Mixer to create a composite stream that includes two live streams. This is implemented using an HTML5 page that includes two players that subscribe to the streams to show in the composite stream. At any time the page will render the two live streams and the mixer will capture and broadcast these into a single composite stream.

For simple use cases, where the content of the composite stream does not change over time, a single HTML5 page is sufficient.

Complex Composition with Dynamic HTML5 Page for the Mixer

Complex use cases where the composite stream is updated in real-time involve an HTML5 page for the mixer that can change its content based on commands sent by external processes. An example of such a use case is a production scenario where the composite stream is the program feed for the audience and is managed by one or more Editors that control the content of the feed in real-time.

Editing Front-end and Back-end

In the example above the editing front-end is required to allow Editors to remotely control the HTML5 page loaded into the Mixer. Similarly, the editing back-end is required to receive the commands from the Editors and forward them to the loaded HTML5 page.

A simple solution consists of using a WebSocket server for the back-end and a WebSocket client in both the Editor front-end and HTML5 page loaded into the mixer. In this way, the WebSocket server can easily forward the update commands from Editors to HTML5 pages. As a result, the HTML5 page can parse the commands to subscribe to new streams, change audio settings, update its layout through JavaScript and CSS, and more. As soon as the commands are applied the composite stream will update accordingly, continuing to show the contents of the HTML5 page.

Red5 Pro provides a set of testbeds that showcase possible implementations for the Front-end and Back-end for different use cases.