HTTP Live Streaming (сокр. HLS) - это коммуникационный протокол для потоковой передачи медиа на основе HTTP, разработанный компанией Apple как часть ПО QuickTime, Safari, OS X и iOS. В основе работы лежит принцип разбиения цельного потока на небольшие фрагменты, последовательно скачиваемые по HTTP. Поток непрерывен и теоретически может быть бесконечным. В начале сессии скачивается плейлист M3U, содержащий метаданные об имеющихся вложенных потоках.[1]
Apple оформила HTTP Live Streaming как "черновик"[2], это первый шаг в подаче его в IETF как Информационное Рабочее Предложение. Однако, несмотря на подачу некоторых обновлений к черновику, Apple пока не сделало существенных шагов на пути к стандартизации IETF.[3]
Поскольку запросы используют только стандартные транзакции HTTP, протокол позволяет потоку преодолевать файрволлы или прокси-сервера, пропускающие HTTP-трафик, в отличие от протоколов на базе UDP, таких как RTP. Это также позволяет раздавать контент посредством HTTP-серверов общего назначения в качестве источника, а также доставлять до потребителей через существующие CDN.[4]
HLS также предоставляет стандартный механизм шифрования с использованием AES и метод безопасной доставки ключей по HTTPS либо через авторизацию на устройстве, либо посредством HTTP cookie. Вместе это даёт возможность создавать простые системы DRM.
HTTP Live Streaming использует стандартный веб-сервер для распространения аудио-визуального контента по запросу, при этом требует специальное ПО для того, чтобы обеспечивать передачу контента в режиме реального времени.
Существует 2 режима работы HLS - "по запросу" и живой трансляции. В режиме "по запросу" плейлист содержит ссылки на все фрагменты от первого до последнего. В режиме живой трансляции плейлист содержит только ссылки на последние несколько фрагментов, кроме того при последующих обращениях к плейлисту, фрагменты будут меняться, отражая текущее состояние трансляции.
HLS предусматривает поддержку адаптивного битрейта. Эта техника предусматривает наличие нескольких одновременно доступных потоков, каждый из которых может содержать одинаковый контент, закодированный в разных битрейтах, а также имеющий другие отличающиеся характеристики. По мере проигрывания клиент может выбирать из числа нескольких доступных потоков, что позволяет адаптировать сессию к внешним условиям передачи по сети.
На конференции WWDC2016 Apple анонсировала[5] включение адресации через byte-range для фрагментированных MP4 файлом (fMP4), что позволяет проигрывать контент через HLS не прибегая к мультиплексированию в MPEG-2 Transport Stream. Эксперты отрасли оценили это как большой шаг к совместимости между HLS и MPEG-DASH[6] [7].
Ниже приведены примеры серверных решений, поддерживающие HLS в режимах "по запросу" и в живой трансляции, если не отмечено ничего другого.
HTTP Live Streaming.