HLS (HTTP Live Streaming) — это коммуникационный протокол (не путать с форматом) для потоковой передачи медиа на основе HTTP, разработанный компанией Apple как часть программного обеспечения QuickTime, Safari, OS X и iOS. В основе работы лежит принцип разбиения цельного потока на небольшие фрагменты, последовательно скачиваемые по HTTP. Поток непрерывен и теоретически может быть бесконечным. В начале сессии скачивается плей-лист в формате M3U, содержащий метаданные об имеющихся вложенных потоках.
HTTP Live Streaming (HLS) — это не только самый распространенный, но и один из старейших HTTP-протоколов передачи видео.
Одним из преимуществ HLS является то, что все подключенные к Интернету устройства поддерживают протокол HTTP, что упрощает его реализацию, чем протоколы потоковой передачи, требующие использования специализированных серверов. Еще одно преимущество состоит в том, что поток HLS может повышать или понижать качество видео в зависимости от состояния сети без прерывания воспроизведения. Вот почему качество видео может улучшаться или ухудшаться в середине видео, когда пользователь его смотрит. Эта функция известна как «доставка видео с адаптивной скоростью передачи» или «адаптивный стриминг», и без нее медленные сетевые условия могут полностью остановить воспроизведение видео.
Где используют HLS
-
Живые трансляции: HLS часто используется для прямых трансляций спортивных соревнований и новостей.
-
Видео по запросу: стриминговые сервисы, такие как Netflix и Hulu, используют HLS для видеоконтента по запросу.
Как работает HLS
HLS работает через HTTP, который использует TCP (Transmission Control Protocol) для обеспечения надежной доставки данных.
Сегментация
HLS делит видео на небольшие, управляемые фрагменты или сегменты, обычно от 2 до 10 секунд длиной. Этот подход облегчает доставку видео через интернет.
Mанифест
Файл манифеста M3U8 перечисляет все сегменты и их порядок. Он действует как содержание книги, объясняя видеоплееру порядок сегментов для обеспечения правильного воспроизведения.
Протокол TCP
HLS использует HTTP, который основан на TCP, чтобы обеспечить надежную доставку сегментов видео. TCP обрабатывает передачу данных с проверкой ошибок и повторной передачей, что гарантирует, что сегменты видео поступают целыми и в правильном порядке.
Адаптивный стриминг
HLS поддерживает адаптивный стриминг, что означает, что он может регулировать качество видео в зависимости от скорости интернета зрителя. Если ваше соединение замедляется, HLS переключается на версию видео с более низким качеством, чтобы избежать буферизации. Это похоже на автоматическое изменение разрешения видео в зависимости от скорости вашего интернета.
Шифрование и безопасность
HLS может шифровать сегменты видео для защиты контента от несанкционированного доступа. Это похоже на хранение ценных предметов в запертом сейфе, чтобы только авторизованные пользователи могли получить доступ к контенту.
Содержание файла манфеста в начале сессии выглядит следующим образом:
Архитектура HLS
HLS использует стандартный веб-сервер для распространения видео по запросу, при этом требует специальное ПО для того, чтобы обеспечивать передачу контента в режиме реального времени.
Серверная часть
Кодирует и оборачивает входящее медиа в подходящий для доставки формат. Далее материал готовится к распределению путём сегментирования. Медиа сегментируется на фрагменты (чанки, chunks) и индексный файл (плейлист). Плейлист содержит ссылки на эти сегменты или другие индексные файлы; он сохраняется как файл .m3u8. Видео кодируется в формате H.264 или H.265, а аудио — в MP3, HE-AAC, FLAC или AC-3.
Изначально HLS использовал контейнеры MPEG-2 Transport Stream (MPEG-TS). В 2016 году Apple добавила поддержку формата фрагментированного MP4 (fMP4), который с тех пор стал предпочтительным контейнером для протоколов потоковой передачи на основе HTTP, включая MPEG-DASH и Microsoft Smooth. Сегодня fMP4 широко используется благодаря своей эффективности. Обычно такие видеофайлы содержат видео, закодированное в AVC/H.264, и аудио, закодированное в AAC.
Распределение
Работая как стандартный веб-сервер, сервер принимает запросы от клиентов и доставляет всё необходимое для воспроизведения.
Клиент
Запрашивает и скачивает все файлы, собирая их воедино так, чтобы предоставить пользователю непрерывный поток видео. Клиентское ПО скачивает первый индексный файл через URL и далее несколько доступных файлов медиа. ПО для проигрывания собирает всё в последовательность для воспроизведения.
Существует два режима работы HLS — «по запросу» и живая трансляции. В режиме «по запросу» плейлист содержит ссылки на все фрагменты от первого до последнего. В режиме живой трансляции плейлист содержит только ссылки на последние несколько фрагментов. При последующих обращениях к плейлисту, фрагменты будут меняться, отражая текущее состояние трансляции.
Подробнее о работе HLS можно узнать в официальной документации Apple.
Преимущества HLS
-
Широкая совместимость: HLS совместим с широким спектром устройств и платформ, включая смартфоны, планшеты и настольные компьютеры. Эта широкая поддержка обеспечивает доступ к контенту независимо от используемого устройства.
-
Масштабируемость: HLS разработан для доставки видео широкой аудитории. Он эффективно справляется с высоким объемом трафика.
-
Адаптивность: cпособность протокола регулировать качество видео в зависимости от условий сети улучшает качество просмотра.
HLS поддерживает:
-
Прямые трансляции и предварительно записанный контент (видео по запросу или VOD)
-
Несколько альтернативных потоков с разной скоростью передачи данных
-
Интеллектуальное переключение потоков в ответ на изменение пропускной способности сети
-
Шифрование мультимедиа и аутентификация пользователя
Flussonic Media Server — мощное решение для управления и распространения видеоконтента через протокол HLS. Он может принимать видеопотоки любого качества и доставлять их в наилучшем возможном качестве с постоянной и предсказуемой стабильностью. Независимо от того, транслируете ли вы живые события или контент по запросу, Flussonic Media Server обеспечивает эффективную и надежную доставку видео, предоставляя комплексную платформу для обработки потоков HLS с оптимальной производительностью и надежностью.