Skip to content

Formats & DRM

FormatAndroidiOSWeb
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.

FormatWhy
DASH on iOSAVFoundation has no DASH pipeline — use HLS (CMAF lets one packaging serve both)
WebM on iOSnot an AVFoundation container
Smooth Streaminglegacy format, not included on any platform
RTMP / RTSPcontribution protocols, out of scope for a playback SDK
DRMAndroidiOSWeb
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.