К блогу

MPEG-DASH объяснён, и как он соотносится с HLS

MPEG-DASH — это адаптивный стриминговый стандарт ISO, на котором держатся Netflix и YouTube. Понятное руководство по манифестам .mpd, fMP4-сегментам, CMAF и сравнение DASH с HLS.

By

Если вы открывали DevTools Chrome на Netflix или YouTube и видели запросы на файлы, оканчивающиеся на .mpd и .m4s, вы смотрели MPEG-DASH в действии. XML-файл — это манифест, файлы .m4s — короткие fragmented-MP4-сегменты видео и аудио, а ваш браузер сшивает их в реальном времени поверх обычного HTTP.

DASH — это кузен HLS из открытого стандарта. Где HLS принадлежит Apple, стандартам MPEG/ISO принадлежит DASH. Где HLS использует текстовые плейлисты .m3u8, DASH использует XML-манифесты .mpd. Где HLS изначально настаивал на H.264, у DASH никогда не было предпочтения по кодекам. Два протокола решают одну и ту же проблему с разных стартовых точек, и продуманный стриминговый сервис в 2026 году поставляет оба. MPEG-DASH — Dynamic Adaptive Streaming over HTTP — это стандарт ISO/IEC 23009-1 для доставки видео в виде цепочки коротких fMP4-сегментов, описанных XML-манифестом (.mpd) и получаемых по обычному HTTP.

Это руководство пройдёт по тому, что на самом деле содержит .mpd, как работает иерархия Period / AdaptationSet / Representation в DASH, где встраивается DRM, аргументы за и против DASH и HLS, и что происходит, когда вы пытаетесь сохранить один из этих потоков на диск.

