Back

Blog details

HLS vs MPEG-DASH: How the AIOZ Stream Player Actually Adapts

AIOZ Network
6 min readAugust 16, 2026
aioz-streamexplainerdeveloper-apis
HLS vs MPEG-DASH: how the AIOZ Stream player actually adapts bitrate

A viewer's connection drops from a stable 20 Mbps to a shaky 3 Mbps mid-video, and the stream keeps playing without buffering, just at a lower resolution for a few seconds. That's adaptive bitrate streaming working as intended, and it's the actual mechanism behind AIOZ Stream's player, not a vague "smart playback" claim. Here's what HLS and MPEG-DASH actually are, how the player switches between quality levels, and what's configurable versus fixed.

TL;DR:

  • AIOZ Stream's player documentation states it directly: it supports "HLS (HTTP Live Streaming) and MPEG-DASH, providing adaptive bitrate streaming."
  • HLS and MPEG-DASH solve the same problem, delivering video over plain HTTP at a bitrate that matches the viewer's connection, but differ in manifest format and browser support.
  • The player automatically adjusts quality based on the viewer's connection, described in AIOZ Stream's own docs as providing "a buffer-free experience."
  • Theme customization runs through the dashboard: primary color, background color, track color, text color, caption color, and thumb/track height, not a code-level styling API.
  • Embedding is a single iframe pointed at embed.aiozstream.network/vod/hls/{video_id}, no separate SDK required just to display a video.

What HLS and MPEG-DASH actually are

Both are adaptive bitrate protocols that deliver video over ordinary HTTP rather than a specialized streaming server, which is why both work through standard CDNs and, in AIOZ Stream's case, through P2P delivery as well. HLS, HTTP Live Streaming, comes from Apple and uses an .m3u8 manifest file listing the available quality renditions; it plays natively in Safari and iOS without extra JavaScript, and needs a library like hls.js everywhere else. MPEG-DASH is an open, vendor-neutral standard using an .mpd manifest instead, codec-agnostic by design, but no browser supports it natively, every DASH playback needs a JavaScript player like dash.js or Shaka Player. Functionally they do the same job, split video into short segments at multiple bitrates and let the player choose; the practical difference is manifest format and where native support already exists. Both trace back to the same underlying idea that predates either spec being finalized: Microsoft's Smooth Streaming and Adobe's HTTP Dynamic Streaming were solving the same segmented-delivery problem years earlier, each with its own proprietary manifest format, before Apple's HLS and the MPEG group's DASH became the two formats that actually stuck across the industry.

Video quality indicator switching between resolutions on a screen, representing adaptive bitrate streaming

How the switching actually works

An adaptive player is continuously measuring, not just picking a quality once and sticking with it. It tracks recent download throughput and how full its playback buffer is, and picks the highest rendition it can sustain without running the buffer dry. That combination matters more than either signal alone: throughput on its own can overreact to a single slow segment that was really just a momentary blip, while buffer health alone doesn't account for a connection that's degrading steadily rather than spiking. Weighing both is what keeps a player from switching resolution every few seconds over noise, jumpy quality changes are their own kind of bad experience, distinct from outright buffering. AIOZ Stream's own documentation describes the result plainly: the player "automatically adjusts the video quality based on the viewer's internet connection, providing a buffer-free experience." That's the ABR loop in one sentence, connection drops, quality drops with it, buffering stays flat instead of the video stalling outright.

What's configurable: player theming

Player customization in AIOZ Stream happens through the dashboard, not a client-side styling API. The documented controls are specific: a main color for controls and highlights, a background color, a track color for the video progress bar, a text color, a separate caption color for readability, and thumb height and track height for the scrubber's dimensions. That's enough to match a player to a brand's palette without touching CSS, though it's worth being clear about the boundary, it's color and sizing, not custom control layouts or a fully bespoke UI. A team that wants the controls repositioned, custom icons, or a genuinely different interaction model than what the stock player provides is looking at building a custom player against the underlying video stream directly, not extending the documented theming options further, since those options don't cover layout changes at any level.

What's fixed: embedding

Embedding is deliberately simple, one iframe, no SDK required just to show a video on a page:

<iframe
  src="https://embed.aiozstream.network/vod/hls/video_id"
  width="100%"
  frameborder="0"
  scrolling="no"
  allowfullscreen="true"
></iframe>

The URL itself carries the protocol, /vod/hls/, and the video ID, so there's no additional configuration step between having a video ID and having a working embed. For anything past that, theming, analytics, or programmatic control, that's where the dashboard settings and the broader API come in rather than the embed URL itself. That separation is deliberate: the embed URL's only job is identifying which video and which protocol to play, so it stays stable and cacheable even as everything else about how that video is presented changes behind it.

Why the embed defaults to HLS anyway

