Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

HTTP Live Streaming (также известный как HLS ) - это протокол передачи потоковой передачи с адаптивной скоростью передачи данных на основе HTTP, разработанный Apple Inc. и выпущенный в 2009 году. Поддержка этого протокола широко распространена в медиаплеерах, веб-браузерах, мобильных устройствах и серверах потокового мультимедиа. По состоянию на 2019 год ежегодный опрос видеоиндустрии неизменно показывает, что это самый популярный формат потоковой передачи. [2]

HLS похож на MPEG-DASH в том, что он работает, разбивая общий поток на последовательность небольших загрузок файлов на основе HTTP, каждая из которых загружает один короткий фрагмент общего потенциально неограниченного транспортного потока. Список доступных потоков, закодированных с разными скоростями передачи, отправляется клиенту с использованием расширенного списка воспроизведения M3U . [3]

На основе стандартных HTTP-транзакций HTTP Live Streaming может проходить через любой брандмауэр или прокси-сервер , пропускающий стандартный HTTP-трафик, в отличие от протоколов на основе UDP, таких как RTP . Это также позволяет предлагать контент с обычных HTTP-серверов и доставлять его по широко доступным сетям доставки контента на основе HTTP . [4] Стандарт также включает стандартный механизм шифрования [5] и распространение ключей безопасности с использованием HTTPS , которые вместе обеспечивают простую систему DRM . Более поздние версии протокола предусматривают также трик-режим быстрой перемотки вперед и назад и для интеграции субтитров.

Apple задокументировала HTTP Live Streaming как Интернет-черновик (индивидуальное представление), первый этап процесса публикации в виде запроса комментариев (RFC). По состоянию на декабрь 2015 года авторы этого документа обратились к независимому потоковому редактору RFC (ISE) с просьбой опубликовать документ как информационный (нестандартный) RFC вне процесса согласования IETF . [6] В августе 2017 года был опубликован RFC8216 для описания версии 7 протокола. [7]

Архитектура [ править ]

HTTP Live Streaming использует обычный веб-сервер для распространения аудиовизуального контента и требует специального программного обеспечения для передачи в надлежащем формате в реальном времени [ пояснить ] . Архитектура сервиса включает:

Сервер
Кодифицируйте и инкапсулируйте входной видеопоток в надлежащий формат для доставки. Затем он готовится к распространению путем разделения на разные файлы. В процессе приема видео кодируется и сегментируется для создания видеофрагментов и индексного файла.
  • Кодировщик: кодируйте видео файлы в формате H.264 и аудио в AAC , MP3 , AC-3 или EC-3 . [8] Он инкапсулируется транспортным потоком MPEG-2 или MPEG-4_Part_14 для его передачи.
  • Segmenter: разделяет поток на фрагменты одинаковой длины. Он также создает индексный файл, содержащий ссылки на фрагментированные файлы, сохраненные как .m3u8 .
Распределитель
Формируется стандартным веб-сервером, принимает запросы от клиентов и доставляет все ресурсы (файл списка воспроизведения .m3u8 и файлы сегментов .ts), необходимые для потоковой передачи .
Клиент
Запросите и загрузите все файлы и ресурсы, собрав их так, чтобы они могли быть представлены пользователю в виде непрерывного потока видео. Клиентское программное обеспечение сначала загружает индексный файл через URL-адрес, а затем несколько доступных медиафайлов. Программное обеспечение воспроизведения собирает последовательность, чтобы пользователь мог продолжать ее отображение.

Особенности [ править ]

HTTP Live Streaming предоставляет игрокам механизмы для адаптации к ненадежным сетевым условиям, не вызывая видимых пользователем остановок воспроизведения. Например, в ненадежной беспроводной сети HLS позволяет проигрывателю использовать видео более низкого качества, что снижает использование полосы пропускания. Видео HLS можно сделать высокодоступным, предоставив несколько серверов для одного и того же видео, что позволяет проигрывателю легко переключаться в случае отказа одного из серверов.

