Skip to content

Feature Overview

The work in dash.js is closely aligned with the work on the DASH Interoperability Points and the DASH Live Simulator 2 in DASH-IF.

DASH-IF IOP Alignment

IOP Documentationdash.jsLiveSim 2
Live2VoDSupportedSupported
L3DSupported, see also hereSupported via chunked delivery (chunkdur) and availabilityTimeOffset
Content SteeringSupported but needs some updates to be compliant with version 1.0.0. See also hereSupported: multiple service locations, trigger and rotate modes, queryBeforeStart
MPD PatchSupported, see also hereSupported via configurable Patch TTL
CMCDVersion 1 fully supported, version 2 including event and response mode reporting, see also hereNot supported
CMSDImplementation completed for two attributes etp and mb, see also hereNot supported
Variable Substitution / DASH Annex IBasic support, no support for templating mechanism. See also hereSupported: query parameters are propagated to segment requests
Server Guided Ad InsertionNot supportedSupported: DASH 6th edition Alternative-MPD Replace events, break schedules, skippability signaling
DRM / CPIXSupported, see also hereSupports on-the-fly encryption (ECCP cbcs/cenc) and EZDRM (Widevine, PlayReady, FairPlay)
LC-EVCBasic support, see also hereNot supported

dash.js Features

Core Playback

FeatureNotes
VoD and live playbackMPEG-DASH playback via the Media Source Extensions (MSE)
Multi-period streamsSeamless transitions between periods, see Multiperiod Streams
Track selectionInitial and runtime selection by language, role, codec and custom filters, see Track Selection
Gap handlingAutomatic detection and handling of buffer gaps and missing segments
Microsoft Smooth StreamingPlayback of Smooth Streaming assets via a separate bundle, see MSS
Multiple players per pageEach MediaPlayer instance runs in its own scope

Live & Low Latency

FeatureNotes
Low latency streamingCMAF chunked transfer playback with configurable target latency, see Low Latency
Catchup mechanismsPlayback rate adjustment to reach and hold the live edge
Clock synchronizationUTCTiming support to align client and server clocks, see Clock Synchronization
MPD patchingDelta manifest updates instead of full MPD reloads, see MPD Patching
Live streaming settingsTime-shift buffer, live delay and update handling, see Live Streaming

Adaptive Bitrate (ABR)

FeatureNotes
Default ABR rulesThroughputRule, BolaRule, InsufficientBufferRule, SwitchHistoryRule, DroppedFramesRule, AbandonRequestRule, see ABR
Low latency ABR rulesL2A and LoL+ for chunked low latency streams
Custom rulesOwn ABR rules are pluggable via the rules API
Manual quality selectionExplicit representation selection per media type, see Manual Quality Selection
Buffer managementConfigurable buffer targets and pruning, see Buffer Management

DRM & Content Protection

FeatureNotes
Key systemsWidevine, PlayReady, FairPlay and ClearKey via the Encrypted Media Extensions (EME), see DRM
Encryption schemesCENC (cenc) and CBCS (cbcs)
License configurationCustom license server URLs, request/response filters, priority per key system
Robustness levelsConfigurable audio/video robustness

Subtitles & Captions

FeatureNotes
Segmented TTML / IMSC1Fragmented and non-fragmented TTML, see Subtitles & Captions
WebVTTIncluding custom rendering, see Custom WebVTT Rendering
CEA-608/708In-band closed captions embedded in the video stream
External subtitlesAttaching external subtitle files at runtime
DVB font downloadingDownloadable fonts signaled in the MPD, see DVB Font Downloading

Data, Events & Reporting

FeatureNotes
CMCDCommon Media Client Data version 1 and 2, see CMCD
CMSDCommon Media Server Data (etp, mb), see CMSD
MPD and inband eventsEventStream and emsg handling with application callbacks, see Event Handling
Metrics and player eventsExtensive playback metrics and event API, see Player Events

Advanced

FeatureNotes
Content steeringMulti-CDN switching driven by a steering server, see Content Steering
Network interceptorsCustom request/response interceptors in the loading stack, see Network Interceptor
URL parameter insertionDASH Annex I flexible insertion of URL parameters, see Flexible Insertion of URL Parameters
PreloadingBuffering content before a video element is attached, see Preloading
ThumbnailsThumbnail tracks based on image adaptation sets, see Thumbnails
LC-EVCBasic support for LC-EVC enhanced streams, see LCEVC
Offline playbackDownloading streams for offline playback

Testing with LiveSim2

LiveSim2 is the DASH-IF live source simulator. It turns VoD assets into wall-clock synchronized, infinite live streams and is publicly hosted at livesim2.dashif.org. The URL generator allows interactive configuration of test streams, which makes it a good companion for testing dash.js:

  • Segment addressing: SegmentTemplate with $Number$ or $Time$, and SegmentTimeline variants
  • Low latency: chunked delivery with configurable chunk duration and availabilityTimeOffset
  • Multi-period: configurable number of periods per hour, period continuity signaling
  • Timing: all common UTCTiming methods (direct, HTTP head, xsdate, iso, NTP, SNTP)
  • Ad insertion: SCTE-35 emsg events and Server-Guided Ad Insertion with Alternative-MPD Replace events
  • Subtitles: generated stpp and wvtt subtitles for any number of languages, CEA-608 in-band captions
  • Encryption: on-the-fly ECCP (cbcs/cenc) encryption and EZDRM integration (Widevine, PlayReady, FairPlay)
  • Content steering: multiple service locations with trigger or rotate mode
  • MPD Patch: delta manifest updates with configurable Patch TTL
  • Negative testing: cyclic segment error codes (404/403) and traffic patterns (down, slow, hang) for robustness testing
  • CMAF ingest: acts as a CMAF ingest source (version 1.1) pushing segments to a configurable destination