Oftentimes we are asked how to deal with poor network conditions. One answer is to use Cauldron, our new Transcoding Solution. Cauldron allows the user's device to respond to poor and changing network conditions.
It does this by creating multiple resolutions so that the client will automatically select the best quality for the current network conditions it is experiencing. That way the user can enjoy the smoothest possible live streaming experience without having to think about it.
In order to set this up, you will need our Autoscaling Solution.
Why do I need Autoscaling in order to run Transcoding?
Previously, we covered why you need our Autoscaling Solution to add the ability to scale your application up or down. An essential component of this is the Stream Manager. However, the Stream Manager oversees more than just server traffic.
The Stream Manager also plays a key part in our transcoder feature. In this case, it takes care of configuring the Cauldron transcoder node and notifying the appropriate origin node to expect the transcoded streams. The Stream Manager is also responsible for grouping the streams under a single identifier.
That's great... but how does it do that?
Basically, Cauldron takes one stream and divides it into three different streams at varying qualities (resolution and bitrate) which are then made available to the subscriber.
The audio and video feed captured by the selected device streams out to the Cauldron Transcoder where it is split into high, medium, and low qualities. The Stream Manager then contacts the correct Origin to inform it that it will be receiving the three tiers/levels/elements... ingredients? (to keep with the Cauldron theme) of the single stream.
Once the Cauldron Transcoder passes the stream to the Origin, it then broadcasts that stream. When a client wishes to subscribe, it sends a request to connect to an Edge server which then relays that request to the correct origin.
The client device will then monitor the conditions to ensure that it can still handle the requested resolution.
As network conditions change, the client will send the edge a message notifying it that it needs a different quality video. For those who want to dig deep, this message is an REMB message sent over the RTCP channel. The Edge will detect this change and determine if the client can still handle the requested quality. If the available bandwidth decreases, it will drop to the low-quality video and vice versa. This is generally referred to as ABR (adaptive bit rate).
This transcoding process is quite resource intensive, so that is why we recommend setting up the Cauldron Transcoder on its own instance. That way, the rest of the Autoscaling setup can focus on everything else without overloading the system's CPU with transcoding work.
Furthermore, all the autoscaling components need to be on separate servers.
The Stream Manager, Origin, and Edge nodes are all separated because you can only fit so many streams per instance. Thus for scale, you need to isolate those and cluster them together.
Additionally, the Stream Manager should also be load balanced to handle huge amounts of transactions.
For more information please take a look at our documentation and GitHub example.
Doesn't WebRTC do a lot of this already?
Absolutely! WebRTC supports ABR right out of the box.
Problem is, the WebRTC protocol by was designed for peer-to-peer browser connections. As such, in a server to browser model, it has built-in ABR on the subscriber side only. In a one-to-one situation (as shown below), this works fine as the publisher can just change resolutions to adjust to the single subscriber's need.
However, this creates an issue when it involves multiple subscribers. If you didn't have the stream already transcoded to multiple qualities, then a bad network on a single subscriber would request the publisher to switch to a lower quality stream thus forcing everyone to watch a low-quality stream.
In order to fix that we have added ABR support via Cauldron.
Consequently, when an individual client requests a lower quality, it will request the REMB message to the edge, and the edge will deliver the appropriate video to that specific client. This way the other connections remain unaffected.
What else can Red5 Pro do?
As you can tell, there's a whole bunch of stuff going on in our Autoscaling Solution. Of course, our newest transcoding feature is just one of the pieces involved (let alone all the other stuff Red5 Pro can do). You can read more about it on our documentation page.
If you have any questions or want to know more about us and our other live streaming features, drop an email to email@example.com or schedule a call. Like our ABR feature, we're pretty responsive to your needs.