Адаптивность [ править ]

Чтобы позволить игроку адаптироваться к пропускной способности сети, исходное видео кодируется с несколькими различными уровнями качества . Сервер обслуживает индекс, называемый «основным списком воспроизведения», этих кодировок , называемых «вариантными потоками». Затем проигрыватель может выбирать между вариантами потоков во время воспроизведения, плавно переключаясь вперед и назад при изменении условий сети.

Использование фрагментированного MP4 [ править ]

На WWDC 2016 Apple объявила [9] о включении адресации байтового диапазона для фрагментированных файлов MP4 или fMP4, что позволяет воспроизводить контент через HLS без необходимости мультиплексировать его в транспортный поток MPEG-2 . Промышленность сочла это шагом к совместимости между HLS и MPEG-DASH . [10] [11]

HLS с низкой задержкой [ править ]

Существуют два несвязанных расширения HLS с именем «Низкая задержка» и соответствующей аббревиатурой:

  • Apple Low Latency HLS (ALHLS), о котором Apple объявила на WWDC2019 [12]
  • «Сообщество LHLS» (LHLS), которое предшествовало публикации Apple и предположительно проще [13]

В оставшейся части этого раздела описывается ALHLS от Apple. Это уменьшает задержку «стекло-стекло» при потоковой передаче через HLS за счет сокращения времени для начала воспроизведения потоковой передачи и поддержания этого времени во время события потоковой передачи в реальном времени. Он работает, добавляя в микс частичные файлы мультимедийных сегментов, как и fMP4 MPEG-CMAF. В отличие от CMAF, ALHLS также поддерживает частичные транспортные файлы MPEG-2 TS. HTTP / 2 требуется для проталкивания сегментов вместе со списком воспроизведения, уменьшая накладные расходы на установление повторяющихся соединений HTTP / TCP.

Другие функции включают:

  • Дельта-обновления списка воспроизведения: отправка только того, что изменилось между списками воспроизведения, которые обычно помещаются в один MTU, что делает более эффективной загрузку списков воспроизведения, которые с большими окнами DVR могут быть довольно большими.
  • Блокировка перезагрузки списка воспроизведения: при запросе списков воспроизведения в реальном времени дождитесь, пока первый сегмент также не будет готов, и верните оба одновременно (с сохранением дополнительных запросов HTTP / TCP)
  • Отчеты о воспроизведении: добавляйте метаданные к другим мультимедийным представлениям, чтобы ускорить переключение между ABR
  • Добавлены новые теги: EXT-X-SERVER-CONTROL / EXT-X-PART / EXT-X-SKIP / EXT-X-RENDITION-REPORT
  • URL QUERY_STRING? Добавлены обратные вызовы _HLS

Apple также добавила новые инструменты: «tsrecompressor» производит и кодирует непрерывный поток аудио и видео с низкой задержкой. Инструмент mediastreamsegmenter теперь доступен в версии с низкой задержкой. Это сегментатор HLS, который принимает поток UDP / MPEG-TS от tsrecompressor и генерирует список воспроизведения мультимедиа, включая новые теги, указанные выше.

Поддержка HLS с низкой задержкой доступна в бета-версии tvOS 13, iOS и iPadOS 14. [14] 30 апреля 2020 года Apple добавила спецификации низкой задержки во второе издание основной спецификации HLS. [15]

Динамическая вставка рекламы [ править ]

В HLS поддерживается динамическая вставка рекламы с использованием информации монтажа на основе спецификации SCTE-35 . Сообщение монтажа SCTE-35 вставляется в файл списка воспроизведения мультимедиа с помощью тега EXT-X-DATERANGE. Каждый SCTE-35 splice_info_section () представлен тегом EXT-X-DATERANGE с атрибутом SCTE35-CMD. Пара разъемов SCTE-35, сигнализируемая командами splice_insert (), представлена ​​одним или несколькими тегами EXT-X-DATERANGE, несущими один и тот же атрибут ID. Команда монтажа SCTE-35 должна иметь атрибут SCTE35-OUT, а команда монтажа вставки должна иметь атрибут SCTE35-IN.

