Back

Blog details

What Is Adaptive Bitrate (ABR) Streaming? How ABR Works

AIOZ Network
7 min readAugust 29, 2026
aioz-streamguide
What Is Adaptive Bitrate (ABR) Streaming? AIOZ Stream knowledge hub cover

Adaptive bitrate (ABR) streaming is a delivery method that encodes a video at several quality levels and lets the player pick one per segment based on your bandwidth and buffer. When your connection dips, the picture steps down instead of the video stalling.

TL;DR:

  • ABR encodes one video into a ladder of renditions, lists them in a manifest (an HLS .m3u8 or a DASH .mpd), and lets the player choose a rendition for every segment.
  • Players decide from download throughput, from how full the buffer is, or from both. BOLA, a buffer-based algorithm from IEEE INFOCOM 2016, ships in the dash.js player.
  • Good ABR also avoids switching too often. AIOZ Stream's docs describe hysteresis, a minimum dwell time on each rung, and capped step sizes for that.
  • AIOZ's docs suggest a five-rung starting ladder from 240p at 0.3 Mbps to 1080p at 5 Mbps, and the API caps each resolution, from 0.7 Mbps at 240p to 60 Mbps at 4320p.

Updated Oct 19, 2026: definition-first rewrite, a ladder diagram, the ABR rules in AIOZ's docs, and a fix: the 700 Kbps to 60 Mbps figures are caps, not a ladder.

What is adaptive bitrate streaming?

ABR is the reason a video on your phone gets softer for a few seconds in a lift instead of freezing. Without it, a player downloads one fixed file, say 1080p at 5 Mbps, and stalls whenever your connection drops below that rate. With ABR the platform stores the same video at several bitrates, and the player keeps choosing the one your network can carry right now.

AIOZ's adaptive streaming docs give a simple example: a viewer starts at 720p, and when bandwidth drops near 1.2 Mbps the player steps to 480p to avoid a stall. As the buffer recovers and throughput rises, it climbs back to 720p. Rules such as hysteresis and a minimum dwell time stop it from bouncing up and down in between.

How does adaptive bitrate streaming work?

The AIOZ docs break ABR into six steps, and every major platform follows the same shape:

  1. Encode a ladder. One source is transcoded into several renditions, for example 240p to 1080p at rising bitrates. Our bitrate ladder guide covers how to choose them.
  2. Package. Each rendition is cut into short segments and listed in an HLS or DASH manifest.
  3. Deliver. Segments go out over HTTP from edge servers, or on AIOZ Stream from AIOZ DePIN nodes.
  4. Observe. The player measures throughput, buffer level, dropped frames and device limits.
  5. Decide. It picks the rendition for the next segment, trading picture quality against the risk of a stall.
  6. Report. The player sends events (startup, stalls, rendition changes) that analytics turns into session numbers.
Diagram: a five-rung bitrate ladder from 240p at 0.3 Mbps to 1080p at 5 Mbps, and a playback timeline where the player steps from 720p down to 480p when bandwidth falls near 1.2 Mbps, then back to 720p when the buffer recovers
The starting ladder and the 720p to 480p example from the AIOZ Stream adaptive streaming docs.

In HLS, the ladder lives in a master playlist where each rendition gets an EXT-X-STREAM-INF line with a BANDWIDTH value. RFC 8216 says that value "MUST be the largest sum of peak segment bit rates that is produced by any playable combination of Renditions." If you set it too low, the player may pick a rendition your viewer's network can't sustain. Our M3U8 guide shows a full master playlist, and the HLS vs MPEG-DASH comparison covers how the DASH manifest differs.

How does a player choose the bitrate?

ABR players fall into three families, and they differ in which signal they trust most.

  • Throughput-based players estimate your bandwidth from how fast recent segments downloaded and pick the highest rung that estimate can sustain. They are simple and react quickly, but one slow segment can trigger a downshift your connection didn't need.
  • Buffer-based players watch how many seconds of video are already downloaded. A basic version requests the lowest rung when the buffer is nearly empty and the highest when it is comfortably full, with steps in between.
  • Hybrid players combine both. BOLA, published by Spiteri, Urgaonkar and Sitaraman at IEEE INFOCOM 2016, picks each segment's rung by maximizing a utility score that rewards quality and penalizes rebuffering, and it ships in the open-source dash.js player.

Pure throughput logic has a known weak spot called bufferbloat. A congested Wi-Fi router can queue packets for a second or more, so your connection looks slow until the queue drains and then fast again. A throughput-only player reads that as a real drop and recovery and switches twice. A buffer-based player reacts less, because the data still arrives and the buffer stays topped up.

Why switching less often matters

Every switch is visible to the viewer, so a player that chases each small change in bandwidth gives a worse session than one that holds a slightly lower rung. AIOZ Stream's docs build three guards into its ABR rules for this reason:

  • Hysteresis around switch thresholds, so a reading just over the line doesn't trigger a jump.
  • A minimum dwell time at each rung before the player may move again.
  • A capped step size on poor networks, to avoid a free fall from 1080p straight to 360p.

Our QoE guide explains why: in a study of more than 400,000 YouTube sessions, even an upward bitrate change raised abandonment compared with holding the rate steady. Stability is one of the terms in AIOZ's own QoE model for the same reason.

How many rungs a bitrate ladder needs

More rungs are not automatically better, because each extra rung costs another encode and more storage. Rungs that sit too close together also give the player more chances to oscillate without a quality gain anyone can see. The AIOZ docs offer this five-rung ladder as a starting point and tell you to tune it against your own catalog:

