HLS

(перенаправлено с «HTTP Live Streaming»)

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 и другие изменения.

См. также править

Примечания править

  1. Jordan, Larry The Basics of HTTP Live Streaming. Larry's Blog. Larry Jordan & Associates (10 июня 2013). Дата обращения: 18 июня 2013. Архивировано 23 августа 2013 года.[неавторитетный источник]
  2. Pantos, R. HTTP Live Streaming. Internet Engineering Task Force (30 сентября 2011). Дата обращения: 18 июня 2013. Архивировано 1 апреля 2016 года.
  3. RFC 8216 - HTTP Live Streaming. Дата обращения: 26 сентября 2017. Архивировано 28 января 2018 года.
  4. MPEG-DASH vs. Apple HLS vs. Smooth Streaming vs. Adobe HDS. Дата обращения: 21 марта 2016. Архивировано из оригинала 18 сентября 2015 года.
  5. https://developer.apple.com/videos/play/wwdc2016/504/ Архивная копия от 18 августа 2016 на Wayback Machine What’s New in HTTP Live Streaming
  6. http://www.streamingmedia.com/Articles/ReadArticle.aspx?ArticleID=111796 Архивная копия от 24 июня 2016 на Wayback Machine HLS Now Supports Fragmented MP4, Making it Compatible With DASH
  7. https://bitmovin.com/hls-news-wwdc-2016/ Архивная копия от 18 августа 2016 на Wayback Machine WWDC16: HLS supports Fragmented MP4 — and gets MPEG-DASH compatible!
  8. Introducing Low-Latency HLS - WWDC 2019 - Videos (англ.). Apple Developer. Дата обращения: 17 июня 2019. Архивировано 17 июня 2019 года.