ALPAPLAYER
EN
Streaming technology

MPEG-DASH vs HLS: How They Differ and Which Devices Play Them

DASH vs HLS: two manifest files, .m3u8 for HLS and .mpd for DASH, pointing to the same shared video segments

Short answer: MPEG-DASH is an international standard, ISO/IEC 23009-1, for delivering video over HTTP in segments while the player switches quality to match the connection. HLS is built on the same idea. The visible difference in DASH vs HLS is the manifest: DASH uses an XML .mpd file, HLS uses a plain-text .m3u8 playlist. Apple devices play HLS natively; many other platforms play both.

Key takeaways

  • DASH and HLS share one idea: video is cut into segments, delivered over HTTP, and quality adapts to the connection.
  • DASH uses an XML .mpd manifest and an ISO/IEC standard; HLS uses text .m3u8 playlists and a spec that originated at Apple.
  • DASH is codec-agnostic, while Apple's system players do not play DASH natively.
  • CMAF is a shared segment format that lets HLS and DASH use the same media files.
  • As a viewer you do not choose which one is used; what you can play depends on your player.

DASH vs HLS is one of the most common questions in video streaming, and the honest answer is that the two are more alike than different. Both carry a large share of the world's video, and at first glance they look almost identical. This guide explains what MPEG-DASH is, what its manifest looks like, how it compares with HLS in a table, and how CMAF brings the two worlds closer.

We also state plainly which formats Alpa Player, a free media player developed by https://alpayazilim.com, plays, near the end of the article.

What is MPEG-DASH?

MPEG-DASH (Dynamic Adaptive Streaming over HTTP) is an international standard for cutting video into small segments, delivering them over HTTP, and letting the player change quality to match the connection. It is published as ISO/IEC 23009-1 and was first approved in 2012.

Two things set DASH apart from HLS. First, it is a standard from the MPEG working group, not one company's specification. Second, it is codec-agnostic by design: it does not dictate which codec to use, only how segments are described and delivered. Some of the largest video services use DASH, and YouTube and Netflix are commonly named among them.

For the HLS side, read what is HLS streaming. This article looks at the two together.

How does MPEG-DASH work?

In DASH, video and audio are encoded separately and cut into segments, an XML file called an MPD describes everything, and the player reads it to download the right pieces. The logic is nearly the same as HLS; what changes is the file format.

An MPD (Media Presentation Description) has a clear hierarchy. One MPD holds one or more Periods. Each Period holds AdaptationSets, which are types of content such as video, audio, or subtitles. Each AdaptationSet holds Representations, the same content at different bitrates. This simple MPD offers two video qualities and one audio stream:

<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" type="static"
     mediaPresentationDuration="PT10M" minBufferTime="PT4S"
     profiles="urn:mpeg:dash:profile:isoff-live:2011">
  <BaseURL>https://cdn.example.com/video/</BaseURL>
  <Period>
    <AdaptationSet contentType="video" mimeType="video/mp4" segmentAlignment="true">
      <SegmentTemplate timescale="90000" duration="360000" startNumber="1"
          initialization="$RepresentationID$/init.mp4"
          media="$RepresentationID$/seg-$Number$.m4s"/>
      <Representation id="360p" bandwidth="800000" width="640" height="360" codecs="avc1.42c01e"/>
      <Representation id="720p" bandwidth="2800000" width="1280" height="720" codecs="avc1.4d401f"/>
    </AdaptationSet>
    <AdaptationSet contentType="audio" mimeType="audio/mp4" lang="en">
      <SegmentTemplate timescale="48000" duration="192000" startNumber="1"
          initialization="$RepresentationID$/init.mp4"
          media="$RepresentationID$/seg-$Number$.m4s"/>
      <Representation id="audio" bandwidth="128000" codecs="mp4a.40.2"/>
    </AdaptationSet>
  </Period>
</MPD>

The SegmentTemplate says segment addresses are built from a pattern. For video, 360000 divided by 90000 gives 4-second segments, and the player fills in the pattern itself to get addresses such as 720p/seg-1.m4s and 720p/seg-2.m4s. Quality selection follows the same logic as in HLS; see adaptive bitrate streaming for how it works.

How do an MPD and an M3U8 manifest compare?

An MPD is a structured XML document while an M3U8 is plain text read line by line, but both do the same job: they say which segment lives where. HLS's playlist format is covered in M3U8 vs M3U.

Manifest files compared
FeatureHLS (.m3u8)MPEG-DASH (.mpd)
FormatPlain text with tag linesXML document
Quality list#EXT-X-STREAM-INF lines in a master playlistRepresentation elements
Segment addressesWritten out one by one in a media playlistOften generated from a template
Number of filesMaster playlist plus one list per qualityUsually a single MPD
ReadabilityEasy to read by handMore detailed, more verbose

What are the main differences between DASH and HLS?

The main differences between DASH and HLS are their origins, standards status, manifest formats, and where they play natively. Both deliver video in HTTP segments and switch quality automatically.

