Formats & DRM
Streaming formats
Section titled “Streaming formats”| Format | Android | iOS | Web |
|---|---|---|---|
| HLS (VOD) | ✅ | ✅ native | ✅ hls.js · native on Safari |
| HLS live & live-DVR | ✅ | ✅ | ✅ |
| HLS with MPEG-TS segments (legacy) | ✅ | ✅ | ✅ transmuxed by hls.js |
| Low-latency HLS (partial segments) | ✅ | ✅ | ✅ hls.js · default profile (the TV profile keeps it off) |
| DASH (VOD & live) | ✅ | — | ✅ dash.js — Chrome · Edge · Firefox · Tizen / webOS via ogplayer/tv; Safari → HLS |
| Progressive (MP4 / WebM) | ✅ | ✅ MP4 / MOV | ✅ |
| fMP4 / CMAF segments | ✅ | ✅ | ✅ |
| Multi-bitrate ABR with quality menu | ✅ | ✅ | ✅ |
| Multiple audio renditions | ✅ | ✅ | ✅ |
| Embedded (in-manifest) subtitles | ✅ | ✅ | ✅ |
| Sideloaded WebVTT (incl. positioned cues) | ✅ | ✅ | ✅ |
| Storyboard VTT (trick-play sprites) | ✅ | ✅ | ✅ |
Codec support (H.264, HEVC, AV1, AAC, …) follows the device or browser — the players use the platform’s native decoders.
On the web, DASH plays on Media Source Extensions through dash.js — the same
API, events, menus, live/DVR handling and DrmConfig as HLS, with the stream
type you declare on the item. Safari has no DASH path: serve it HLS (CMAF lets
one packaging feed both). An .mpd URL, or mimeType: "application/dash+xml"
on an extensionless manifest URL, selects the DASH engine. dash.js ships
inside the ogplayer package and loads only when a DASH item plays: the ES
module build imports it as a separate chunk on its own, while <script>
pages and packaged TV apps add ogplayer.dash.global.js from the package’s
dist/ next to the SDK bundle (see the
web and
smart TV quick
starts). HLS-only pages never download it.
Low-latency HLS plays at the latency the playlist asks for: the players
follow its PART-HOLD-BACK as their target, and the LIVE chip, the DVR
window, the behind-live state and going to the live edge all work on parts.
On the web the default profile plays it in hls.js’s low-latency mode; the
TV profile
(platformProfile: "tv") keeps low-latency mode off and plays such streams
at the regular delay. See Live & DVR.
Not supported
Section titled “Not supported”| Format | Why |
|---|---|
| DASH on iOS | AVFoundation has no DASH pipeline — use HLS (CMAF lets one packaging serve both) |
| WebM on iOS | not an AVFoundation container |
| Smooth Streaming | legacy format, not included on any platform |
| RTMP / RTSP | contribution protocols, out of scope for a playback SDK |
DRM systems
Section titled “DRM systems”| DRM | Android | iOS | Web |
|---|---|---|---|
| Widevine | ✅ (default) | — | ✅ Chrome · Firefox · Edge · Android browsers · Tizen / webOS via ogplayer/tv |
| PlayReady | ✅ | — | ✅ browsers and TV sets with a PlayReady CDM — Edge; Tizen / webOS via ogplayer/tv |
| FairPlay | — | ✅ | ✅ Safari (macOS / iOS) |
| ClearKey | ✅ | — | — |
On the web, one DrmConfig can carry all three systems — the SDK engages
whichever the visitor’s browser supports. DASH items use Widevine and
PlayReady (the same DrmConfig, token provider, renewal events and
4000–4005 codes as HLS); FairPlay pairs with HLS on Safari.
Encryption schemes: cenc and cbcs are supported wherever the platform
supports them (CMAF/cbcs works across all three, which is how one encrypted
stream can serve every platform).
Related: Multi-DRM guide · DRM tokens & renewal · error codes 4000–4005.