If both protocols do the same job, the default is worth explaining rather than treating as arbitrary. HLS plays natively in Safari and on iOS, which covers a meaningful share of mobile viewers without loading any extra JavaScript library first. MPEG-DASH's actual advantage shows up in a narrower set of cases: it's codec-agnostic in a way HLS historically wasn't, meaning a DASH manifest can point at H.264, H.265, VP9, or AV1 renditions without the format itself caring which, while HLS's own history is more tightly coupled to Apple's own supported codec list, and it has stronger native support for Common Encryption (CENC), the standardized (ISO/IEC 23001-7) approach that lets one encrypted set of segments be unlocked by Widevine, PlayReady, and FairPlay without re-encrypting the content separately for each. For a straightforward video embed on a website, none of that tips the balance, which is presumably why the documented embed path is /vod/hls/ by default rather than requiring a protocol choice up front. A service with heavier DRM requirements or an Android/smart-TV-first audience is the more likely case where reaching for DASH specifically would matter, since Android's native player ecosystem and most smart-TV platforms lean on DASH more heavily than Apple's device family does.

Telling whether a quality switch is actually happening

From a viewer's seat, the whole ABR mechanism is invisible by design, there's no on-screen resolution readout by default, just playback that either stays smooth or doesn't. That's usually the right call for a general audience, but it can make debugging a reported "the video looks blurry" complaint harder without more to go on than the viewer's own impression. The player-level analytics covered elsewhere in this guide report the bitrate actually delivered per session, which is the concrete number to check rather than guessing from a subjective description, since "looks blurry" and "is actually serving a lower rendition" aren't always the same claim, sometimes the source encode itself is the problem, not the ABR logic choosing a low tier. Checking the delivered-bitrate number first, before assuming either explanation, saves a round of guessing between two genuinely different fixes, adjusting the ladder versus re-encoding the source.

Frequently Asked Questions

Does AIOZ Stream's player support both HLS and MPEG-DASH?
Yes. AIOZ Stream's own documentation states the player supports both protocols directly, with adaptive bitrate streaming built on top of them.

Do I need to pick HLS or MPEG-DASH when embedding a video?
The documented embed URL uses the /vod/hls/ path, so HLS is the default and documented embedding method; the underlying player supports MPEG-DASH as a protocol, per the docs, but the standard embed flow doesn't require choosing between them.

Can I fully restyle the player's controls, not just colors?
Based on the documented options, no. Theming covers colors (main, background, track, text, caption) and thumb/track height through the dashboard, not custom control layouts.

What happens to playback quality if a viewer's connection drops mid-video?
The player adjusts quality automatically based on the current connection, aiming to avoid a stall rather than keep the highest resolution at any cost.

Do I need a separate SDK to embed a video, or is the iframe enough?
The iframe alone is enough for basic playback. An SDK matters for programmatic tasks like creating and uploading the video in the first place, not for displaying an already-uploaded one.

Why does the player check both throughput and buffer health instead of just one?
Throughput alone can overreact to a single slow segment, while buffer health alone misses a connection degrading steadily. Combining both is what keeps quality switches purposeful instead of jumpy.

References

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

Related Content

blog thumbnail

Best OBS Encoder Settings for 1080p and 720p (AIOZ Stream)

Choose OBS encoder settings for AIOZ Stream: the documented 1080p30 values, the missing 720p figure, NVENC vs x264, keyframes, 60 fps and a test procedure.

aioz-streamguide
6 min readOctober 16, 2026
blog thumbnail

OBS Studio Setup Guide for AIOZ Stream: RTMP, Scenes and Output Settings

Set up OBS Studio for AIOZ Stream: build a scene, connect with a Custom RTMP service and stream key, enter the documented output settings, and confirm the stream is live.

aioz-streamguide
6 min readOctober 13, 2026
blog thumbnail

How to Start a Livestream on AIOZ Stream: OBS and Mobile Setup

Seven steps to go live on AIOZ Stream with OBS or PRISM: stream key, session form, RTMP credentials, bandwidth math, and the first two minutes after you start.

aioz-streamguide
6 min readOctober 09, 2026
blog thumbnail

Live Streaming on AIOZ Stream: The Complete Guide

How live streaming on AIOZ Stream works: stream keys, sessions and saved media, OBS and PRISM setup over RTMP, restreaming, statistics, archiving, and what the docs leave out.

aioz-streamguide
7 min readOctober 06, 2026
blog thumbnail

What Is a Web3 Streaming Platform?

What separates a real web3 streaming platform from marketing language, and how AIOZ Stream's DePIN network, on-chain payments and W2E rewards measure up.

aioz-streamguide
6 min readOctober 02, 2026
blog thumbnail

Accessibility in Video Streaming: What WCAG Actually Requires

WCAG's five real video accessibility rules, why auto-captions usually fail them, what AIOZ Stream actually supports, and how the 2026 ADA deadline changes affect compliance.

aioz-streamguide
6 min readSeptember 29, 2026