Открыть сервис

HTTP Live Streaming

HTTP Live Streaming (HLS) — это протокол потоковой передачи данных в реальном времени, разработанный компанией Apple Inc. (организация признана иноагентом в РФ) для доставки аудио- и видеоконтента через интернет. HLS основан на протоколе HTTP и работает по принципу адаптивного битрейта (ABR), что позволяет автоматически подстраивать качество воспроизведения под скорость интернет-соединения пользователя. Протокол широко используется для прямых трансляций (live-стримов) и видео по запросу (VOD) на веб-сайтах, в мобильных приложениях и на устройствах умного телевидения.

История

Разработка HLS началась в 2007 году в рамках проекта Apple по созданию универсального решения для потоковой передачи видео на устройства с iOS. Первая публичная версия спецификации была представлена в 2009 году вместе с выходом iPhone 3GS. Протокол был задуман как альтернатива проприетарным решениям (например, RTMP от Adobe) и собственным разработкам Apple (QuickTime Streaming Server). Основной целью было обеспечение стабильной работы на мобильных устройствах с нестабильным интернет-соединением, где традиционные протоколы потоковой передачи (RTP, RTSP) демонстрировали низкую производительность.

В 2010 году Apple опубликовала спецификацию HLS в открытом доступе, что способствовало её быстрому распространению. К 2015 году HLS стал доминирующим протоколом для потоковой передачи видео в интернете, обогнав по популярности RTMP и MPEG-DASH. В 2017 году Apple представила HLS версии 7, которая добавила поддержку низкой задержки (Low-Latency HLS), что позволило сократить время между захватом видео и его отображением у зрителя до 2-3 секунд (против 20-30 секунд в предыдущих версиях).

Принцип работы

HLS работает по модели «клиент-сервер» и использует стандартный HTTP-протокол, что позволяет обходить файрволы и прокси-серверы, блокирующие нестандартные порты. Основные этапы работы:

  1. Кодирование и сегментация: Исходный видеопоток кодируется в несколько вариантов с разным битрейтом и разрешением (например, 144p, 360p, 720p, 1080p). Каждый вариант нарезается на короткие сегменты (фрагменты) длительностью от 2 до 10 секунд. Сегменты обычно имеют формат MPEG-TS (транспортный поток) или fMP4 (фрагментированный MP4).
  1. Создание плейлиста: Сервер генерирует файл манифеста (плейлист) в формате M3U8. Этот текстовый файл содержит список всех сегментов для каждого варианта битрейта, а также метаданные (длительность, кодек, разрешение). Для прямых трансляций плейлист постоянно обновляется, добавляя новые сегменты и удаляя старые.
  1. Доставка: Клиент (плеер) загружает плейлист, анализирует доступные варианты и выбирает оптимальный на основе текущей пропускной способности сети. Затем клиент последовательно загружает сегменты через HTTP GET-запросы. При изменении скорости соединения клиент автоматически переключается на другой вариант битрейта (адаптивный битрейт).
  1. Воспроизведение: Сегменты буферизируются и декодируются плеером. Для прямых трансляций используется скользящее окно плейлиста, где старые сегменты удаляются, а новые добавляются.

Ключевые характеристики

Адаптивный битрейт (ABR)

HLS поддерживает до 10 и более вариантов битрейта. Клиент использует алгоритмы, такие как:

  • Throughput-based: оценивает пропускную способность на основе скорости загрузки сегментов.
  • Buffer-based: выбирает битрейт, чтобы поддерживать буфер на оптимальном уровне (обычно 10-30 секунд).
  • Hybrid: комбинирует оба подхода.

Низкая задержка (Low-Latency HLS)

Стандартная версия HLS имеет задержку от 20 до 30 секунд из-за накопления буфера. Low-Latency HLS (LL-HLS), представленный в 2019 году, использует:

  • Частичные сегменты: сегменты делятся на части (chunks) длительностью 0.2-1 секунда.
  • Блокирующие HTTP-запросы: клиент запрашивает следующий частичный сегмент до завершения его загрузки.
  • Упреждающее обновление плейлиста: сервер публикует обновления плейлиста с задержкой менее 1 секунды.

