Wowza Media WebRTC Group Call Master

WebRTC Conferencing for Wowza Media Server. Master with merger

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 configuration for Wowza Media Server. Wowza Media Developer and full licence works with WebRTC.

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

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 conferenceContainer container selector.

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-master" class="has-settings"></div>
  </div>
  <script type="text/javascript">
  	var player = flowplayer("#wowza-conference-master", {
    "clip": {
        "live": true,
        "mergerSrc": "C6Lx6ku6FEXgKtt-merger",
        "sources": [
            {
                "src": "C6Lx6ku6FEXgKtt",
                "type": "application/webrtc"
            }
        ],
        "title": "Participant 1"
    },
    "rtc": {
        "applicationName": "webrtc/room1",
        "autoStartDevice": true,
        "buttons": false,
        "conference": {
            "autoPublish": true,
            "bgImage": "../../images/virtualbg.jpg",
            "container": "#conference-container",
            "enableFocus": true,
            "master": true,
            "mergerContainer": "#conference-merge-container",
            "mergerOnly": false
        },
        "publishToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJ3ZWJydGMiLCJpYXQiOjE2MzczMzAyNTksImV4cCI6MTY2ODg2NjI1OSwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsInN0cmVhbU5hbWUiOiJDNkx4Nmt1NkZFWGdLdHQifQ.4_38rdgyqWabGvoV6WZREjrqevVeGIgCKK7xOknwGx4",
        "publisher": true,
        "recording": {
            "codec": "VP9",
            "mimeType": "video/webm",
            "name": "C6Lx6ku6FEXgKtt-merger",
            "server": true
        },
        "seperateScreen": true,
        "server": "wowza-conference",
        "serverURL": "rtc.electroteque.org",
        "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);
});
  </script>