Между двумя тегами EXT-X-DATERANGE, которые содержат атрибуты SCTE35-OUT и SCTE35-IN соответственно, может быть последовательность URI сегментов мультимедиа. Эти медиа-сегменты обычно представляют собой рекламные программы, которые можно заменить местной или персонализированной рекламой. Замена рекламы не требует замены файлов мультимедиа, нужно изменить только URI в списке воспроизведения, чтобы указать разные рекламные программы. Замену рекламы можно выполнить на исходном сервере или на устройстве воспроизведения мультимедиа клиента.

Реализации сервера [ править ]

Известные реализации сервера, поддерживающие HTTP Live Streaming, включают:

  • Adobe Media Server поддерживает HLS для устройств iOS (HLS) и защищенную HTTP-трансляцию в реальном времени (PHLS).
  • Akamai поддерживает HLS для потоковой передачи в реальном времени и по запросу.
  • Instart поддерживает HLS для потоков по запросу.
  • Amazon CloudFront поддерживает HLS для потоков по запросу.
  • Bitmovin поддерживает HLS для потоковой передачи по запросу и в реальном времени.
  • CDNetworks поддерживает HLS для потоковой передачи в реальном времени и по запросу.
  • Cisco Systems : поддерживает полную сквозную доставку для сервисов Live / TSTV / VOD / HLS и Cloud DVR.
  • Cloudflare поддерживает HLS для потоковой передачи в реальном времени и по запросу.
  • EdgeCast Networks поддерживает потоковую передачу между устройствами с использованием HLS.
  • Fastly поддерживает HLS для потоковой передачи в реальном времени и по запросу. [16]
  • Helix Universal Server от RealNetworks поддерживает iPhone OS 3.0 и более поздних версий для прямой передачи и потоковой передачи HTTP Live или по запросу контента H.264 и AAC на iPhone, iPad и iPod в реальном времени и по запросу.
  • IIS Media Services от Microsoft поддерживает прямую и по запросу Smooth Streaming и HTTP Live Streaming.
  • Уровень 3 поддерживает потоки HLS в реальном времени и по запросу.
  • Limelight Networks поддерживает HLS для некоторых учетных записей. [17]
  • Nginx с модулем nginx-rtmp поддерживает HLS в режиме реального времени. Коммерческая версия Nginx Plus также поддерживает HLS / HDS VOD.
  • Nimble Streamer поддерживает HLS в режиме реального времени и VOD, также поддерживается спецификация Apple Low Latency HLS.
  • Node.js с пакетом hls-server поддерживает кодировку hls в режим реального времени и преобразование локальных файлов. [18]
  • Tata Communications CDN поддерживает HLS для потоковой передачи в реальном времени и по запросу.
  • TVersity поддерживает HLS в сочетании с транскодированием на лету для воспроизведения любого видеоконтента на устройствах iOS.
  • Unreal Media Server поддерживает HLS с низкой задержкой, начиная с версии 9.5.
  • Ustream поддерживает HLS-доставку прямых трансляций. Полученный поток перекодируется, если исходный аудио- и видеокодек не соответствует требованиям HLS.
  • VLC Media Player поддерживает HLS для обслуживания потоков в реальном времени и по запросу, начиная с версии 2.0.
  • Wowza Streaming Engine от Wowza Media Systems поддерживает HLS и зашифрованный HLS для прямой трансляции (с DVR), потоковой передачи по запросу и спецификации Apple Low Latency HLS.

