Developer

What is Simulcast and Why Does it Matter for Streaming?

Diagram showing how broadcast WebRTC stream qualities can be distributed based on device type such as phones and computers
SUMMARY

Simulcasting is a key feature for streaming, especially in online auction and racing industries, but what is it and why is it so important?


Simulcast is a term that is thrown around regularly in the streaming space, but what is simulcast, why is it useful, and how can I add it to my live stream?

What is Simulcast?

Simulcasting is the process of streaming content at varying qualities, often referred to as bitrates, to viewers. As the stream nears delivery to a viewer, the Selective Forwarding Unit or SFU optimizes for the viewer’s bandwidth and device by delivering the stream most appropriate. If a user is in a low bandwidth environment, for example, they will get a lower quality stream. This trade in quality is considered a better alternative to receiving a stream that loads too slowly.

A diagram demonstrating how three separate WebRTC stream qualities, depicted by colored arrows, can be transferred to an SFU, depicted by a black box, then distributed out to phones and computers based on the quality threshold.
A diagram demonstrating how a stream can be encoded at multiple qualities and then managed by an SFU for the appropriate device.

Is Simulcasting the same as Multistreaming?

Some of the ambiguity around what exactly simulcasting is may arise from the variety of other terms sometimes confused with it. Whilst simulcasting refers to streaming a ladder of different qualities, Multistreaming, often incorrectly used in its place, instead refers to the process of streaming to multiple different locations such as Twitch and YouTube.

Why is Simulcast useful for streaming?

Simulcast is useful for large audiences where network and device conditions vary. The more viewers you have the more likely it is that some viewers will require the stream at a lower quality than the original broadcast. If users don’t receive streams at a quality that matches their available resources they will at best watch the stream with significant buffering or delay and at worst not be able to view the stream at all. 

Since this feature is useful for large audiences Dolby.io Streaming offers it as an option for WebRTC streams. Currently simulcasting on the Dolby.io platform is limited to H264 and VP8 codecs. 

How to publish a Simulcast stream?

There are three main ways to add Simulcast to your Dolby.io WebRTC live stream depending on how you are broadcasting your content.

1. Dolby.io Streaming Broadcaster
The Dolby.io Streaming Broadcaster can be accessed from your Dolby.io Streaming Dashboard. By clicking on the Broadcast button you can open up the broadcaster. From there you can select the gear icon in the bottom right to open up the media settings.

Example of the Dolby.io Streaming Broadcaster settings. You can see the H264 codec is selected and Simulcast switch is turned on. The broadcaster also contains options to throttle bandwidth, stream type, dimensions, and a button to update with the new settings.
Example of the Dolby.io Streaming Broadcaster settings. You can see the H264 codec is selected and Simulcast is turned on.

Under Codec click Simulcast to enable it. Just like that you’ve enabled Simulcast from the broadcaster. When you stream, users will be automatically served a stream at their appropriate quality. You can see this in the stream viewer where users now have the ability to alter the quality of the stream or leave it on Automatic.

Image showing the settings panel on the dolby.io stream viewer with video quality set to auto. The image also depicts a media stats button and the option to report playback issues.
In browser viewer settings with video quality set to auto. By setting quality to auto the SFU picks the most appropriate quality.

2. WebRTC enabled OBS
If you haven’t already heard there is a WebRTC-enabled version of Open Broadcaster Software. Included with the WebRTC-enabled version of OBS is the option to enable simulcast streams straight from OBS. To do this open up settings in the app. Click on Stream, then on Advanced Settings. From Advanced Setting tick Simulcast to enable simulcast streaming from OBS.

Image of OBS stream settings including a number of options from codec, multisource, and simulcast. In the image H264 is selected.
The WebRTC enabled OBS fork stream settings. Note the option to enable Simulcast under advanced settings.

3. Enabling Simulcast in the JavaScript SDK
In addition to the Streaming Broadcaster and OBS, you can also enable and publish Simulcast streams using our JavaScript SDK. To use the Dolby.io Streaming JavaScript SDK (Formerly Millicast) you first must import the SDK via the jsDelivr  CDN inside of your HTML file.

