Millicast WebRTC Simulcast

WebRTC Publisher configured for multi bitrate simulcast

Advanced
Bitrate
Video Resolution (ideal)
Video Framerate (ideal)
Audio/Video Inputs
Video Input Source
Audio Input Source
Audio Output Source
Note: A working live example to demonstrate live WebRTC publishing and subscribe features.

A demonstration of multi bitrate WebRTC simulcast support with Millicast. Chrome and Firefox support multi layer bitrates for H264 and VP8 codecs via WebRTC simulcast features.

Each level can be configured with a maximum rate, and then a downscale resolution value. The main bitrate selection menu updates the bitrate of the first high bitrate level.

In the future with AV1 codec support, simulcast layer features are supported with the codec and therefore simulcast is not required.

Simulcast is also supported using Millicast's WebRTC OBS encoder. In the settings configure the publish token, the stream name and check the simulcast option.

{
  "millicast": {
    "accountId": "",
    "publishToken": "",
    "codec": "h264"
  },
  "rtc": {
    "autoStartDevice": true,
    "server": "millicast",
    "simulcast": true,
    "sendEncodings": [
                  { "rid": 'high', "maxBitrate": 1500000, "active": true, "priority": "high"},
                  { "rid": 'middle', "maxBitrate": 500000, "active": true, "scaleResolutionDownBy": 2.0},
                  { "rid": 'low', "maxBitrate": 100000, "active": true, "scaleResolutionDownBy": 4.0}
    ],
    "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"
        ]
      }
    ],
    "publisher": true,
    "toggleScreen": true
  }
}
    
   <div class="flex w-full">
          <div id="millicast-simulcast" class=""></div>
  </div>
  <script type="text/javascript">
  	var player = flowplayer("#millicast-simulcast", {
    "clip": {
        "live": true,
        "sources": [
            {
                "src": "C6Lx6ku6FEXgKtt",
                "type": "application/webrtc"
            }
        ]
    },
    "millicast": {
        "accountId": "huaHNT",
        "codec": "h264",
        "publishToken": "31ae7f65a04762b5e44b56b0eb2b2cd6dae169c05d13955af09c526399378592"
    },
    "rtc": {
        "autoStartDevice": 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"
                ]
            }
        ],
        "publisher": true,
        "sendEncodings": [
            {
                "active": true,
                "maxBitrate": 1500000,
                "priority": "high",
                "rid": "high"
            },
            {
                "active": true,
                "maxBitrate": 500000,
                "rid": "middle",
                "scaleResolutionDownBy": 2.0
            },
            {
                "active": true,
                "maxBitrate": 100000,
                "rid": "low",
                "scaleResolutionDownBy": 4.0
            }
        ],
        "server": "millicast",
        "simulcast": true,
        "toggleScreen": true
    },
    "share": false
});
  </script>