Interested Article - HLS
- 2020-01-25
- 1
HLS ( HTTP Live Streaming ) — коммуникационный протокол для потоковой передачи медиа на основе HTTP , разработанный компанией Apple как часть программного обеспечения QuickTime , Safari , macOS и iOS . В основе работы лежит принцип разбиения цельного потока на небольшие фрагменты, последовательно скачиваемые по HTTP. Поток непрерывен и теоретически может быть бесконечным. В начале сессии скачивается плей-лист в формате M3U, содержащий метаданные об имеющихся вложенных потоках .
Apple оформила HLS как «черновик стандарта» , а в августе 2017 года 7 версия документа была опубликована как .
Поскольку запросы используют только стандартные транзакции HTTP, протокол позволяет потоку преодолевать межсетевые экраны или прокси-сервера , пропускающие HTTP-трафик, в отличие от протоколов на базе UDP , таких как RTP . Это также позволяет раздавать контент посредством HTTP-серверов общего назначения в качестве источника, а также доставлять до потребителей через существующие CDN .
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 анонсировала включение адресации через byte-range для фрагментированных MP4 файлов (fMP4), что позволяет проигрывать контент через HLS не прибегая к мультиплексированию в транспортном потоке MPEG-2 . Эксперты отрасли оценили это как большой шаг к совместимости между HLS и MPEG-DASH .
На конференции WWDC 2019 была анонсирована технология Low Latency HLS - развитие спецификации HLS, позволяющее вести передачу медиа-данных с низкой задержкой. Нововведения включают в себя partial segments (частничные сегменты), дельту плей-листов, возврат сегментов через HTTP/2 и другие изменения.
См. также
Примечания
- Jordan, Larry . Larry's Blog . Larry Jordan & Associates (10 июня 2013). Дата обращения: 18 июня 2013. 23 августа 2013 года. [ неавторитетный источник ]
- Pantos, R. . Internet Engineering Task Force (30 сентября 2011). Дата обращения: 18 июня 2013. 1 апреля 2016 года.
- . Дата обращения: 26 сентября 2017. 28 января 2018 года.
- . Дата обращения: 21 марта 2016. Архивировано из 18 сентября 2015 года.
- от 18 августа 2016 на Wayback Machine What’s New in HTTP Live Streaming
- от 24 июня 2016 на Wayback Machine HLS Now Supports Fragmented MP4, Making it Compatible With DASH
- от 18 августа 2016 на Wayback Machine WWDC16: HLS supports Fragmented MP4 — and gets MPEG-DASH compatible!
- (англ.) . Apple Developer. Дата обращения: 17 июня 2019. 17 июня 2019 года.
- 2020-01-25
- 1