.MPD
MPEG-DASH Media Presentation Description
Introduction
An .mpd file is the manifest of MPEG-DASH, Dynamic Adaptive Streaming over
HTTP, the international standard for adaptive streaming, ISO/IEC 23009-1. Like an HLS
playlist it tells a player which versions of a video exist and where to fetch each
segment, so the player can change quality as the connection changes. DASH is widely
used by large streaming services and plays in browsers through JavaScript players.
The manifest is an XML document. It describes the media but holds none of it: the segments themselves are usually fragmented MP4 or WebM files.
Software
- dash.js, the reference player for web pages
- Shaka Player, a player library for web pages
- ExoPlayer (Android)
- VLC media player (Windows, macOS, Linux, mobile)
- FFmpeg, which reads and writes DASH (Windows, macOS, Linux)
- GPAC and MP4Box, which packages video for DASH (Windows, macOS, Linux)
- Bento4, which packages video for DASH (Windows, macOS, Linux)
Structure
The root element is MPD. Its attributes say whether the presentation is
static, like a film, or dynamic, like a live broadcast, and
give its duration and the minimum buffer a player should keep.
Inside it, one or more Period elements divide the presentation in time,
for example a programme and an advert. Each period holds AdaptationSet
elements, one for each kind of content such as the video, the audio in each language
and the subtitles. Each adaptation set holds Representation elements, the
alternative encodings of that content, each with its bandwidth, codecs and, for video,
resolution. A SegmentTemplate, SegmentList or
SegmentBase tells the player how to find the segments of each
representation.
MPDMPD type, duration, buffer and profilesrootPeriodPeriod a span of the presentationrepeatedSetAdaptationSet one kind of content: video, an audio language, subtitlesrepeatedRepRepresentation one encoding, with its segment templaterepeated