Adaptive Bitrate (ABR) is a streaming technology that dynamically changes video quality based on the user’s channel bandwidth. Unlike progressive download, ABR splits video into small segments of 2–10 seconds and switches between them on the fly. According to the Bitmovin Video Developer Report (2025), 86% of streaming services use ABR to ensure smooth playback on mobile devices.
Key Takeaways
Adaptive Bitrate (ABR) is a method of streaming media content where a video file is encoded into multiple variants with different bitrates and resolutions, and the player automatically selects the appropriate variant in real time. The user gets the highest possible quality without buffering given their current internet speed.
Unlike traditional progressive download, ABR does not require loading the entire file — the player requests short segments at the desired quality and can switch to another bitrate between segments. This makes the technology indispensable for mobile applications, where network speed constantly changes.
Adaptive streaming technology was first commercially implemented by Move Networks in 2006 for broadcasting ABC television. In 2009, Apple introduced HTTP Live Streaming (HLS), which became the first widely adopted ABR standard based on HTTP and still dominates the iOS ecosystem.
In 2012, MPEG released the MPEG-DASH (Dynamic Adaptive Streaming over HTTP) standard as a universal ABR format not tied to any specific vendor. DASH is supported by all major platforms and is the only ABR standard adopted by ISO.
The ABR streaming process begins at the content preparation stage: the source video is encoded into several variants with different bitrates — for example, 144p, 360p, 720p, 1080p, and 4K. Each variant is split into segments of equal duration, typically 2, 4, 6, or 10 seconds.
A manifest file is created on the server, describing the available representations, their bitrate, resolution, codec, and segment URLs. The player downloads the manifest, analyzes it, and starts playback at the lowest bitrate for a fast start.
<!-- MPEG-DASH MPD manifest -->
<MPD profiles="urn:mpeg:dash:profile:isoff-live:2011">
<Period>
<AdaptationSet mimeType="video/mp4">
<Representation id="720p" bandwidth="2800000"
width="1280" height="720">
<SegmentTemplate duration="4"
media="seg_$Number$.m4s"/>
</Representation>
</AdaptationSet>
</Period>
</MPD>
During playback, the ABR algorithm on the client side constantly monitors network conditions and buffer state. If bandwidth drops, the player requests subsequent segments at a lower bitrate to avoid buffering. When the network improves, the bitrate increases.
Switching between bitrates occurs at segment boundaries, making quality changes almost imperceptible to the user. Modern players can synchronize key frames across different variants so that switching happens without visual artifacts.
Three main ABR protocols dominate the streaming video market: HLS from Apple, MPEG-DASH as an open standard, and Smooth Streaming from Microsoft. Each protocol defines the manifest format, segmentation method, and encryption mechanism.
| Protocol | Developer | Manifest | Segments | Encryption |
|---|---|---|---|---|
| HLS | Apple | .m3u8 (M3U playlist) | .ts or .fmp4 | AES-128, SAMPLE-AES |
| MPEG-DASH | ISO/MPEG | .mpd (XML) | .m4s or .webm | CENC (Common Encryption) |
| Smooth Streaming | Microsoft | .ismc (XML, IIS) | .ismv / .isma | PlayReady (AES-128 CT) |
HLS is the most widespread ABR protocol, built into iOS, tvOS, and Safari on macOS. The manifest format is based on extended M3U playlists, where the master playlist contains links to variant streams with different bitrates and resolutions.
Each variant references its own media playlist with a list of segments. HLS supports live broadcasts through a sliding window mechanism, where old segments are removed and new ones are added as they arrive.
MPEG-DASH is the only ABR standard adopted as ISO/IEC 23009-1 in 2012. Unlike HLS, DASH uses an XML manifest (MPD — Media Presentation Description) and is not tied to a specific container format — it supports fMP4, WebM, and others.
DASH provides flexible segmentation: segments can have different durations within the same stream, optimizing the trade-off between latency and HTTP request overhead. For live broadcasts, DASH supports SegmentTemplate patterns.
According to Bitmovin tests (2025), HLS and DASH show comparable performance in startup time and bitrate switching frequency. HLS provides lower latency on iOS due to hardware support, while DASH is preferred on Android due to more flexible ABR algorithm configuration.
The heart of ABR is the bitrate selection algorithm that determines which variant to request next. There are three main families of algorithms: throughput-based, buffer-based, and hybrid. Each approach has its strengths and limitations.
Throughput-based algorithms estimate network bandwidth based on the download speed of previous segments. The algorithm selects the maximum bitrate that does not exceed 80–90% of the measured throughput, leaving a margin for fluctuations.
The drawback of this approach is its sensitivity to short-term speed spikes. If the network drops sharply during segment download, the throughput estimate becomes too low, unnecessarily reducing quality.
Buffer-based algorithms make decisions based on the player’s buffer occupancy. If the buffer is more than 70% full, the algorithm increases bitrate; if the buffer drops below 20%, it sharply reduces quality to prevent buffering.
The main advantage is no false downgrades during short-term network drops, as the buffer smooths out fluctuations. The downside is slow reaction to sustained bandwidth changes.
Modern players such as ExoPlayer and AVPlayer use hybrid algorithms that combine throughput estimation and buffer state. ExoPlayer uses the default DefaultTrackSelector ABR algorithm, which considers both parameters.
In 2024–2025, ML-based algorithms are being actively deployed, predicting future network changes based on historical data. Netflix, YouTube, and Twitch use their own machine learning models to optimize bitrate selection, reducing the number of switches by 30–40%.
Mobile applications place special demands on ABR due to the instability of cellular networks (4G/LTE, 5G) and limited device computing power. The player must quickly adapt to network changes while minimizing power consumption and data usage.
According to OpenSignal (2025), the average 4G speed in urban areas ranges from 5 to 50 Mbps, and while in motion it can drop to 1 Mbps. ABR algorithms must switch between bitrates within 1–2 segments to avoid buffering when entering a tunnel or elevator.
val trackSelector = DefaultTrackSelector(context).apply {
setParameters(buildUponParameters {
setMaxVideoSizeSd()
setAllowVideoMixedMimeTypeAdaptiveness(true)
setPreferredVideoRoleFlags(
roleFlags(C.ROLE_FLAG_DESCRIBES_VIDEO_AND_AUDIO)
)
})
}
val adaptiveTrackSelectionFactory =
AdaptiveTrackSelection.Factory()
val player = ExoPlayer.Builder(context)
.setTrackSelector(trackSelector)
.setMediaSourceFactory(
DashMediaSource.Factory(dataSourceFactory)
)
.build()
For mobile applications, fast initial loading (time-to-first-frame under 2 seconds) is critical. It is recommended to start playback at the lowest available bitrate and then increase quality as the buffer fills — the start-low-and-rise strategy.
Power consumption is also important: hardware-accelerated decoding should be used for all bitrates. Software decoding of high bitrates (1080p and above) on older devices can lead to overheating and throttling.
Key ABR quality metrics: number of bitrate switches, time to first frame (TTFF), and switch ratio to total viewing time. The QoE (Quality of Experience) index is calculated as a weighted sum of bitrate, switch penalty, and buffering penalty.
For ABR monitoring, it is recommended to collect player analytics: current bitrate, buffer size, bandwidth, number and types of switches. This data helps content providers optimize the set of available bitrates and configure segmentation for their specific audience.
Frequently Asked Questions
Adaptive Bitrate (ABR) is a streaming technology that dynamically changes video quality based on network conditions. The player divides video into segments and selects the optimal bitrate for each, ensuring smooth playback without buffering on mobile devices.
HLS is an Apple protocol using M3U playlists and transport streams (.ts). MPEG-DASH is an open ISO standard with an XML manifest (.mpd) and flexible segment formats. HLS works best on iOS, DASH on Android and the web.
ABR improves perceived quality by eliminating buffering: the video may temporarily reduce resolution when the network degrades, but it does not stop. Users prefer smooth 720p video over choppy 4K with constant buffering.
ExoPlayer uses a hybrid algorithm DefaultTrackSelector that considers network bandwidth and buffer occupancy. Throughput-based and Buffer-based strategies are also available with customization via AdaptiveTrackSelection.Factory.
Segment duration determines adaptation frequency: short segments (2 seconds) react faster to network changes but create more HTTP requests. Segments of 4–6 seconds are optimal for mobile devices balancing adaptation speed and overhead.
Summary
We will develop a mobile application turnkey
IT Sectr creates iOS and Android applications for startups and businesses since 2017. We will advise you and propose the best solution.
Read also