Simulcast: Simultaneous casting and its beauty

Simulcast: Simultaneous casting and its beauty

·

5 min read

simulcast.png

Huddle01 is improving how we talk to each other over the internet by putting the product first. We are always working to improve the app's user experience (UX) and overall efficiency, and we are also building a protocol that can be used for all internet-based communication.

Today, we’ll be discussing simulcast, a concept derived from "simultaneous casting."

If you are good at using Google, you’ll get multiple definitions for the same term. To clear up the confusion, let me explain what the different definitions are and why each is accurate in their specific contexts.

  1. A tool enables people to simultaneously stream on different platforms in real-time. If you love playing games and streaming, you’ll stream on Twitch, Youtube, and sometimes even StreamYard.

  2. A method to send multiple videos of different resolutions to enable real-time communications, I know it's a bit complicated, but this is what we’ll be understanding in this blog further.

Simulcast seems like a complicated concept and some optimizations are associated with it but don’t worry, I got you covered. We’ll understand from the core why it is necessary and how it is an effective solution despite its cons. Let’s start with bandwidth and what it is!

What is bandwidth 🤔

bandwidth.png

Ah! The great thing that made people millionaires in the age of the Internet was: But what does it even mean? Bandwidth usually means if you have some time for a task or not. Even today, when people talk about taking on additional work, they use the term.

Bandwidth means how fast the data can be shared with the network. It is a measure of the speed of data transfer over the internet. It is measured in bits/sec or bytes/sec. If you think about it, optical fiber uses light as a medium of signaling and data transfer. That’s why when you install an optical fiber, you get super-fast speeds.

In computer science or in terms of the Internet, we usually use the terms "internet speed" and "bandwidth" as synonyms.

But, what does it actually mean?

People have different bandwidths for communication over the internet, so they can only send and receive so much information for a seamless experience. That’s where different concepts come into play.

We need to understand that most of the world still doesn’t have daily access to computers and bandwidth is no more than 35 Mbps. The problem with mobile users is that the bandwidth isn't as stable as compared to LANs. Because of this, many improvements are made to the application itself so that users can have a smooth experience.

Problems with low bandwidth 😢

problems with slow bandwidth.png

We know different users have different bandwidths. Along with this, different users also have different computational powers. Someone may have a gaming setup. Someone may join in from the phone. You have to consider all the factors!

That’s why we also need to consider the case where we have users with slow bandwidth, as we already covered the computational issue in our earlier blog, where we discussed SFU.

The real-world issue is that, because many people have variable bandwidths, some might not be able to receive the full information from an audio or video source. This would cause the entire system to work on lower bandwidth because it would have to cater to just one user with terrible internet.

Let’s understand this with an example,

You are out with your friends. While hanging out, everyone suggests that we get to eat something. In a group of four friends, three of you are non-veg lovers, and one is pure vegan. When you get to order, you realize that you are at a place that only serves meat. This won’t work as one of your friends is a vegetarian. So you get to the next place, and it turns out it is pure veg, so you’ll have vegan food. That’s how webRTC works.

That’s where simulcasting comes in. Let’s see how.

What is Simulcast 👀

what is simulcast.png

Simulcast, as mentioned earlier, is a word made by combining Simultaneous and Casting, i.e., Simulcasting. The term is pretty easy to understand.

People had different bandwidths, which was a problem. Eventually, everyone had to work on the lowest bandwidth, even though they had the resources and bandwidth to set up better connections. Simulcast works as it sends different quality videos to the Huddle01 media server, such as the server deciding which quality is best as well as sustainable for everyone present in the call.

simulcast exampl.png

Going back to our previous example, when you have to eat vegetarian food because one person in a group of five was unable to eat meat. Well, Simulcast is like going to a mixed restaurant where they serve both meat and vegetarian food.

Simulcast makes video communication better because it automatically changes based on the bandwidth and processing power of both the sender and the receiver. This makes the user experience better because the architecture will eventually change itself to give you the best possible experience. It's like how YouTube automatically changes the quality of videos when there are bandwidth problems.

Huddle01 and Simulcast 🤝

huddle01.png

We also make use of simulcast to ensure that the user's interaction with our product is as seamless as possible. In addition to this, we also provide developers who are interested in utilizing the tech stack with an SDK, as well as I-frames and APIs.

The disadvantages of simultaneous broadcasting include:

  • Users who have access to large bandwidth and sufficient processing power typically send more data.
  • If a computer is already engaged in an intensive task, sending different videos to a server is problematic because encoding would further drain CPU usage.

But, these are some small trade-offs made in implementing Simulcast with a media server.

That's all we have to say from our end! If you have any questions, suggestions, or team-ups in mind, reach out on Twitter or land on our Discord!