RungResolutionTarget peak bitrateTypical codecNotes from the docs
1240p0.30 MbpsH.264 BaselineLow-end networks; keep audio continuous
2360p0.60 MbpsH.264 MainFirst watchable rung on mobile
3480p1.20 MbpsH.264 MainSD baseline; stable on average 4G
4720p2.50 MbpsH.264 HighHD entry for good phones or PCs
51080p5.00 MbpsH.264 HighFull HD for strong connections

Each rung roughly doubles the one below it, which keeps every switch large enough to notice. The docs add that HEVC or AV1 ladders can target 20 to 40% lower bitrates at similar quality if you gate them by device support. Content-aware encoding can cut bitrates further on simple scenes, and our VMAF guide shows how to check that each rung still looks good enough.

Don't confuse this ladder with the limits in the Video API. The API caps each resolution at a maximum bitrate, and those caps run 0.7, 1.2, 2 and 4 Mbps for 240p through 720p. From 1080p up they are 6, 12, 30 and 60 Mbps for 1080p, 1440p, 2160p and 4320p. Treat them as ceilings for any rung you define, not as a recommended ladder.

How AIOZ Stream handles ABR

The AIOZ Stream player plays HLS and MPEG-DASH with adaptive bitrate built in. According to the adaptive streaming docs, its switching decisions are QoE-aware. They weigh the expected VMAF gain of a higher rung against stall penalties, use the three stability guards above, and allow device-aware caps and regional default bitrates. The docs don't say whether the core estimate is throughput-based, buffer-based or BOLA-style, and the public API doesn't expose player-side ABR settings.

What you control is the ladder, which you define as renditions in the qualities array when you create a video. This snippet is quoted from the Video API docs for the Node.js SDK and wasn't run for this article; add one object per rung you want.

const video = await client.media.create({
  title: 'My Video',
  type: 'video',              // required, must be 'video'
  qualities: [
    {
      resolution: '720p',     // '240p'|'360p'|'480p'|'720p'|'1080p'|'1440p'|'2160p'|'4320p'
      type: 'hls',            // 'hls' | 'dash'
      containerType: 'mpegts', // hls: 'mpegts'|'mp4'; dash: 'fmp4'
      videoConfig: {
        codec: 'h264',        // 'h264' | 'h265'
        bitrate: 3000000,
        index: 0
      },
      audioConfig: {
        codec: 'aac',
        bitrate: 128000,
        channels: '2',
        sampleRate: 44100,
        language: 'en',
        index: 0
      }
    }
  ]
})

To judge your ladder, the docs suggest tracking rebuffer ratio (aim under 0.5 to 1%) and startup time (under 2 seconds for short videos). They also list average VMAF, time on the highest sustainable rung, and switch count. Our stream health metrics guide defines each one and shows how to read them together. For watch time and retention per video, our video analytics dashboard guide pulls them from the Analytics API. For the full set of rules, read Adaptive streaming (ABR) in the AIOZ Stream docs.

FAQ

Is ABR the same thing as HLS?
No. HLS and MPEG-DASH are the formats that carry an ABR ladder, and ABR is the player behavior of switching between the renditions they list.

Does ABR work on a slow connection?
Yes. The AIOZ docs say the player favors avoiding stalls first, even if that means staying on a low rung for a while. They also recommend keeping audio continuous on the lowest rungs.

Which ABR algorithm does AIOZ Stream use?
The docs describe QoE-aware rules with hysteresis, dwell time and capped steps, but they don't name a throughput, buffer or BOLA algorithm.

Is a denser ladder always better?
No. Extra rungs add encoding and storage cost, and rungs that sit close together cause more switching without a quality gain your viewers can see.

Why does quality change even when the video never buffers?
The player is moving between rungs to stay ahead of your bandwidth, and each change is visible, which is why good ABR logic limits how often it happens.

What metrics tell me whether ABR is working?
Track rebuffer ratio, startup time, average VMAF, time at the highest sustainable rung and switch count, as the AIOZ adaptive streaming docs recommend.

References

We only send updates when meaningful changes ship, and you can unsubscribe anytime

Related Content

blog thumbnail

Video Streaming Protocols: HLS, DASH, WebRTC, RTMP and SRT

Video streaming protocols move video from encoder to viewer. See how RTMP, SRT, HLS, DASH and WebRTC differ in latency, transport and where each one fits.

aioz-streamguide
7 min readNovember 04, 2026
blog thumbnail

What Is Decentralized Live Streaming and How Does It Work?

Decentralized live streaming sends a real-time broadcast through independently run nodes instead of one company's servers. Here's how each stage of it works.

aioz-streamguide
6 min readNovember 03, 2026
blog thumbnail

Video Streaming Glossary: Codecs, Protocols and Delivery A-Z

A video streaming glossary of 114 terms, from AAC and ABR to WebRTC and Widevine, each defined in plain English with sources and links to the deep posts.

aioz-stream
23 min readOctober 31, 2026
blog thumbnail

Monitor Livestream Health With Bitrate, FPS and Viewer Count

Read the AIOZ Stream Statistics panel: bitrate in and out, FPS in and out and current viewers, plus the documented rules for each and what the docs leave out.

aioz-streamguide
6 min readOctober 30, 2026
blog thumbnail

How to Embed a Livestream on Your Website (Link or iFrame)

Embed an AIOZ Stream livestream with the Share button's iframe or send the Public Playback URL as a link. Covers API fields, public access limits and doc gaps.

aioz-streamguide
6 min readOctober 27, 2026
blog thumbnail

Stream Key vs Streaming Session: Preconfiguring a Livestream

Learn how a stream key differs from a streaming session on AIOZ Stream, what each one stores, and what to preconfigure before you go live. Docs-based guide.

aioz-streamguide
7 min readOctober 23, 2026