HTTP Live Streaming

Перейти к: навигация, поиск

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 использует стандартный веб-сервер для распространения аудио-визуального контента по запросу, при этом требует специальное ПО для того, чтобы обеспечивать передачу контента в режиме реального времени.

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

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

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

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

Примеры серверной реализации

Ниже приведены примеры серверных решений, поддерживающие HLS в режимах "по запросу" и в живой трансляции, если не отмечено ничего другого.

Клиенты

Платформы

Плееры

См. также

Примечания

  1. The Basics of HTTP Live Streaming. Larry's Blog. Larry Jordan & Associates (10 June 2013). Проверено 18 июня 2013.
  2. HTTP Live Streaming. Internet Engineering Task Force (30 September 2011). Проверено 18 июня 2013.
  3. Internet Drafts are not Open Standards. annevankesteren.nl. Self-published (1 сентября 2010). Проверено 22 марта 2015.
  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!
  8. Supported Media Formats | Android Developers
  9. Hints of 'iTunes Live Stream' Service Found in iTunes 10.1 - Mac Rumors
  10. THEOplayer | HLS Support
  11. https://trac.videolan.org/vlc/ticket/2943 VLC Ticket #2943 (Support for HTTP Live Streaming as a client)

Ссылки

HTTP Live Streaming.

© 2021–2023 sud-mal.ru, Россия, Барнаул, ул. Денисова 68, +7 (3852) 74-95-52