
Three separate guides now cover pieces of the AIOZ Stream player: how it adapts bitrate, how to embed it, how to theme it through the API. This one steps back and covers the player itself, what it actually does out of the box, and which of those deeper guides to reach for depending on what you're trying to do.
TL;DR:
Strip away the customization options and the AIOZ Stream player's job is straightforward: take a video uploaded to the platform and play it back reliably across devices and connection speeds. AIOZ's own docs describe it as built for "a seamless streaming experience," which is marketing language for a specific, checkable set of behaviors: it switches video quality automatically as a viewer's connection changes, it targets low latency for live-style use cases, it runs the same on desktop browsers and mobile (iOS and Android specifically called out), and it reports back basic analytics on viewer behavior and streaming quality.
Two streaming protocols sit underneath all of that: HLS and MPEG-DASH. You don't choose between them when uploading a video, the player selects based on what the viewer's browser supports and switches quality tiers within whichever protocol it's using. That decision happens once, at playback start, based on what the requesting browser reports supporting, not something that needs configuring per video or per audience segment. The mechanics of that switching, why DASH exists alongside HLS at all and what actually triggers a quality drop mid-playback, are covered in more depth in the HLS vs MPEG-DASH breakdown.
The player ships as a single iframe, no JavaScript SDK to install, no build step:
<iframe
src="https://embed.aiozstream.network/vod/hls/video_id"
width="100%"
frameborder="0"
scrolling="no"
allowfullscreen="true"
></iframe>That's the whole embed. No API key in the URL, no signed token, just the video's ID. The part that trips people up isn't the code itself, it's making the iframe responsive (fixed pixel heights break on different screens) and knowing where the video ID actually comes from if you're uploading through the API rather than the dashboard. Both are walked through step by step in the embedding guide.
AIOZ Stream doesn't theme the player through URL query parameters, a common pattern on other platforms that doesn't apply here. Instead there are two genuinely separate mechanisms, built for two different situations.
For a single site or a handful of videos, the dashboard's Player Session screen is the fastest path: name a session, set colors and dimensions from a form (Main Color, Background Color, Track Color, Text Color, Caption Color, Thumb Height, Track Height), save it, then apply it to a video from a dropdown in that video's settings. It's built for someone configuring this once and moving on, not for automation.
For anything that needs to happen programmatically, a customer-onboarding flow that spins up a branded theme automatically, an agency managing themes for a dozen clients, there's a separate Player Theme API under api.aiozstream.network/api/players. It exposes a richer field set than the dashboard (ten theme fields instead of seven, split more finely across the control bar, menu, and progress bar), plus controls the dashboard doesn't expose at all: forcing autoplay or loop, hiding the video title, and a dedicated logo-upload endpoint for actually replacing AIOZ's branding rather than just recoloring around it. The full field list, JSON examples, and the operational quirks (theme updates can take up to 10 minutes to reach the CDN, a theme still attached to a video can't be deleted) are in the white-labeling guide.
Whichever path you use, the embed code from the previous section doesn't change. Theming is attached to the video through the dashboard or the API, never through the iframe's src URL, so the same embed snippet keeps working no matter how many times you restyle the player behind it.
A few things people ask for aren't documented as available today. Domain restriction, limiting which websites are allowed to embed a specific video, isn't covered anywhere in the current player documentation. Neither is a way to give the same video two different themes on two different pages purely through the embed code, since the theme lives with the video (or with the theme-to-video pairing, on the API side), not with the URL. If either of those matters for your use case, treat it as an open question to raise with AIOZ directly rather than something to assume is configurable. A workaround some teams reach for around the two-theme limitation specifically, uploading the same source video twice with different theme assignments, works but duplicates storage cost for content that's otherwise identical, worth weighing against just accepting one theme per video unless the branding difference genuinely matters.
A quick routing table, since the four player-related guides in this pillar cover different jobs, not different depths of the same one. Just getting a video playing on a page for the first time: the embedding guide. Curious why the player picks the resolution it does, or debugging a quality switch that looks wrong: the HLS vs MPEG-DASH breakdown. Matching the player to a brand's colors for one site: the dashboard's Player Session screen, no separate guide needed beyond this overview. Building theme creation into an onboarding flow, an agency dashboard, or anything programmatic: the white-labeling guide and its Player Theme API reference. Most people only need one of these at a time; this page exists so you can tell which one before going deeper.
The player's built-in analytics cover viewer behavior, engagement, and streaming quality at a basic level, enough to see that a video is being watched and roughly how well it's playing back. For anything more structured, watch time breakdowns, retention curves, impression counts across a video library, that lives in AIOZ Stream's dedicated Analytics API rather than the player itself. A full guide to building on that API is planned as part of the developer-platform content; for now, the player-level numbers are what you'll see in the dashboard next to each video. The practical rule of thumb: if a question can be answered by looking at one video's dashboard entry, "is this video being watched, is playback holding up," the player-level numbers already cover it. If the question spans a library, "which videos are losing viewers early, how does retention compare across a catalog," that's a question for the Analytics API, not something to try to reconstruct from individual video pages.
Do I need to pick HLS or MPEG-DASH when uploading a video?
No. The player selects the protocol based on the viewer's browser and switches quality automatically within it. See the HLS vs MPEG-DASH guide for how that selection actually works.
Is there a JavaScript SDK for controlling the player in the browser?
Not as a standalone embedding SDK, the documented method is the iframe itself. The Player Theme API does expose an enable_api control field that turns on a JavaScript control interface for the embedded player, separate from the server-side Developer API used for uploads and video management.
Should I use the dashboard or the API to theme my player?
The dashboard for a single site or a small number of videos. The API once you're creating themes programmatically, per customer, or as part of an automated pipeline, since it exposes more fields and controls than the dashboard form does.
Can I remove AIOZ Stream's branding entirely?
The documented controls get you most of the way: a hide_title field removes the title text, and the logo-upload endpoint replaces AIOZ's mark with your own. Whether every trace of AIOZ branding disappears from the player chrome isn't explicitly documented, so check a real preview before promising a client a fully unbranded player.
Does the player work the same on mobile as on desktop?
Yes, cross-platform support including iOS and Android is one of the documented core features, and the embed code itself doesn't change for mobile.
Where do I go to actually build the video upload flow that feeds this player?
That's covered separately in the Developer Guide to the API and SDKs, which walks through uploading, managing, and querying videos through the API rather than the dashboard.
I just need a video on my page today, which guide do I actually start with?
The embedding guide. It covers the iframe code and where the video ID comes from, which is the whole job for a first working embed; theming and the API only matter once that's already working.
For background on the underlying streaming formats the player supports, the MDN guide to adaptive streaming media sources and the DASH Industry Forum are both solid references.

How AIOZ Stream wallet billing actually works: token deposits, conversion rates, why the network matters, and the volatility risk fiat billing never has.

Glass-to-glass latency is camera-to-screen delay, the only number that matches what viewers feel. Here is what causes it, and how to measure it yourself.

A complete guide to how AIOZ Stream pricing actually works: the three cost components, hourly wallet billing, and where decentralized delivery beats AWS.

Low-Latency HLS cuts glass-to-glass delay from 30 seconds to about 2 to 5 seconds. Here is how LL-HLS actually works, what it costs, and when to use it.

A complete guide to the AIOZ Stream video player: what it does out of the box, two different paths to customizing it, and what still requires the API.

How to white-label the AIOZ Stream video player via the Player Theme API: creating a theme, uploading a logo, and every controllable field it supports.