MPEG-DASH vs HLS
FeatureHLSMPEG-DASH
OriginApple, 2009MPEG, an ISO/IEC standard, 2012
Document statusRFC 8216, an informational documentISO/IEC 23009-1, an international standard
Manifest.m3u8 text.mpd XML
Segment formatMPEG-2 TS and fragmented MP4 (fMP4)Mostly fragmented MP4; a TS profile exists
CodecsDevice support decidesSpec is codec-agnostic; the player sets the limit
On Apple devicesNativeNot native; needs a player library
Content protection (DRM)FairPlay and AES-128 encryptionTypically Widevine and PlayReady
Low latencyLow-Latency HLSLow-latency DASH with CMAF chunked delivery

There is no technical winner. The choice is usually driven by one question: which devices must play it? For codec background, see H.264 vs H.265 vs AV1.

What is CMAF and how does it bring them together?

CMAF (Common Media Application Format) is a shared segment format, built on fragmented MP4, that lets HLS and DASH use the very same media segments. Instead of producing separate files for each technology, a publisher can produce the segments once and serve them through two manifests.

  • One segment set: the same .m4s files are referenced by both the .m3u8 and the .mpd.
  • Lower storage and CDN cost: the content is not stored or cached twice.
  • Encryption: common encryption (CENC) lets the same encrypted segments work with different DRM systems.
  • Low latency: segments can be split into smaller chunks.

Apple adding fragmented MP4 to HLS in 2016 was one of the steps that opened the door to this overlap. For publishers, the difference now often shrinks to the manifest file. If the container idea is new, MP4 vs MKV is a good primer.

Which devices play which?

Which technology plays depends on the device and the player, and as a viewer you do not make the choice. A general picture:

HLS and DASH support by platform (general picture)
PlatformHLSDASH
iPhone, iPad, Apple TV, SafariNativeNot native; via a library
Android (ExoPlayer / Media3)SupportedSupported
Desktop browsersVia a library (such as hls.js)Via a library (such as dash.js)
Smart TVsVaries by platformVaries by platform

Android's ExoPlayer (Media3) library supports both HLS and DASH. Which one a service offers is invisible on your screen; the player looks at the manifest it receives and decides for itself.

Which one should a publisher choose?

For a publisher the choice depends on the audience's devices and on content-protection needs, which is why many services offer both. The questions to ask are:

  • Most viewers use Apple devices: HLS is unavoidable because it plays natively.
  • Android and web audience: DASH or HLS, depending on player support.
  • Protected content: which DRM systems work on which devices decides it.
  • Interactive, low-latency streams: consider Low-Latency HLS or low-latency DASH.
  • Storage cost matters: CMAF lets one segment set serve both manifests.

As a viewer you decide none of this; your player only needs to understand the manifest it is handed. A player that handles both simply fails less often.

What does Alpa Player do with DASH and HLS?

Alpa Player's documented support covers M3U and M3U8 playlists, HLS streams, MP4, MKV, RTSP, and more. DASH (.mpd) is not named separately in that list, so before relying on an .mpd source it is wise to run a short test on your own device.

Alpa Player runs on Android phones and tablets, Android TV and Google TV, Samsung TV (Tizen 2020 and later), LG TV (webOS 2020 and later), and Windows. On Android the default engine is built on ExoPlayer (Media3), and a VLC engine or an external player can be chosen instead; ExoPlayer vs VLC explains the differences. Download Alpa Player for free.

The app has no built-in channels, movies, series, or lists, and it is not a streaming service. Having the right to use whatever you add is your responsibility. Saved addresses and passwords are kept encrypted with AES-256 in the device's secure storage, are not shown on screen, and are not sent to Alpa Yazılım. See the legal notice. This article is not legal advice.

Does the choice change picture quality or speed requirements?

No fundamental quality or efficiency gap separates DASH and HLS; encoding quality and the network decide the result. Content encoded with the same codec at the same bitrate looks similar whichever manifest delivers it.

In practice, what shapes quality is the speed and stability of your connection. For the speeds each quality needs, see internet speed for streaming, and for a general introduction to players, what is a media player.

Frequently asked questions

What does MPEG-DASH stand for?

MPEG-DASH stands for Dynamic Adaptive Streaming over HTTP. It is an international standard, ISO/IEC 23009-1, for cutting video into small segments, delivering them over HTTP, and letting the player switch quality to match the connection.

What is the difference between DASH and HLS?

Both cut video into segments, deliver them over HTTP, and adapt quality automatically. The differences are in origin and format: HLS came from Apple and uses text .m3u8 playlists, while DASH is an international standard that uses an XML .mpd manifest. Apple devices play HLS natively.

Is DASH or HLS better?

Neither is better across the board. Picture quality is decided by encoding and the network. The choice depends on target devices: Apple devices need HLS, while many other platforms can use either. As a viewer you do not choose which one a service uses.

What is CMAF?

CMAF, the Common Media Application Format, is a shared segment format based on fragmented MP4. HLS and DASH can use the same video segments, with only the manifests (.m3u8 and .mpd) differing. That lowers storage and caching costs for publishers.

Does Alpa Player play DASH?

Alpa Player's documented support is M3U and M3U8 playlists, HLS, MP4, MKV, RTSP, and more. DASH is not named separately, so we suggest a short test on your own device before relying on an .mpd source.

What is an .mpd file?

An .mpd file is DASH's manifest. This XML document, whose name abbreviates Media Presentation Description, describes the video qualities, audio streams, and segment address patterns. It holds no video data; the player reads it and downloads the segments.

Sources