<script src="https://cdn.jsdelivr.net/npm/@millicast/sdk@latest/dist/millicast.umd.js"></script>

Once the SDK is imported you can switch over to your JavaScript file and create a publisher token using credentials found on your Dolby.io Streaming Dashboard.

const streamingToken = () =>
        window.millicast.Director.getSubscriber({
            streamName: DOLBYIO_STREAMING_STREAM_NAME,
            streamAccountId: DOLBYIO_STREAMING_ACCOUNT_ID,
        });

Using the streamingToken and your DOLBYIO_STREAMING_STREAM_NAME we can create a Publish object. Additionally, we need to specify what media we are actually broadcasting. For that, we create a mediaStream object connected to the broadcaster’s web camera. 

const streamingPublish = new window.millicast.Publish(DOLBYIO_STREAMING_STREAM_NAME, streamingToken);
 
const mediaStream = await navigator.mediaDevices.getUserMedia({ audio: true, video: true });

Finally, we define some options for broadcasting being sure to include mediaStream. There are a number of parameters you can add to options including stream recording or bandwidth limits. For this example, we are only interested in including Simulcast, which we set to true.

const mediaStream = await navigator.mediaDevices.getUserMedia({ audio: true, video: true });
 
const options = {
        mediastream: mediaStream
        simulcast: true,
    };
 
await millicastPublish.connect(options);

Once the stream connects viewers will be served a Simulcast stream, automatically configured for their bandwidth and device. To view the stream users can join via a custom live stream viewer or via the in-browser live stream viewer which can be found at the link below.

https://viewer.millicast.com?streamId=<YOUR_ACCOUNT_ID>/<YOUR_STREAM_NAME>

So now that we know how to publish Simulcast streams, what are some industries that benefit from using simulcast?

What is a Simulcast Auction?

The online auction space benefits greatly from simulcasting its live streams. By providing Dolby.io WebRTC streams in a variety of qualities (simulcasting), users joining from low bandwidth environments or mobile devices are still able to participate without constant buffering or delay. This is not to be confused with Multiviewing, the process of receiving multiple different broadcasts such as multiple auctions happening at once. To learn more about Multiviewing and how you can add Multiview to your live streams, check out this guide here

What is Simulcast Racing?

Like online auctions, racing is another industry that benefits from simulcasting streams at different quality thresholds. Because users might be watching a racing stream from a mobile device, it is important that the stream delivered is optimized for the device and the available bandwidth. This process of creating multiple streams for different qualities is called simulcasting and can be done automatically with Dolby.io Streaming.

Final thoughts on Simulcast streaming

Simulcast is an important feature to include for streams with large audiences joining from different devices and networks. By encoding a stream at different qualities users can receive stable content without buffering or significant delays. Dolby.io Streaming provides Simulcast for the H264 and VP8 codecs as part of its WebRTC streaming platform so that platforms aiming to cater to large audiences can do so with the best end-user experience possible. If you are interested in trying out simulcasting with Dolby.io Streaming create a free account or explore our simulcast documentation.

Feedback or Questions? Reach out to the team on TwitterLinkedIn, or reach out to our sales team.

Braden Riggs

Developer Advocate

Born and Raised in Australia and now Living in San Francisco, Braden joined the Developer Relations team in 2021 after graduating from UC San Diego with a degree in data science. Braden loves to create apps and content for the Dolby.io Blog, YouTube channel, and the samples GitHub. When not working you can find Braden surfing, hiking, or exploring San Francisco.

Get Started

Drive real-time interactions and engagement with sub-second latency

We are more than just a streaming solutions provider; we are a technology partner helping you build a streaming ecosystem that meets your goals. Get started for free and as you grow, we offer aggressive volume discounts protecting your margins.

Developer Resources

Explore learning paths and helpful resources as you begin development with Dolby.io.

Copy link
Powered by Social Snap