Skip to main content

MPEG-DASH (Dynamic Adaptive Streaming Over HTTP)

MPEG-DASH (Dynamic Adaptive Streaming Over HTTP) is a streaming protocol that maintains high quality streaming of media content delivered via conventional HTTP web servers. Like HLS, MPEG-DASH breaks videos down into smaller parts so you can stream videos at various quality levels. A video is split into segments and this information is recorded in an MPD. The MPD is first delivered to the player, which uses it to request segments of the appropriate bitrate & resolution based on the network conditions and buffer fullness.

How does MPEG-DASH work?

The MPEG-DASH streaming process consists of 3 steps

  1. Encoding and segmentation:
    The origin server divides the video file into smaller segments a few seconds in length. The server also creates an index file – like a table of contents for the video segments. Then the segments are encoded, meaning formatted in a way that multiple devices can interpret. MPEG-DASH allows the use of any encoding standard.
  2. Delivery:
    When users start watching the stream, the encoded video segments are pushed out to client devices over the Internet. In almost all cases, a content delivery network (CDN) helps distribute the stream more efficiently.
  3. Decoding and playback:
    As a user’s device receives the streamed data, it decodes the data and plays back the video. The video player automatically switches to a lower or higher quality picture in order to adjust to network conditions – for example, if the user currently has very little bandwidth, the video will play at a lower quality level that uses less bandwidth.


MPEG-DASH example adapting to varying bandwidth conditions

MPEG-DASH facilitates ABR streaming. In ABR streaming, a video is transcoded into multiple resolutions and bitrate combinations and each is referred to as a “rendition”. A collection of renditions is a bitrate ladder:

  • 1080p 5.0 mbps
  • 720p 4.0 mbps
  • 640p 3.2 mbps
  • 480p 2.0 mbps
  • 270p 1 mbps

When a player starts to playback a video, it senses the available bandwidth and let’s assume its 20 mbps. This is much greater than the highest bitrate viz. 5 mbps. So, the player safely downloads the highest bitrate, 5 mbps for the first segment/chunk (perhaps, 6 seconds long). Then the player senses the bandwidth again and if it is still very high, it asks for the highest bandwidth again.

If the bandwidth suddenly drops to 5 mbps, then the player will probably request for the 4 mbps chunk from the server because it is risky to ask for the 5 mbps chunk. It then receives and plays back the 4 mbps chunk. This is how the bitrate and quality are adaptively varied to adapt to the varying bandwidth conditions.