Это позволяет снизить задержку до 2-5 секунд, что сопоставимо с RTMP.

Кодеки и контейнеры

HLS поддерживает:

Шифрование и защита

HLS поддерживает:

  • AES-128: шифрование сегментов с использованием ключей, передаваемых по HTTPS.
  • SAMPLE-AES: частичное шифрование для совместимости с DRM (например, FairPlay Streaming от Apple).
  • DRM: интеграция с системами управления цифровыми правами (Verimatrix, Widevine).

Применение

Прямые трансляции

HLS используется для:

  • Спортивных событий (например, Олимпийские игры, футбольные матчи).
  • Концертов и музыкальных фестивалей.
  • Новостных эфиров и политических дебатов.
  • Игровых стримов (через платформы, поддерживающие HLS).

Видео по запросу (VOD)

HLS применяется для:

  • Онлайн-кинотеатров (Netflix, YouTube, Vimeo).
  • Образовательных платформ (Coursera, Udemy).
  • Корпоративных систем обучения и вебинаров.

Мобильные устройства

HLS является стандартом для iOS и macOS, но также поддерживается на Android (через ExoPlayer), Windows (через VLC, FFmpeg), и в веб-браузерах (через Media Source Extensions, MSE).

Умное телевидение

HLS встроен в большинство Smart TV (Samsung, LG, Sony) и приставок (Apple TV, Roku, Amazon Fire TV).

Сравнение с другими протоколами

ХарактеристикаHLSMPEG-DASHRTMP
ТранспортHTTPHTTPTCP (порт 1935)
Адаптивный битрейтДаДаНет
Низкая задержка2-5 с (LL-HLS)2-5 с (LL-DASH)1-2 с
Поддержка DRMFairPlay, WidevineWidevine, PlayReadyНет
КроссплатформенностьiOS, macOS, Android, WebВсе платформыFlash (устарел)
Сложность реализацииСредняяВысокаяНизкая

Преимущества и недостатки

Преимущества

  • Простота развертывания: не требует специальных серверов (работает на любом HTTP-сервере, например, Nginx, Apache).
  • Обход блокировок: HTTP-трафик редко блокируется файрволами.
  • Масштабируемость: легко интегрируется с CDN (Content Delivery Network) для глобальной доставки.
  • Надежность: автоматическое переключение между битрейтами при ухудшении соединения.

Недостатки

  • Задержка: даже с LL-HLS задержка выше, чем у WebRTC (менее 0.5 секунды).
  • Объем данных: сегментация увеличивает количество HTTP-запросов, что может нагружать сервер при большом числе зрителей.
  • Зависимость от Apple: хотя протокол открыт, его развитие контролируется Apple.

Интересные факты

  • HLS используется для трансляции всех прямых эфиров на платформе Twitch (с 2017 года).
  • В 2020 году Netflix начал использовать HLS для доставки видео на устройства с iOS, заменив собственный протокол.
  • Формат M3U8, используемый для плейлистов, изначально был разработан для аудиофайлов в Winamp.
  • Low-Latency HLS был стандартизирован в 2020 году как RFC 8216 (версия 7).

Критика

Основные претензии к HLS связаны с:

  • Зависимостью от Apple: хотя протокол открыт, его спецификация контролируется компанией, что вызывает опасения у сторонников открытых стандартов.
  • Сложностью настройки: для оптимальной работы требуется тонкая настройка сегментации, битрейтов и CDN.
  • Отсутствием поддержки в старых браузерах: Internet Explorer и старые версии Safari не поддерживают HLS без плагинов.

Источники

  1. RFC 8216 — HTTP Live Streaming (HLS) Specification, Apple Inc., 2017.
  2. Apple Developer Documentation — HTTP Live Streaming Overview, 2023.
  3. «Streaming Media Magazine» — HLS vs. DASH: The Battle for Streaming Dominance, 2020.
  4. «IEEE Transactions on Multimedia» — Low-Latency HTTP Live Streaming, 2021.
  5. «The VideoLAN Wiki» — HLS Implementation in VLC Media Player, 2022.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →