Features

Everything in the box

95 features across 12 areas. Each one names the package that provides it and links to its docs. You install the packages you need, and the rest stays out of your bundle.

Protocols and formats

One engine reads HLS and DASH, in the containers streams are packaged in.

FeatureProvided byDocs
HLS with fragmented MP4 (CMAF)EngineRead
DASH on demand and liveEngineRead
Multi-period DASHPlayed as one presentationEngineRead
HLS with MPEG-TS segmentsRewrapped as fragmented MP4 in a WorkerEngineRead
Packed audio (AAC with ID3)EngineRead
AES-128 encrypted segmentsEngineRead
Codecs read from the init segmentFor a playlist that declares noneEngineRead
Native HLS in SafariThe player hands HLS to the browser where that is betterPlayerRead
Progressive MP4 and MP3Through the browser's own playbackPlayer corePlayerRead
Safari on iPhone and iPadThrough ManagedMediaSource, from iOS 17.1EngineRead

Live

Sliding windows, the live edge, and wall-clock time.

FeatureProvided byDocs
Live HLS and live DASHEngineRead
DVR window and seeking backEngineRead
Go to the live edgeEnginePlayerRead
Latency behind the live edgeEngineRead
Program date timeEngineRead
CMAF timingLands a segment at its playlist time, whatever the packager's clockEngineRead

Quality

Adaptive bitrate you can constrain, pin, and read.

FeatureProvided byDocs
Adaptive bitrateFrom throughput and buffer, with an emergency floorEngineRead
Cap to the player's sizeEngineRead
Constraints and pinsEngineRead
Codec switchingEngineRead
Quality switch timingAt the next segment, soon, or nowEngineRead
HDR by capabilityPQ and HLG only where the screen and decoder show themEngineRead
Quality menuPlayerRead

DRM

Every major key system, in the engine or on a native session.

FeatureProvided byDocs
WidevineEngineRead
PlayReadyEngineRead
FairPlayEngineRead
ClearKeyEngineRead
License renewalEngineRead
Key sessions released on suspendFor a rights server that limits concurrent streamsEngineRead
A license server per key system, and per sourceEngineRead
DRM without the engineFor a native HLS session in SafariEnginePlayerRead
DRM badge in the controlsPlayerRead

Subtitles and captions

The formats broadcast and streaming both use.

FeatureProvided byDocs
WebVTTEngineRead
Segmented WebVTTEngineRead
TTMLEngineRead
CEA-608 captionsEngineRead
CEA-708 captionsEngineRead
Forced subtitlesEngineRead
Native text tracksIn step with the browser's caption menuEngineRead
Subtitle size and backgroundSet by the viewer in the subtitles menuPlayerRead

Audio

Alternate soundtracks, named for a menu.

FeatureProvided byDocs
Alternate audioEngineRead
Localized track namesFrom the HLS localization dictionaryEngineRead
Audio description and SDH labelsEnginePlayerRead
Channel layout of each trackFor a label such as "English (5.1)"EngineRead
Audio menuPlayerRead
Audio-only sourcesPlayerRead

Network

Hooks on every request, and the CDN standards.

FeatureProvided byDocs
Request and response hooksEngineRead
Retries and recoveryEngineRead
Stall recovery and gap jumpingNudges the playhead, flushes and refetches, or jumps a small gapEngineRead
Suspend and resumeStops every request while the source stays loadedEngineRead
CMCDAs a query argument or as headersEngineRead
CMSDEngineRead
Content steeringEngineRead
Preloading of the next sourceThe manifest, or its first segments tooEngineRead
Several sources with fallbackPlayer corePlayerRead

The player

A custom element and the controls you place inside it.

FeatureProvided byDocs
A custom element, no frameworkPlayerRead
Controls as elements you composePlay, seek, volume, menus, time, title, spinner, error screenPlayerRead
Styling with parts and tokensPlayerRead
Labels in any languagePlayerRead
Keyboard and media keysPlayerRead
Screen reader namesEvery control has a name, and the sliders announce their value in wordsPlayerRead
Controls that hide by priorityOn a narrow player the bar hides the least important firstPlayerRead
Your own icons and controlsPlayerRead
Size tiersA compact, a regular and a wide layout, from the player's own widthPlayerRead
Fullscreen and picture in picturePlayerRead
AirPlayPlayerRead
Playback speed menuPlayerRead
A headless coreFor a page that writes its own interfacePlayer coreRead
Script tags from a CDNEnginePlayerRead

Playlist

A list of items, from markup or from a script.

FeatureProvided byDocs
Next, previous, repeat and shufflePlaylistRead
The list, over the picturePlaylistRead
Up next card with a countdownPlaylistRead
Preload of the next itemPlaylistRead
Lock screen and media keysNext and previous through the Media Session APIPlaylistRead
A failed item is skippedPlaylistRead

TV and casting

The living room: remotes, Chromecast, and 2021 TVs.

FeatureProvided byDocs
Samsung Tizen and LG webOS, from 2021 modelsThe floor is Chromium 76EngineTV navigationRead
Remote control navigationTV navigationRead
Seeking with the remoteThe keys move a target, and Enter seeks to itTV navigationRead
Chromecast senderCast senderRead
Chromecast receiverA bridge to Google's receiver framework, with hooksCast receiverRead

Diagnostics

See what the player did, and send it to someone who can read it.

FeatureProvided byDocs
Stats and the engine traceEngineRead
Replay of a recorded traceEngineRead
Quality of experience metricsStartup, rebuffering and switches, measured locallyEngineRead
A diagnostics panel in the playerCharts, engine state, browser support, and a report to copyDiagnosticsRead
Typed events and error codesEngineRead