Доставка контента по MPEG-DASH

Введение


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. По этой причине нет необходимости вычилсять ключ для каждого сегмента отдельно.

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



Трансляция видео

Доставка контента по HLS

Ускорение доставки HLS