Введение
MPEG-DASH (Dynamic Adaptive Streaming over HTTP) – это протокол для потоковой передачи медиа с адаптивным битрейтом поверх HTTP.
Как и в случае HLS (HTTP Live Streaming), для трансляции через MPEG-DASH видеофайл делится на мелкие сегменты.
Каждый из сегментов содержит небольшой интервал воспроизведения мультимедийного контента, потенциально длящегося несколько часов. Например, фильма или прямой трансляции события.
Один и тот же контент может кодироваться в видеофайлы разного качества для адаптации к скорости соединения клиента.
Основываясь на пропускной способности доступного в клиенту соединения, медиаплеер клиента с поддержкой MPEG-DASH выбирает, который может быть загружен для воспроизведения без задержек.
Метод кодирования для передачи через MPEG-DASH
MPEG-DASH позволяет использовать любой стандарт кодирования. Он разработан, чтобы быть независимым от кодеков. Он поддерживает все кодеки, такие как H.264, H.265, VP9, VP10 и т.д.
Внедрение
Внедрение MPEG-DASH требует создания зоны CDN для больших объектов и использования индексного файла MPD.
Обратите внимание, что вам нужно только загрузить свои полные файлы .mp4, а сегментация выполняется CDN. Для получения MPD-файла нужно добавить префикс «/dash» в путь файла и «/manifest.mpd» в конце.
Например:
Ваш загруженный mp4: /video/012345.mp4
Автоматически созданный MPD-файл: /dash/video/012345.mp4/manifest.mpd
Сгенерированный манифест (MPD) использует элементы SegmentTemplate из спецификации MPEG-DASH.
Файл MPD содержит ссылки на сегменты мультимедиа под разную скорость передачи данных, чтобы медиаплеер клиента мог использовать эту информацию для построения полного URL для нужного фрагмента с учетом скорости доступа в сеть.
Вы можете изменить длину сегментов, используя параметры bsd (первые несколько сегментов) и sd (другие сегменты) в URL.
Например:
Ваш загруженный mp4: /video/012345.mp4
Путь к MDP: /dash/bsd/10000-10000-15000/sd/20000/video/012345.mp4/manifest.mpd
В приведенном выше примере длина первого сегмента составляет 10 секунд, второго – 10 секунд, третьего – 15 секунд, а для остальных – 20 секунд. Обратите внимание, что значения должны быть в миллисекундах. Значения задаются в миллисекундах.
URLSET
Кроме того, доступна функция для создания списка воспроизведения из нескольких файлов. Обычно она используется, когда для данного источника видео существует несколько разрешений, и вы хотите, чтобы пользователи могли переключаться между ними, не меняя страницу.
Например:
Допустим, у нас есть файл /video/012345.mp4 в трех разрешениях: 240p, 360p и 480p. Мы назвали файлы 012345_240p.mp4, 012345_360p.mp4 и 012345_480p.mp4, соответственно.
URI для генерации списка воспроизведения:
/dash/video/012345_,24,36,48,0p.mp4/urlset/manifest.mpd
Где общие части — это «012345_» и «0 p.mp4», а битрейты — 24,36,48 — разделены запятыми.
Такой запрос вернет манифест с использованием SegmentedTemplates, со всеми видеопотоками из всех файлов, вместе с дополнительной информацией о битрейтах и кодеках.
Ограничение доступа с помощью секретного ключа
Функциональность MPEG-DASH может быть объединена с нашей функцией ограничения доступа по секретному ключу, чтобы блокировать любые попытки хотлинкинга. Для получения подробной информации перейдите в раздел «Ограничение доступа с помощью секретного ключа».
Чтобы объединить все функции секретного ключа, ограничивающие доступ, необходимо включить следующую часть:
/video/bsd/10000-10000-15000/sd/20000/012345_,24,36,48,0p.mp4
Обратите внимание, что префикс /dash и суффиксы urlset/manifest.mpd и /manifest.mpd исключены.
Все сегменты имеют прикрепленные к ним ключи внутри файла .m3u8. По этой причине нет необходимости вычилсять ключ для каждого сегмента отдельно.
Поскольку один ключ используется для всего индексного файла, важно отметить, что для длинных видео ключ может истечь до того, как будет сделан запрос для конкретного сегмента.