explaingit

dash-industry-forum/dash.js

5,516JavaScriptAudience · developerComplexity · 2/5LicenseSetup · easy

TLDR

A JavaScript library that adds adaptive video streaming to any web page, it picks the best quality for each viewer's internet connection in real time, the same way Netflix and YouTube work, using only a script tag.

Mindmap

mindmap
  root((dash.js))
    What it does
      Adaptive video streaming
      Real-time quality switching
      Browser-native playback
    How it works
      MPD manifest format
      Chunked video requests
      Encrypted Media Extensions
    Setup
      Script tag include
      Point at MPD file
      Ten lines of code
    Use cases
      Reference DASH player
      DRM protected video
      Custom streaming apps
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Add adaptive video streaming to a web app so viewers always get the best quality their connection can handle.

USE CASE 2

Build a DASH-compliant video player to test or validate MPEG-DASH content before deploying to production.

USE CASE 3

Play DRM-protected video in a browser using Encrypted Media Extensions without requiring browser plugins.

USE CASE 4

Use the hosted reference player and sample streams to prototype a streaming feature without your own backend.

Tech stack

JavaScriptMPEG-DASHEMEHTML5

Getting it running

Difficulty · easy Time to first run · 5min
Use freely for any purpose including commercial use, BSD license requires keeping the copyright notice.

In plain English

dash.js is a JavaScript library that plays video in a web browser using a streaming format called MPEG-DASH. DASH stands for Dynamic Adaptive Streaming over HTTP, and it is a method of delivering video that adjusts quality in real time based on the viewer's internet speed. Rather than downloading an entire video file, the browser requests small chunks, and the player picks the right quality level for each chunk depending on how fast the connection is at that moment. This is the same general approach used by YouTube, Netflix, and most large streaming platforms. The library runs entirely in the browser using standard web APIs for handling media and encrypted content. It is a reference implementation, meaning the Dash Industry Forum produced it to demonstrate correct, spec-compliant behavior for developers building DASH players or testing DASH content. Using it is straightforward. You include the library in a web page with a script tag, create a player object, and point it at an MPD file, which is the manifest format DASH uses to describe the available video streams. A working example showing the minimum required code is included in the README and fits in about ten lines of HTML and JavaScript. The library also supports encrypted video through a standard called Encrypted Media Extensions, which lets browsers play content protected by digital rights management systems without browser plugins. The project is maintained by the Dash Industry Forum, the standards body that oversees the DASH specification. Full documentation, a quickstart guide, and a hosted reference player with sample streams are available on the project's documentation site. The library is released under a BSD license.

Copy-paste prompts

Prompt 1
Show me the minimal HTML and JavaScript needed to embed a dash.js player on a web page and point it at an MPD manifest file.
Prompt 2
I want to play DRM-protected video using dash.js with Widevine. Walk me through the Encrypted Media Extensions setup and what configuration dash.js needs.
Prompt 3
Help me customize the dash.js player to start at a specific quality level and disable automatic bitrate adaptation for a controlled testing environment.
Prompt 4
My DASH stream is served from a different domain than my web page. Explain the CORS configuration needed on my video server to make dash.js work.
Prompt 5
Explain to a non-technical PM what MPEG-DASH adaptive streaming is, why it matters for video quality, and how dash.js compares to just using an MP4 in an HTML video tag.
Open on GitHub → Explain another repo

← dash-industry-forum on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.