Русская Википедия:HLS

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:O HLS (HTTP Live Streaming) — коммуникационный протокол для потоковой передачи медиа на основе HTTP, разработанный компанией Apple как часть программного обеспечения QuickTime, Safari, MacOS и iOS. В основе работы лежит принцип разбиения цельного потока на небольшие фрагменты, последовательно скачиваемые по HTTP. Поток непрерывен и теоретически может быть бесконечным. В начале сессии скачивается плей-лист в формате M3U, содержащий метаданные об имеющихся вложенных потоках[1].

Apple оформила HLS как «черновик стандарта»[2], а в августе 2017 года 7 версия документа была опубликована как RFC 8216[3].

Поскольку запросы используют только стандартные транзакции HTTP, протокол позволяет потоку преодолевать межсетевые экраны или прокси-сервера, пропускающие HTTP-трафик, в отличие от протоколов на базе UDP, таких как RTP. Это также позволяет раздавать контент посредством HTTP-серверов общего назначения в качестве источника, а также доставлять до потребителей через существующие CDN[4].

HLS также предоставляет стандартный механизм шифрования с использованием AES и метод безопасной доставки ключей по HTTPS либо через авторизацию на устройстве, либо посредством HTTP cookie. Вместе это даёт возможность создавать простые системы DRM.

Архитектура

HTTP Live Streaming использует стандартный веб-сервер для распространения аудиовизуальных материалов по запросу, при этом требует специальное ПО для того, чтобы обеспечивать передачу контента в режиме реального времени.

Серверная часть
Кодирует и оборачивает входящее медиа в подходящий для доставки формат. Далее материал готовится к распределению путём сегментирования. Медиа сегментируется на фрагменты (чанки, chunks) и индексный файл (плейлист).
  • Кодировка: видео кодируется в формате H.264 и аудио в MP3, HE-AAC или AC-3. Всё это вкладывается в транспортный поток MPEG-2 для последующей доставки.
  • Сегментирование: контент в MPEG-2 TS разделяется на фрагменты одинаковой длины, записанные в файлы .ts. Также создаётся индексный файл, содержащий ссылки на фрагменты или другие индексные файлы — он сохраняется как файл .m3u8
Распределение
Работая как стандартный веб-сервер, сервер принимает запросы от клиентов и доставляет всё необходимое для воспроизведения.
Клиент
Запрашивает и скачивает все файлы, собирая их воедино так, чтобы предоставить пользователю непрерывный поток видео. Клиентское ПО скачивает первый индексный файл через URL и далее несколько доступных файлов медиа. ПО для проигрывания собирает всё в последовательность для воспроизведения.

Существует два режима работы HLS — «по запросу» и живой трансляции. В режиме «по запросу» плей-лист содержит ссылки на все фрагменты от первого до последнего. В режиме живой трансляции плей-лист содержит только ссылки на последние несколько фрагментов, кроме того при последующих обращениях к плей-листу, фрагменты будут меняться, отражая текущее состояние трансляции.

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

На конференции WWDC 2016 Apple анонсировала[5] включение адресации через byte-range для фрагментированных MP4 файлов (fMP4), что позволяет проигрывать контент через HLS не прибегая к мультиплексированию в транспортном потоке MPEG-2. Эксперты отрасли оценили это как большой шаг к совместимости между HLS и MPEG-DASH[6][7].

На конференции WWDC 2019 была анонсирована[8] технология Low Latency HLS - развитие спецификации HLS, позволяющее вести передачу медиа-данных с низкой задержкой. Нововведения включают в себя partial segments (частничные сегменты), дельту плей-листов, возврат сегментов через HTTP/2 и другие изменения.

См. также

Примечания

Шаблон:Примечания