Использование [ править ]

  • Google добавил поддержку HTTP Live Streaming в Android 3.0 (Honeycomb). [19]
  • HP добавила поддержку HTTP Live Streaming в webOS 3.0.5. [20]
  • Microsoft добавила поддержку HTTP Live Streaming в движке рендеринга EdgeHTML в Windows 10 в 2015 году. [21]
  • Microsoft добавила поддержку HTTP Live Streaming в IIS Media Services 4.0. [22]
  • Yospace добавила поддержку HTTP Live Streaming в Yospace HLS Player и SDK для flash версии 1.0. [ необходима цитата ]
  • Sling Media добавила поддержку HTTP Live Streaming в свои Slingboxes и приложения SlingPlayer. [23]
  • В 2014/15 году BBC представила потоки HLS-AAC для своего прямого интернет-радио и аудиоуслуг по запросу, а также поддерживает эти потоки с помощью своих клиентов iPlayer Radio . [24]

Поддерживаемые плееры и серверы [ править ]

HTTP Live Streaming изначально поддерживается в следующих операционных системах:

  • Windows 10 ( Microsoft Edge )
  • macOS 10.6+ ( Safari и QuickTime )
  • iOS 3.0+ ( Safari )
  • Android 4.1+ [25] ( Google Chrome )

Клиенты [ править ]

Серверы [ править ]

Живые кодеры [ править ]

Кодировщики VOD [ править ]

См. Также [ править ]

  • Адаптивная потоковая передача битрейта
  • Динамическая адаптивная потоковая передача через HTTP

