Ant Media WebRTC Group Call

WebRTC Conferencing for Ant Media Server. First participant.

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.

}).on("roomjoinfailed", e => {
}).on("existingparticipants", (e, sender) => {

Note: To feature a participant select them first or add their stream name to the api method arguments.

WebRTC Conferencing configuration for Ant Media Server. Ant Media Server License is required to play back WebRTC. A trial license will work to play back WebRTC. The default WebRTC app for Ant Media Server is WebRTCAppEE.

Conferencing master participant. Using the conferencing plugin an api is provided to feature and mute a selected participant.

Ant Media default WebSocket signalling server supports room group calls by default. Datachannel setting is required to be turned on in the Ant Media console for custom commands to work.

The config roomName is required to connect to a specific room.

Configured is server side recording via Ant Media rest api. Configure a JWT token if the rest api security is enabled.

Configured is stream token security if configured in the server using a JWT token.

    <div class="flex w-full h-auto my-auto">
      <video class="video-js vjs-default-skin vjs-fluid has-settings" crossorigin="anonymous" controls="" id="antmedia-conference-1"></video>
  <script type="text/javascript">
  	var player = videojs("antmedia-conference-1", {
    "plugins": {
        "peakmeter": {
            "verticalMeter": false
        "rtcconference": {
            "container": "#conference-container",
            "featuredContainer": "#featured-container",
            "participantContainer": "#conference-participant-container",
            "playerTemplate": "<div id=\"${id}\" class=\"conference-player\"><video id=\"${playerid}\" class=\"video-js vjs-default-skin vjs-fluid\" preload=\"none\" controls></video></div>",
            "profile": "../../images/wowza-logo.png",
            "roomContainer": "#room-container",
            "studioMode": true
        "rtcpublisher": {
            "antmedia": {
                "apiToken": "",
                "subscriberCode": "",
                "subscriberId": "",
                "token": ""
            "applicationName": "WebRTCAppEE",
            "autoStartDevice": true,
            "buttons": false,
            "channelName": "data",
            "dataChannel": true,
            "iceServers": [
                    "urls": [
            "publisher": true,
            "recording": {
                "mimeType": "video/mp4",
                "name": "C6Lx6ku6FEXgKtt",
                "server": true
            "roomName": "room1",
            "seperateScreen": true,
            "server": "antmedia-conference",
            "serverURL": ""
        "virtualbackground": {
            "backgroundColor": "000000",
            "bgImage": "../../images/virtualbg.jpg",
            "enable": false
    "sources": [
            "src": "C6Lx6ku6FEXgKtt",
            "type": "application/webrtc"
    "title": "Participant 1"

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