Главное {#key-takeaways}

  • MPEG-DASH — открытый стандарт ISO для адаптивного HTTP-стриминга — ISO/IEC 23009-1. HLS — это RFC 8216.
  • Манифест .mpd — это XML, а не простой текст. Он описывает Period, AdaptationSet и Representation — строгую иерархию, которую плеер обходит при запуске и при каждой смене качества.
  • DASH не зависит от кодеков по дизайну. H.264, H.265, VP9, AV1, AAC, Opus — манифест объявляет строки кодеков, а плеер декодирует.
  • Медиа-сегменты — это fragmented MP4 (.m4s), те же CMAF-фрагменты, что используются современным HLS. Один набор байтов может обслуживать оба протокола.
  • DRM использует MPEG Common Encryption (CENC), так что один зашифрованный файл работает с Widevine, PlayReady или FairPlay в зависимости от модуля расшифровки клиента.
  • Платформы Apple не поддерживают DASH нативно. iPhone, iPad, Safari и Apple TV требуют HLS — только DASH — это провал.
  • Netflix, YouTube, Disney+, Hulu и Max поставляют DASH и HLS бок о бок; Apple TV+, iTunes и Twitch поставляют только HLS.

Простое объяснение

Забудьте на минуту об аббревиатурах. У стримингового сервиса в любом случае одна и та же проблема: доставить длинное видео зрителям по беспорядочным соединениям, дать им мгновенно перематывать, дать им адаптироваться к изменениям пропускной способности в процессе воспроизведения и сделать это дёшево поверх общедоступного HTTP. Общеотраслевое решение — нарезать видео на короткие сегменты, написать манифест с их перечислением и позволить плееру получать то, что ему нужно, по порядку. HLS делает это с текстовыми плейлистами; DASH делает это с XML-манифестами. Работа одна и та же; бумажная волокита разная.

С точки зрения плеера подход DASH ощущается почти идентичным HLS. Плеер получает небольшой манифест при запуске, узнаёт, какие качества и аудиодорожки доступны, выбирает по одному из каждого на основе пропускной способности и области просмотра, затем получает поток коротких сегментов и подаёт их декодеру. Смены качества происходят между сегментами. Прямые трансляции работают благодаря тому, что манифест растёт со временем. Перемотка мгновенна, потому что плеер прыгает к любому сегменту, покрывающему целевую отметку.

Видимая пользователю разница между двумя протоколами небольшая, но реальная. Плейлисты HLS — обычный текст; манифесты DASH — XML. Сегменты HLS исторически были .ts (MPEG-2 Transport Stream), а теперь обычно fMP4; сегменты DASH всегда были fMP4 с расширением .m4s. Спонсирующие организации тоже разные: Apple изобрела HLS и опекает его, тогда как DASH вышел из MPEG и DASH Industry Forum как открытый стандарт ISO без единого вендора в управлении. Для парного знакомства HLS в деталях освещает, как от начала до конца выглядит плейлист .m3u8.

Как на самом деле работает DASH

DASH-поток — это XML-манифест плюс куча fragmented-MP4-сегментов, и всё это обслуживается по обычному HTTP. Та же форма, что у HLS, другой формат на каждом уровне.

Манифест .mpd

Первое, что получает DASH-плеер, — Media Presentation Description, .mpd. В отличие от обычного текстового плейлиста HLS, это XML-документ с определённой схемой. Вот слегка укороченный пример:

<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011"
     type="static"
     mediaPresentationDuration="PT1H30M"
     minBufferTime="PT2S"
     profiles="urn:mpeg:dash:profile:isoff-live:2011">
  <Period id="0" start="PT0S">
    <AdaptationSet mimeType="video/mp4" segmentAlignment="true"
                   startWithSAP="1" maxWidth="1920" maxHeight="1080">
      <Representation id="v1" codecs="avc1.640028"
                      width="1920" height="1080" bandwidth="5000000">
        <SegmentTemplate timescale="1000" duration="4000"
                         initialization="v1/init.mp4"
                         media="v1/seg-$Number$.m4s"
                         startNumber="1"/>
      </Representation>
      <Representation id="v2" codecs="avc1.4d401f"
                      width="1280" height="720" bandwidth="2800000">
        <SegmentTemplate timescale="1000" duration="4000"
                         initialization="v2/init.mp4"
                         media="v2/seg-$Number$.m4s"
                         startNumber="1"/>
      </Representation>
    </AdaptationSet>
    <AdaptationSet mimeType="audio/mp4" lang="en">
      <Representation id="a1" codecs="mp4a.40.2" bandwidth="128000">
        <SegmentTemplate timescale="1000" duration="4000"
                         initialization="a1/init.mp4"
                         media="a1/seg-$Number$.m4s"
                         startNumber="1"/>
      </Representation>
    </AdaptationSet>
  </Period>
</MPD>

Каждый атрибут означает что-то конкретное. type="static" помечает это как VOD (прямой эфир — это type="dynamic"). mediaPresentationDuration="PT1H30M" — это длительность в формате ISO 8601. Каждый Representation несёт строку кодека и бюджет пропускной способности. SegmentTemplate — это где происходит магия: вместо того чтобы перечислять URL каждого сегмента, как это делает HLS, DASH позволяет манифесту объявить шаблон URL, а плеер вычисляет URL на лету.

Period, AdaptationSet и Representation

Строгая иерархия внутри манифеста — это концептуальное сердце DASH:

  • Period — непрерывный фрагмент таймлайна. Большинство фильмов — это один период; вещатели используют несколько периодов, чтобы сшивать рекламу или границы глав.
  • AdaptationSet — коллекция альтернативных кодировок одного и того же контента, взаимозаменяемых во время выполнения. У типичного фильма есть один видео-AdaptationSet, один или несколько аудио-AdaptationSet (по одному на язык) и один или несколько AdaptationSet субтитров.
  • Representation — единичная конкретная кодировка. 1080p H.264 при 5 Мбит/с — это Representation; 720p H.264 при 2,8 Мбит/с — другой; 720p VP9 при 1,5 Мбит/с — ещё один. Плеер выбирает один Representation для каждого AdaptationSet и может переключиться на другой на любой границе сегмента внутри того же AdaptationSet.

Эта трёхуровневая модель более структурирована, чем плоский подход «варианты и сегменты» в HLS, и поэтому DASH выигрывает по расширяемости: несколько аудиодорожек, дорожки trick-play, дорожки миниатюр и вставка рекламы по периодам встраиваются чисто, без изобретения нового синтаксиса манифеста.

Сегменты и инициализация

Байты Representation приходят в двух видах. Инициализационный сегмент — это небольшой fMP4-файл, содержащий бокс moov — параметры кодека, метаданные дорожки и конфигурацию декодера. Плеер получает его один раз для каждого Representation. Медиа-сегменты — это собственно аудио и видео, обычно длиной 2–6 секунд каждый, нарезанные по границам ключевых кадров для видеодорожек, чтобы плеер мог начать декодирование с начала любого сегмента.

Когда манифест устанавливает startWithSAP="1", каждый сегмент начинается со Stream Access Point — эквивалента флага EXT-X-INDEPENDENT-SEGMENTS HLS, гарантирующего, что сегменты независимо декодируемы. Без этой гарантии последующие сегменты могут зависеть от предыдущих, что делает адаптивное переключение небезопасным. Поскольку URL SegmentTemplate управляются шаблонами (v1/seg-$Number$.m4s), манифест может описать 90-минутный фильм в нескольких сотнях байтов XML. SegmentTimeline — альтернатива, когда длительности не однородны.

Common Encryption (CENC)

История DRM в DASH идёт через MPEG Common Encryption (CENC), ISO/IEC 23001-7. CENC шифрует сами медиа-сегменты с помощью AES-128 в режиме CTR под ключом контента, а затем объявляет, какие DRM-системы могут выдать этот ключ. В .mpd вы увидите элементы ContentProtection примерно такого вида:

<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc"
                   cenc:default_KID="34e5db32-8625-47cd-ba06-68fca0655a72"/>
<ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
  <cenc:pssh>AAAAW3Bzc2gAAAAA...</cenc:pssh>
</ContentProtection>
<ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95">
  <cenc:pssh>AAACfHBzc2gAAAAA...</cenc:pssh>
</ContentProtection>

Первый блок объявляет ID ключа по умолчанию в рамках CENC. Второй — UUID Widevine; третий — UUID PlayReady. Модуль расшифровки контента (CDM) вашего браузера читает тот блок, который соответствует поддерживаемому им DRM, отправляет запрос лицензии на лицензионный сервер сервиса со встроенными данными PSSH (Protection System Specific Header) и получает обратно ключ контента, необходимый для расшифровки сегментов. Полную картину см. в как Widevine и PlayReady контролируют премиум-потоки. Поддержка FairPlay в DASH исторически встречается редко — FairPlay был спроектирован для HLS — но CMAF + CBCS-шифрование сделали кросс-DRM FairPlay-over-DASH технически возможным на небольшом наборе платформ.

Независимость от кодеков по дизайну

HLS изначально привилегировал H.264 (ранние устройства Apple не могли декодировать ничего другого), и добавление новых кодеков занимало многолетний процесс спецификации. DASH никогда не выбирал кодек — манифест просто объявляет строки кодеков (avc1.640028, hev1.1.6.L150.B0, vp09.00.50.08, av01.0.05M.08), а плеер проверяет, поддерживает ли его декодер их. Именно поэтому YouTube смог поставлять AV1 поверх DASH за годы до того, как эквивалентная поддержка HLS появилась у Apple. Поскольку слой манифеста — единственное, что нужно понимать DASH-плеерам, VidMost может разобрать .mpd, пройти по URL SegmentTemplate, получить каждый fMP4-фрагмент и ремультиплексировать результат, не заботясь о том, какой кодек внутри.

DASH против HLS: честное сравнение

DASH и HLS решают одну и ту же проблему с разными компромиссами. Ни один не лучше универсально. Вот аргументы за каждый по осям, которые действительно важны.

Формат манифеста

.mpd DASH — это XML с определённой схемой: расширяемый (новые функции получают новые элементы, проверяемые схемой, старые плееры игнорируют то, чего не понимают), но многословный. .m3u8 HLS — это простой текст с тегами #EXT-X-, читаемый с одного взгляда и легко поддающийся grep. DASH выигрывает по структуре и машинной валидации; HLS — по человеческой читаемости.

Задержка

Оба начинали с задержки от секунд до десятков секунд. У обоих есть низколатентные расширения: LL-HLS использует частичные сегменты, блокирующие перезагрузки плейлиста и подсказки предзагрузки (Apple заменил свой более ранний дизайн с HTTP/2 push на EXT-X-PRELOAD-HINT), тогда как LL-DASH использует сегменты с chunked transfer encoding и Common Media Application Format Live profile. Оба нацелены на задержку «от стекла до стекла» 2–5 секунд в продакшене. Для субсекундной задержки переходят на WebRTC.

Поддержка кодеков

DASH с первого дня не зависит от кодеков. H.264, H.265, VP9, AV1, AAC, Opus, FLAC, AC-4 — манифест объявляет строку кодека, а плеер решает. HLS начинал только с H.264, потому что этого требовало оригинальное железо iPhone. Apple постепенно расширяла поддержку: H.265 поверх fMP4 с 2017 года, Dolby Vision и HDR10 с 2018 года, AV1 с поколения iPhone 15. Современный HLS не заблокирован на H.264, но у истории кодеков протокола есть отставание, которого у DASH никогда не было.

DRM

Оба опираются на шифрование уровня сегмента на основе AES, но DRM-системы поверх различаются. DASH обычно использует CENC с Widevine и PlayReady — один зашифрованный файл работает с обоими, потому что ключ контента один и тот же; различается лишь формат запроса лицензии. HLS исторически использует FairPlay Streaming (только Apple) плюс, всё чаще, Widevine через CMAF + CBCS. Как только ваш сервис на CMAF, одни и те же зашифрованные сегменты могут обслуживать оба типа манифестов и все три основные DRM-системы.

Поддержка Apple/iOS

HLS обязателен на iOS, iPadOS, Safari и Apple TV. DASH не поддерживается нативно ни на одной платформе Apple. Это единственный самый большой решающий фактор в стратегии DASH-vs-HLS. Воспроизведение DASH в Safari возможно только через Media Source Extensions плюс JavaScript-обёртку вроде shaka-player или dash.js, и даже тогда оно не покрывает все граничные случаи iOS (AirPlay, элементы управления на экране блокировки, picture-in-picture). Любой сервис, нацеленный на iPhone, должен поставлять HLS. Только DASH — провал.

Совместимость с CDN и сходимость на CMAF

Оба протокола — это чистый HTTP. Любой CDN, обслуживающий статические файлы, может обслуживать DASH- или HLS-поток — стоимость и конфигурация CDN по сути идентичны. Самое важное событие последнего десятилетия в том, что DASH и HLS теперь делят байты сегментов. CMAFCommon Media Application Format, ISO/IEC 23000-19 — определяет профиль fragmented-MP4, удовлетворяющий и DASH, и современный HLS. Стриминговый сервис может закодировать один раз в CMAF-сегменты и написать и .mpd, и .m3u8, указывающие на одни и те же файлы .m4s. Именно это и происходит сейчас в YouTube, Netflix, Apple и у большинства хостинговых видеопровайдеров в 2026 году.

Кто что поставляет в 2026 году

  • Netflix — DASH как основной на вебе, Windows, Android, смарт-ТВ и консолях; HLS как запасной для Safari и iOS.
  • YouTube — DASH в вебе и на Android с VP9 / AV1; HLS для iOS, Safari, AirPlay и большинства ТВ-приложений.
  • Apple TV+, iTunes Store — только HLS.
  • Twitch — только HLS, для live и VOD, с момента вывода RTMP-воспроизведения в 2014 году.
  • Disney+, Hulu, Max, Amazon Prime Video — DASH или HLS в зависимости от клиента, часто одни и те же CMAF-сегменты под обоими манифестами.

HLS владеет устройствами Apple и делит остальной рынок с DASH. Большинство крупных сервисов поддерживают оба, потому что альтернатива — оставить часть аудитории без видео.

Что это значит, если вы хотите сохранить видео

Знание того, как работает DASH, делает практическую проблему загрузки конкретной. Каждая проблема, с которой пользователи HLS сталкиваются при попытке сохранить поток, относится и к DASH, часто хуже:

  • Сохранить как в браузере получает только .mpd. Это XML-манифест. В нём ноль видеобайтов. Открытие его в VLC работает только пока сетевая сессия ещё активна и URL сегментов не истекли.
  • DASH-сегменты — это файлы .m4s — один init-сегмент плюс десятки или сотни медиа-сегментов на каждый Representation. Каждый — это fragmented-MP4-фрагмент, бесполезный сам по себе. Чтобы получить один воспроизводимый файл, вам нужно получить init-сегмент плюс каждый медиа-сегмент по порядку и ремультиплексировать их. (Если вы туманно представляете, что на самом деле внутри .m4s, см. контейнер против кодека.)
  • Вам пришлось бы разбирать XML, проходить по URL SegmentTemplate и ремультиплексировать. Это означает писать код, понимающий заполнители $Number$, $Time$, $RepresentationID$ и $Bandwidth$, собирающий URL, получающий их параллельно, не молотя CDN, и пропускающий байты через ffmpeg или mp4box. Это не выходной скрипт — это реальное программное обеспечение.
  • Выбор варианта имеет значение. Выберите неверный Representation — и вы скачали копию 480p фильма в 1080p. Токены тоже истекают — многие URL .mpd и сегментов подписаны и становятся неактуальными за минуты.

VidMost обрабатывает всё это. Он разбирает .mpd, выбирает Representation наивысшего качества для видео и аудио, скачивает каждый сегмент параллельно и ремультиплексирует CMAF-фрагменты в один чистый MP4. Для DRM-защищённых DASH-потоков (типичная связка Widevine + PlayReady) встроенная поддержка Widevine L3 в VidMost работает везде, где доступно воспроизведение L3 — фактический потолок качества задаётся сервисом и уровнем DRM, а премиум-платформы обычно ограничивают L3-потоки разрешением 480p–720p. Вы вставляете URL — получаете MP4.

Распространённые заблуждения и подводные камни

Несколько связанных с DASH путаниц постоянно появляются в ветках форумов. Стоит их прояснить.

  • «MPEG-DASH — это что-то от Google». Это не так. DASH — открытый стандарт MPEG/ISO (ISO/IEC 23009-1), управляемый DASH Industry Forum — консорциумом, включающим Adobe, Microsoft, Netflix и Qualcomm. Google помогал его разрабатывать и использует его на YouTube, но ни один вендор не владеет спецификацией.
  • «DASH новее и поэтому лучше». DASH (2012) новее HLS (2009), но «лучше» зависит от состава ваших платформ. Если ваша аудитория на iPhone, HLS выигрывает по умолчанию. Если ваша аудитория на Android и смарт-ТВ с максимальной гибкостью по кодекам, выигрывает DASH. Большинство сервисов поставляют оба.
  • «.mpd — это видео». Это не так. Это манифест. Само видео живёт в сегментах .m4s, на которые ссылается манифест.
  • «Если сайт использует DASH, мой HLS-плеер не сможет его воспроизвести». Верно для нативных плееров. Но большинство современных веб-плееров — shaka-player, dash.js, hls.js, video.js — обрабатывают оба внутри браузера, подавая сегменты в видеоэлемент через Media Source Extensions.
  • «DASH всегда означает DRM». Это не так. Множество DASH-потоков идут без шифрования: трансляции прямых событий, образовательные платформы и большая часть бесплатного контента YouTube. DRM — это опциональный слой, объявляемый через элементы ContentProtection.

Заключение

DASH — это HLS-близнец из параллельной вселенной. Оба нарезают видео на короткие сегменты, описывают их в манифесте и отправляют по обычному HTTP. Различия — XML против простого текста, ISO-стандарт против спецификации Apple, независимость от кодеков против истории привязки к кодекам — важны внутри отрасли, но редко имеют значение для зрителей. Что важно — это что стриминговые сервисы, лицензирующие контент у каждой студии мира, остановились на этих двух протоколах, всё больше сходясь на общих CMAF-сегментах под обоими манифестами. Как только вы научитесь распознавать запрос .mpd и понимать иерархию Period / AdaptationSet / Representation, странное поведение современного стриминга перестаёт быть загадочным — это всё тот же цикл: получить манифест, выбрать варианты, получить сегменты, декодировать, повторить. Если вы предпочитаете полностью пропустить уровень протокола и просто сохранить видео, VidMost обрабатывает HLS, MPEG-DASH, fMP4, CMAF и DRM-защищённые потоки.

Связанные материалы

Часто задаваемые вопросы

Что такое MPEG-DASH?
MPEG-DASH расшифровывается как Dynamic Adaptive Streaming over HTTP. Это стандарт ISO/IEC 23009-1 для доставки видео и аудио по открытому вебу в виде цепочки коротких сегментов, описанных XML-манифестом под названием .mpd. DASH-плеер читает манифест, выбирает уровень качества, который, по его мнению, выдержит соединение, и получает сегменты по обычному HTTPS — переключаясь на другое качество между сегментами при изменении условий. Это протокол, на котором держится большая часть YouTube и Netflix.
Что такое файл .mpd?
Файл .mpd — это Media Presentation Description для DASH-потока, XML-документ, сообщающий плееру всё, что ему нужно знать для воспроизведения потока. Он перечисляет периоды (временные срезы), AdaptationSet (по одному для видео, языка аудио или дорожки субтитров), Representation (каждый уровень качества), строки кодеков и шаблоны URL, которые плеер использует для получения каждого сегмента. Он не содержит ни одного видеобайта. Сохранение одного только .mpd даёт вам рецепт без ингредиентов, так же, как .m3u8 для HLS.
Что лучше, DASH или HLS?
Ни один не лучше универсально — они служат разным рынкам. DASH не зависит от кодеков, стандартизирован ISO и является стандартом по умолчанию на YouTube, Netflix и большинстве смарт-ТВ и Android-устройств. HLS обязателен на iPhone, iPad, Mac и Apple TV; у него более простой текстовый манифест и более широкая поддержка инструментов CDN. Большинство крупных стриминговых сервисов в 2026 году поставляют оба, часто из одних и тех же CMAF-сегментов под двумя разными манифестами. Честный ответ — тот, который требует ваша целевая платформа.
Почему YouTube использует и DASH, и HLS?
Основной протокол YouTube в вебе и на Android — MPEG-DASH, который позволяет ему доставлять видео VP9 и AV1 с высокой эффективностью. Но платформы Apple — iPhone, iPad, Mac Safari, Apple TV, AirPlay — не поставляют нативный декодер DASH, поэтому YouTube отдаёт HLS этим клиентам, чтобы охватить аудиторию iOS. Базовая медиа часто состоит из одних и тех же CMAF-фрагментов под обоими манифестами. Откройте YouTube в Chrome на Android — увидите запросы .mpd; откройте в Safari — увидите запросы .m3u8.
Почему iOS нативно не поддерживает DASH?
Apple изобрела HLS в 2009 году и с тех пор встраивает его в каждую платформу Apple. В iOS, iPadOS, Safari или tvOS нет встроенного декодера MPEG-DASH — рекомендации App Store от Apple дополнительно требуют, чтобы приложения, стримящие по сотовой связи, использовали HLS. Воспроизведение DASH в Safari возможно только через Media Source Extensions плюс JavaScript-обёртку вроде shaka-player или dash.js, что добавляет нагрузку на CPU и не всегда работает так же плавно, как нативный HLS. Поэтому серьёзно настроенные на воспроизведение на iPhone сервисы поставляют HLS.
Можно ли скачать DASH-поток?
Не правым кликом. Сохранение файла .mpd даёт вам XML-манифест, а не видео — байты живут в десятках или сотнях отдельных файлов сегментов .m4s, на которые ссылаются URL SegmentTemplate. Чтобы получить один воспроизводимый файл, вам нужно разобрать .mpd, пройти по шаблонам URL, получить каждый сегмент и ремультиплексировать их в MP4 или MKV. Специализированные инструменты вроде VidMost автоматизируют весь поток. Для DRM-защищённого DASH (Widevine, PlayReady) даже этого недостаточно без действительной лицензии.
Что такое Common Media Application Format (CMAF)?
CMAF — это ISO/IEC 23000-19, стандартный формат fragmented-MP4, спроектированный так, чтобы одни и те же медиа-сегменты могли обслуживать и HLS-, и MPEG-DASH-плееры. Вместо того чтобы кодировать дважды — один раз как .ts для HLS и один раз как fMP4 для DASH — сервис кодирует один раз как CMAF и поставляет два манифеста (.m3u8 и .mpd), указывающих на одни и те же файлы .m4s. Это вдвое сокращает стоимость хранения и CDN и сейчас является стандартом по умолчанию у YouTube, Netflix, Apple и большинства крупных хостинговых видеопровайдеров.
.mpd — это то же, что .m3u8?
Они делают одну и ту же работу — описывают плееру сегменты потока — но это разные форматы. .m3u8 — это текстовый UTF-8-плейлист с тегами #EXT-X-, используемый HLS. .mpd — это XML-документ, используемый MPEG-DASH. Оба перечисляют URL сегментов, длительности и варианты качества, но синтаксис никак не связан. HLS-плеер не может прочитать .mpd, а нативный DASH-плеер не может прочитать .m3u8, хотя JavaScript-плееры вроде shaka-player и video.js обрабатывают оба внутри браузера через Media Source Extensions.