Wowza Media Studio Group Call Host

WebRTC Studio Conferencing for Wowza Media Server. Host.

Note: Not a live demo, server configuration is just for example. For live working example try the Millicast Publisher and Subscriber example. Or AWS Kinesis Publisher and Subscriber example.

Note: To feature a participant select them first or add their stream name to the api method arguments. Toggle the room view to show the video merger view.

WebRTC Conferencing Studio configuration for Wowza Media Server. Wowza Media Developer and full licence works with WebRTC.

Participants join a lobby area for the host to add / remove the streams to the room.

Conferencing host with graphics accelerated stream merger broadcasting and recording features. Using the conferencing plugin an api is provided to feature and mute a selected participant.

In both the html and stream merger, the ability to show profile poster images when cameras are enabled is supported.

The secondary Websocket Wowza provider project is required for signalling new room partipants after publishing begins. Subscribed streams of participants will be displayed in the configured container selector.

RTMP and server side streams published to the room server application instance will join the room.

Configured is a custom publish token that is verified with the custom Wowza webrtc provider module using a configured shared secret.

Supplied is a custom example websocket signal server Wowza provider project for one to many and group call features. Security token verification is provided by the same publish token.

Configured is server side recording via the conferencing custom websocket provider module. Configure the stream name to record as the WebGL merger stream name ie C6Lx6ku6FEXgKtt-merger

   <div class="flex w-full">
          <div id="wowza-conference-studio-host" class="has-settings conference-player"></div>
  <script type="text/javascript">
  	var player = flowplayer("#wowza-conference-studio-host", {
    "clip": {
        "live": true,
        "mergerSrc": "AYZ8a0thBE5IyI2h-merger",
        "name": "AYZ8a0thBE5IyI2h",
        "sources": [
                "src": "AYZ8a0thBE5IyI2h",
                "type": "application/webrtc"
        "title": "Host"
    "rtc": {
        "applicationName": "webrtc/room2",
        "autoStartDevice": true,
        "buttons": false,
        "conference": {
            "autoPublish": true,
            "bgImage": "../../images/virtualbg.jpg",
            "container": "#conference-container",
            "enableFocus": true,
            "host": true,
            "lobbyContainer": "#conference-participant-container",
            "lobbyPlayerTemplate": "<div id=\"${id}\" class=\"conference-player conference-lobby-player group flex justify-center items-center\"><div id=\"${playerid}\" class=\"fp-mute no-volume no-toggle\"></div><button class=\"invisible group-hover:visible bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-2 absolute font-semibold bg-gradient-to-tr from-iblue-default hover:from-iblue-light to-iblue-light hover:to-iblue-default text-white focus:shadow-outline focus:outline-none text-sm\" x-data=\"{ staged: ${staged} }\" x-text=\"staged ? 'Remove' : 'Add To Room'\" @click.prevent=\"addToRoom($event);\" data-name=\"${name}\">Add To Room</button></div>",
            "logo": "../../images/wowza-logo.png",
            "mergerContainer": "#conference-merge-container",
            "mergerOnly": false,
            "playerTemplate": "<div id=\"${id}\" class=\"conference-player\"><div id=\"${playerid}\" class=\"fp-mute no-volume\"></div></div>",
            "profile": "../../images/wowza-logo.png",
            "studioMode": true
        "publishToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJ3ZWJydGMiLCJpYXQiOjE2MzczMzAyNTksImV4cCI6MTY2ODg2NjI1OSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsInN0cmVhbU5hbWUiOiJDNkx4Nmt1NkZFWGdLdHQifQ.4_38rdgyqWabGvoV6WZREjrqevVeGIgCKK7xOknwGx4",
        "publisher": true,
        "recording": {
            "codec": "VP9",
            "mimeType": "video/webm",
            "name": "C6Lx6ku6FEXgKtt-merger",
            "server": true
        "seperateScreen": true,
        "server": "wowza-conference",
        "serverURL": "",
        "verticalMeter": false
    "share": false

player.on("selectedParticipant", (e, participant) => {
console.log("selected participant", participant);
}).on("unselectedParticipant", (e, participant) => {
console.log("unselected participant", participant);
}).on("participantleft", (e, sender) => {
}).on("participantfeatured", (e, sender) => {
}).on("participantunfeatured", (e, sender) => {
}).on("leaveroom", e => {
}).on("roomjoinfailed", e => {
}).on("existingparticipants", (e, streams) => {
console.log("Existing Participants ", streams);
}).on("sendmessage", (e, message) => {
console.log("Signal Server Send Message: ", message);
}).on("gotmessage", (e, message) => {
console.log("Signal Server Receive Message: ", message);
}).on("roomPlayer", (e, item) => {
console.log("Room Player ", item);
}).on("participantPlayer", (e, item) => {
console.log("Lobby Player ", item);