HLS

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

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

Apple оформила HLS как «черновик стандарта»[2], это первый шаг в подаче его в IETF как RFC, однако по состоянию на 2016 год, несмотря на подачу некоторых обновлений к черновику, стандартизация не осуществлена[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 предусматривает поддержку адаптивного битрейта, эта техника предусматривает наличие нескольких одновременно доступных потоков, каждый из которых может содержать одинаковый контент, закодированный в разных битрейтах, а также имеющий другие отличающиеся характеристики. По мере проигрывания клиент может выбирать из числа нескольких доступных потоков, что позволяет адаптировать сессию к внешним условиям передачи по сети.

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

См. также[править | править вики-текст]

Примечания[править | править вики-текст]

  1. Jordan, Larry The Basics of HTTP Live Streaming. Larry's Blog. Larry Jordan & Associates (10 June 2013). Проверено 18 июня 2013.[неавторитетный источник? 266 дней]
  2. Pantos, R. HTTP Live Streaming. Internet Engineering Task Force (30 September 2011). Проверено 18 июня 2013.
  3. van Kesteren, Anne Internet Drafts are not Open Standards. annevankesteren.nl. Self-published (1 сентября 2010). Проверено 22 марта 2015.[неавторитетный источник? 266 дней]
  4. MPEG-DASH vs. Apple HLS vs. Smooth Streaming vs. Adobe HDS
  5. https://developer.apple.com/videos/play/wwdc2016/504/ What’s New in HTTP Live Streaming
  6. http://www.streamingmedia.com/Articles/ReadArticle.aspx?ArticleID=111796 HLS Now Supports Fragmented MP4, Making it Compatible With DASH
  7. https://bitmovin.com/hls-news-wwdc-2016/ WWDC16: HLS supports Fragmented MP4 — and gets MPEG-DASH compatible!