Ссылки [ править ]

  1. ^ Pantos, R .; Мэй, W. (2017). «Плейлисты» . HTTP Live Streaming . IETF . п. 9. сек. 4. DOI : 10,17487 / RFC8216 . ISSN  2070-1721 . RFC 8216 . Проверено 15 января 2020 года .
  2. Ледерер, Стефан. «Отчет разработчика видео за 2019 год» . Битмовин . Проверено 12 ноября 2019 .
  3. Джордан, Ларри (10 июня 2013 г.). «Основы HTTP Live Streaming» . Блог Ларри . Ларри Джордан и партнеры . Проверено 18 июня 2013 года .
  4. ^ «MPEG-DASH против Apple HLS против Smooth Streaming против Adobe HDS» .
  5. ^ Pantos, R. (30 сентября 2011). «HTTP Live Streaming» . Инженерная группа Интернета . Проверено 18 июня 2013 года .
  6. ^ "История проекта-pantos-http-live-streaming" . Проверено 17 апреля 2017 . Поток изменен на ISE с None
  7. ^ Пантос, Роджер; Мэй, Уильям (август 2017 г.). HTTP Live Streaming . DOI : 10,17487 / RFC8216 . RFC 8216 . Проверено 5 сентября 2017 .
  8. ^ Роджер, Пантос; Уильям, май. «HTTP Live Streaming» . tools.ietf.org . Проверено 23 января 2017 .
  9. ^ Что нового в HTTP Live Streaming . Разработчик Apple .
  10. ^ Siglin, Тим (16 июня 2016). «HLS теперь поддерживает фрагментированный MP4, что делает его совместимым с DASH» . StreamingMedia.com .
  11. ^ Grandl Рейнхард (15 июня 2016). «WWDC16: HLS поддерживает фрагментированный MP4 - и становится совместимым с MPEG-DASH!» . Bitmovin.com .
  12. ^ Низкая задержка HLS . Разработчик Apple .
  13. ^ «Сообщество предоставило нам прямые трансляции с низкой задержкой. Затем Apple забрала их» . 2019-06-14 . Проверено 17 июня 2019 .
  14. ^ Спилманс, Питер-Ян (2020-12-09). «Низкая задержка везде: как реализовать LL-HLS на разных платформах» . Тео . Проверено 11 марта 2021 .
  15. ^ Пантос, Роджер (2020-04-30). «HTTP Live Streaming 2-е издание» . IETF . Проверено 30 апреля 2020 .
  16. ^ "Видео CDN | Потоковое видео | Потоковая доставка | Быстро" . www.fastly.com . Проверено 1 октября 2020 .
  17. ^ "Руководство по кодированию" . Поддержка видео Limelight Orchestrate . Limelight Networks. Архивировано из оригинала на 2013-08-01 . Проверено 14 ноября 2013 года .
  18. ^ "hls-сервер" . npm.
  19. ^ «Особенности платформы Android 3.0» . Разработчики Android . Архивировано из оригинала на 2011-01-28.
  20. ^ «Обновления webOS 3.0.5» . Архивировано из оригинала на 2012-01-22.
  21. ^ «Упрощенная адаптивная потоковая передача видео: объявление о поддержке HLS и DASH в Windows 10» . Блог группы разработчиков Internet Explorer . 29 января 2015.
  22. ^ a b Тим Сиглин (1 ноября 2010 г.). «Первый взгляд: службы мультимедиа Microsoft IIS 4» . StreamingMedia.com . Проверено 30 июля 2011 года .
  23. Чан, Дэвид (26 ноября 2010 г.). «Обзор приложения для iPad: SlingPlayer» . Блогкритики . Архивировано из оригинального 15 апреля 2014 года . Проверено 14 апреля 2014 года .
  24. Скотт, Эндрю (27 февраля 2015 г.). «Аудиофабрика: обзор» . Интернет-блог . BBC. единственными активами по запросу будут AAC HLS. ... Мы все еще ведем переговоры с производителями, и многие уверены, что они смогут предоставить своим пользователям доступ ко всем 57 нашим потокам HLS AAC на скорости 320 кбит / с в течение нескольких недель или месяцев.
  25. ^ «Поддерживаемые медиа-форматы» . Разработчики Android .
  26. ^ «Firefox для Android 50.0, все новые функции, обновления и исправления» . Mozilla .
  27. ^ Джайлз, Ральф; Смоле, Мартин (28 ноября 2017 г.). «Воспроизведение DASH видео AV1 в Firefox» . Mozilla Hacks - блог веб-разработчиков .
  28. ^ «Firefox для Android Beta 59.0beta, см. Все новые функции, обновления и исправления» . Mozilla .
  29. ^ Сливка, Эрик (15 ноября 2010). «Подсказки службы iTunes Live Stream, найденные в iTunes 10.1» . MacRumors .
  30. ^ "# 2943 (Поддержка HTTP Live Streaming в качестве клиента)" . Трекер ошибок VLC .
  31. ^ «Воспроизведение потокового видео HLS с проигрывателем VLC - Форумы VideoLAN» . forum.videolan.org .
  32. ^ «Windows 8 - HTTP Live Streaming» . www.3ivx.com .
  33. ^ «3ivx - Партнерская программа разработчиков Xbox Live - поставщик компонентов» . www.3ivx.com .
  34. ^ NV, ТЕО Технологии. «HTML5 Video Player - THEOplayer» . www.theoplayer.com .
  35. ^ Player, Radiant Media. «История версий - Radiant Media Player» . www.radiantmediaplayer.com .
  36. ^ «dailymotion - средний» . Средний .
  37. ^ Демо-страница hls.js Архивировано 20 ноября 2015 г. на Wayback Machine
  38. ^ "Orange-OpenSource / hasplayer.js" . GitHub .
  39. ^ "Искра" . Искра .
  40. ^ "google / shaka-player" . GitHub .
  41. ^ "Демо-версия Shaka Player" . shaka-player-demo.appspot.com .
  42. ^ "Fluid Player - видеоплеер HTML5" . www.fluidplayer.com .
  43. ^ «Документация по плееру Fluid» . docs.fluidplayer.com .
  44. ^ "игрок жидкости / игрок жидкости" . GitHub .
  45. ^ "marakew / AvProxy" . GitHub .
  46. Перейти ↑ Ozer, Jan (2015). «Обзор: Bitcodin, облачный сервис кодирования видео от Bitmovin» . www.StreamingMediaGlobal.com .
  47. ^ «Доставка HLS Video - Brightcove Learning» . support.brightcove.com .
  48. ^ «MediaGoom. Основные веб-потоковые» .