Adaptive bitrate streaming (ABS) is a technique for streaming media where the bitrate of the video stream is adjusted dynamically to match the available bandwidth. This can provide a better viewing experience to the user by eliminating buffering. The video quality will be higher when the available bandwidth is higher, and lower when the available bandwidth is lower.
But wait! A lot of heavyweight terms are being thrown around here. If all of this went above your head, don’t fret. After reading this blog, you’ll not only have a clear understanding of what adaptive bitrate streaming is, but you’ll also know why it came into being, how it works, and its benefits. We will cover all the nuances that arise in between.
Before we dive into adaptive bitrate streaming, it’s important to understand why it was created in the first place. Adaptive bitrate streaming came about as a solution to a problem plaguing the internet since its inception: video buffering.
If you’ve ever watched a video on YouTube, chances are you’ve experienced it firsthand. Buffering is when the video pauses for a moment to load more data before continuing to play. This usually happens when there is not enough "bandwidth" to stream the video at the current "bitrate".
Now, what is bandwidth? And what is bitrate? Simply put, bandwidth is the amount of data that can be transferred between two network nodes (your device and the internet) in a given time period (usually measured in bits per second). You can think of bandwidth as a pipe carrying the video data from the internet to your device. The wider the pipe, the more data it can carry, and the smoother the video playback. Similarly, the rate of this flow is the bitrate (or "bit rate").
In the early days of the internet, there was no such thing as adaptive bitrate streaming. There was no buffering even – at least, in the sense that we know it. A video had to be downloaded completely before it could be played.
For perspective, the average bandwidth in 1994 was 28.8 kbps. It would have taken at least 92 hours to download a 720p (or 1.2 GB) movie. Why at least? Because if the download paused or stopped midway (or had a major packet loss; a common internet occurrence), you’d have to start all over again. It barely comes as a surprise then that Netflix started as a DVD rental service!
In 1995, Macromedia released its Shockwave Player for Netscape Navigator. This was the first media player that could stream videos on a web browser. Browser-based streaming meant that users could start watching videos without separately downloading them. But latencies were prevalent due to wide-ranging reasons. This made industry players look for other options, and progressive download was precisely what they needed. Though it’s not clear when progressive download was first implemented, one of its early implementations includes Apple’s Fast Start in QuickTime player in 1999.
Progressive download allowed for smoother playback. It was widely adopted and proprietary solutions started emerging around it. However, a couple of problems still persisted.
Progressive download made it possible to render video frames as they arrived. As a result, playback could begin without downloading the entire video, which solved the problem of long wait times. On slow networks, users could start playback, pause it, and let it load fully to enjoy a high-quality viewing experience. As long as there was enough data to play the video without any pauses, a dip in bandwidth wouldn’t affect the quality.
But progressive download had its set of challenges. A major challenge was that it consumed a lot of bandwidth. It would download the entire video even if the majority of the video remains unwatched. Moreover, progressive download couldn’t do much about sudden changes in bandwidth, packet loss, or even device specifications. These factors would cause playback issues such as buffering, stuttering, and pausing. Lastly, if the video is streamed in a particular bitrate, you couldn't switch to another bitrate and expect the video to begin where you left off.
How do you line all of these ducks and hit them with one stone? The industry’s answer was Adaptive Bitrate Streaming.
Adaptive Bitrate Streaming was a game-changer! It paved the way for the smooth-streaming world of videos that we live in today. To understand how adaptive bitrate streaming works, it’s important to know about two key concepts: manifest files and encoders.
A manifest file is a text file that contains information about all the video streams (or variants) that are part of an adaptive bitrate stream. It also includes other metadata such as resolution, codec, language, frame rate, etc., along with timestamps indicating when each segment should be played back. In short, a manifest file acts like a playlist for your video streams. Here's an example of what one might look like:
As you can see, each variant is represented by a media file with a certain bitrate. The EXT-X-STREAM-INF tag contains information about that stream, such as the bandwidth and codecs used. You’ll also notice the "#EXTM3U" tag at the beginning of the file. This is known as an M3U8 playlist and is a popular format for manifest files. It’s worth noting that M3U8 files use UTF-8 character encoding, which supports international characters.
If a manifest file is the playlist, encoders are the instruments that create the music (or in this case, video streams). Encoders take a source video and encode it into one or more output streams at different bitrates and resolutions – usually ranging from 144p to 1080p. These encoded video files are then segmented into small chunks of two to eight seconds each and stored on a web server from where they can be fetched as needed by the clients.
It’s important to note that each variant will have a different bitrate, but they will all use the same codec. This is because different codecs aren’t cross-compatible. Like you can't open a soda bottle using a wine opener, you can’t use the H.264 codec for one variant segment, and VP9 (another popular codec) for another subsegment.
Now that we know what manifest files and encoders are, let’s see how adaptive bitrate streaming works. We’ll use an example to make things clearer. Let's say you're watching a video on your phone over LTE with an average bandwidth of 10Mbps. You start playing a 1080p video encoded at 5Mbps using the H.264 codec. The player then fetches the corresponding manifest file from the server, which might look something like this:
As you can see, there are three variants of the video – each encoded at a different bitrate but using the same codec (H.264). The player then downloads and plays the first segment from the variant that best matches its current bandwidth conditions (in this case, 5Mbps). It will continue to do so for all subsequent segments until it detects a change in network conditions or the user switches to a different resolution.
For instance, if your phone moves into an area with lower LTE coverage, say 3G with an average bandwidth of 2Mbps, the player will automatically switch to fetching segments from one of the lower bitrate variants to prevent buffering issues. Similarly, if you manually switch to 720p or 480p resolution from within the player interface, it will start fetching segments from those variants instead. If you move back into an area with better LTE coverage, it will automatically switch back to fetching segments from a higher bitrate variant.
There are two popular protocols used for adaptive bitrate streaming: HTTP Live Streaming (HLS) and Dynamic Adaptive Streaming over HTTP (DASH). While HLS is more widely adopted, DASH is gaining popularity due to it being an open-source international standard. Let’s take a look at each of them in detail.
HLS was developed by Apple as a part of its QuickTime X application for Mac OS X Snow Leopard back in 2009. It has since been adopted by many other companies such as Google, HP, and Microsoft to name a few. The protocol uses regular web servers instead of streaming servers like Wowza, Teyuto, or Adobe Media Server, which are essential for other streaming protocols such as RTMP or RTSP. Note that adding such servers can boost performance significantly. However, if you want to skip them, setting up an HLS stream becomes – any standard web server and CDN will do the trick for you!
The biggest advantage of using HLS is that it works across all major platforms including iOS, Android, Windows Phone, tvOS, macOS, Microsoft Silverlight, and so on. Apple also maintains HLS’ hegemony by not supporting other major streaming protocols on Apple devices. However, HLS uses the popular MPEG-2 Transport Stream (M2TS) container format, which is well supported by most media players.
DASH is an adaptive bitrate streaming protocol developed by the Motion Picture Experts Group (MPEG) and standardized under ISO/IEC 23009. It uses the same container format as HLS – M2TS – but with a different file structure. This makes it difficult for some media players to support both protocols. But there are workarounds for this, such as using DASH-compatible players or installing relevant plugins.
DASH was designed to work on multiple devices and networks by using a common manifest file format known as MPD (Media Presentation Description). This allows clients to dynamically adapt the bitrate of the video based on network conditions and device capabilities. It also supports online content protection using encryption schemes such as MPEG Common Encryption (CENC).
You can contact Teyuto’s experts to better understand the functionality you need based on your unique use case. It will help you make an informed decision on whether or not you need DASH compatibility for your digital video mix.
There are several ABS algorithms used today as each player has its own criteria to determine which bitrate to stream next. However, all of them mostly have two major features, i.e., bitrate and buffer occupation. Some ABS algorithm examples include:
The main idea of BOLA is to use the current buffer occupation to predict future playback smoothness. The bitrate is then selected to minimize a cost function which is the weighted sum of a smoothness term and a penalty term. We must note here that, unlike other algorithms, BOLA typically does not predict the network bandwidth. Rather, it uses the current buffer occupation as a proxy to decide which bitrate to stream next.
GDSF is a rate adaptation algorithm that uses both the current buffer occupation and the recent history of network bandwidth to decide which bitrate to stream next. The main idea is to keep the buffer occupation at a certain target level while maximizing the recent average network bandwidth.
There are several machine learning-based algorithms proposed in the literature for ABS. These algorithms learn a model from the data (network bandwidth, buffer occupation, etc.) and use this model to predict future playback smoothness. Based on this prediction, the bitrate is automatically selected to ensure a smooth playback with high Quality of Experience (QoE).
There are several benefits of adaptive bitrate streaming, both for users and content providers:
One of the biggest advantages of adaptive bitrate streaming is that it eliminates buffering by and large. This leads to a much smoother viewing experience for the user, especially on mobile devices, as their internet speeds can vary drastically.
Another benefit is that users always get to watch the best quality video their internet connection can handle. So, even if they are on a slow connection, they won’t have to settle for a lower-quality video throughout. ABS will automatically adjust the bitrate whenever there’s room for it.
Since adaptive bitrate streaming only streams the necessary amount of data based on available bandwidth, it can lead to significant savings in data usage.
Because ABS provides a better viewing experience overall, it can lead to increased engagement and retention from viewers. This is especially true for live streaming, where ABS can be a major differentiator that prevents playback delays.
Since adaptive bitrate streaming only streams the amount of data necessary, it can lead to reduced infrastructure costs for content providers. They get to cut their spending on edge servers and can accommodate peak traffic periods more easily.
With adaptive bitrate streaming, content providers have more control over the quality of their video streams. This allows them to strike a balance between quality and file size, which can also lead to significant savings in storage and bandwidth costs.
ABS allows content providers to reach a wider audience by making their videos accessible even on low bandwidth connections. A video player can select an appropriate stream based on the prevailing network conditions.
So, there you have it! Adaptive bitrate streaming is a great way to improve your video streaming quality, without having to worry about buffering or interruptions. With it, you can ensure that you're always on top of your game.
To learn more about adaptive bitrate streaming and its optimal implementation based on your use case, get in touch with Teyuto’s experts today.