Ant Media WebRTC Group Call

WebRTC Conferencing for Ant Media Server. Host with merger.

Layouts

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

    <div class="flex w-full h-auto my-auto">
          <div id="antmedia-conference-host" class=""></div>
  </div>
  <script type="text/javascript">
  	var player = jwplayer("antmedia-conference-host").setup({
    "aspectratio": "16:9",
    "mergerSrc": "C6Lx6ku6FEXgKtt-merger",
    "playbackRateControls": true,
    "plugins": {
        "../../js/webrtcconference.js": {
            "autoPublish": true,
            "bgImage": "../../images/virtualbg.jpg",
            "container": "#conference-container",
            "enableFocus": true,
            "featuredContainer": "#featured-container",
            "fullscreenFeatured": 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}\"></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}\"></div></div>",
            "profile": "../../images/wowza-logo.png",
            "roomContainer": "#room-container",
            "studioMode": true
        },
        "../../js/webrtcmerger.js": {
            "autoPublish": true,
            "bgImage": "../../images/virtualbg.jpg",
            "enableFocus": true,
            "host": true,
            "mergerApplication": "WebRTCAppEE",
            "mergerContainer": "#conference-merge-container",
            "mergerPreview": true
        },
        "../../js/webrtcpeakmeter.js": {
            "verticalMeter": false
        },
        "../../js/webrtcpublisher.js": {
            "antmedia": {
                "apiToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.b8_QMj7F9lJ7aabDfswdXh6z3q4OkgLrgUtlvNfURsQ",
                "subscriberCode": "",
                "subscriberId": "",
                "token": ""
            },
            "applicationName": "WebRTCAppEE",
            "autoStartDevice": true,
            "buttons": false,
            "channelName": "data",
            "dataChannel": true,
            "iceServers": [
                {
                    "urls": [
                        "stun:stun.l.google.com:19302",
                        "stun:stun1.l.google.com:19302",
                        "stun:stun2.l.google.com:19302",
                        "stun:stun3.l.google.com:19302",
                        "stun:stun4.l.google.com:19302"
                    ]
                }
            ],
            "meterAutoStart": false,
            "opus": {
                "usedtx": 1
            },
            "publisher": true,
            "recording": {
                "mimeType": "video/mp4",
                "name": "C6Lx6ku6FEXgKtt-merger",
                "server": true
            },
            "roomName": "room1",
            "seperateScreen": true,
            "server": "antmedia-conference",
            "serverURL": "rtc.electroteque.org:5443"
        }
    },
    "sources": [
        {
            "appName": "webrtc",
            "file": "C6Lx6ku6FEXgKtt",
            "live": true,
            "publisher": true,
            "type": "mp4"
        }
    ],
    "title": "Host",
    "width": "100%"
});

player.on("ready", function() {
player.on("selectedParticipant", (participant) => {
console.log("selected participant", participant);
}).on("unselectedParticipant", (e, participant) => {
console.log("unselected participant", participant);
}).on("participantleft", (sender) => {
}).on("participantfeatured", (sender) => {
}).on("participantunfeatured", (sender) => {
}).on("leaveroom", e => {
}).on("roomjoinfailed", e => {
}).on("existingparticipants", (sender) => {
});
});
  </script>