stringtranslate.com

HTTP-трансляция в реальном времени

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

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

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

Apple задокументировала HTTP Live Streaming как Internet Draft (Individual Submission), первый этап в процессе его публикации в качестве Request for Comments (RFC). По состоянию на декабрь 2015 года авторы этого документа запросили RFC Independent Stream Editor (ISE) опубликовать документ как информационный (нестандартный) RFC вне процесса консенсуса IETF . [8] В августе 2017 года был опубликован RFC 8216 для описания версии 7 протокола. [9]

Архитектура

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

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

Функции

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

Приспособляемость

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

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

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

HLS с низкой задержкой

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

Оставшаяся часть этого раздела описывает ALHLS от Apple. Он уменьшает задержку «стекло-стекло» при потоковой передаче через HLS, сокращая время начала воспроизведения потоковой передачи и поддерживая это время во время трансляции потоковой передачи. Он работает путем добавления в микс файлов частичных медиасегментов, во многом подобно fMP4 MPEG-CMAF. В отличие от CMAF, ALHLS также поддерживает частичные транспортные файлы MPEG-2 TS. Частичный медиасегмент — это стандартный сегмент (например, 6 секунд), разделенный на равные сегменты длительностью менее секунды (например, 200 миллисекунд). Стандартный первый сегмент заменяется серией частичных сегментов. Последующие сегменты имеют стандартный размер. [16] HTTP/2 требуется для передачи сегментов вместе со списком воспроизведения, что снижает накладные расходы на установление повторных соединений HTTP/TCP.

Другие особенности включают в себя:

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

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

Динамическая вставка рекламы

Динамическая вставка рекламы поддерживается в 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 splice out должна иметь атрибут SCTE35-OUT, а команда splice in должна иметь атрибут SCTE35-IN.

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

Реализации сервера

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

Использование

Поддерживаемые игроки и серверы

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

Windows 10 раньше имела встроенную поддержку HTTP Live Streaming в EdgeHTML , фирменном браузерном движке, который использовался в Microsoft Edge (теперь именуемом Edge Legacy) до перехода на браузерный движок Blink на базе Chromium . Edge Legacy был включен в Windows 10 вплоть до версии 2004. Он был заменен Edge Chromium в версии 20H2. Вместе с Windows 11 Microsoft выпустила обновленный Media Player , который поддерживает HLS изначально.

Клиенты

Серверы

Живые энкодеры

VOD-кодеры

Смотрите также

Ссылки

  1. ^ Pantos, R.; May, W. (2017). "Плейлисты". HTTP Live Streaming. IETF . стр. 9. раздел 4. doi : 10.17487/RFC8216 . ISSN  2070-1721. RFC 8216. Получено 15 января 2020 г.
  2. ^ Ледерер, Стефан. "2022 Video Developer Report" (PDF) . Bitmovin . Получено 25 октября 2023 г. .
  3. ^ Джордан, Ларри (10 июня 2013 г.). «Основы HTTP Live Streaming». Блог Ларри . Larry Jordan & Associates . Получено 18 июня 2013 г.
  4. ^ "MPEG-DASH против Apple HLS против Smooth Streaming против Adobe HDS". Bitmovin . 29 марта 2015 г.
  5. ^ Чэнь, Сунцин; Шэнь, Бо; Тань, Вай-тянь; Ви, Сьюзи; Чжан, Сяодун (2006-07-09). «Дело в пользу потоковой передачи через Интернет через веб-серверы». Международная конференция IEEE по мультимедиа и выставкам 2006 года . стр. 2145–2148. doi :10.1109/ICME.2006.262660. eISSN  1945-788X. ISBN 9781424403677. ISSN  1945-7871. S2CID  9202042.
  6. ^ Songqing Chen; Bo Shen; Wee, S.; Xiaodong Zhang (2007-07-23). ​​"SProxy: кэширующая инфраструктура для поддержки потоковой передачи в Интернете". IEEE Transactions on Multimedia . 9 (5): 1062–1072. CiteSeerX 10.1.1.74.4838 . doi :10.1109/TMM.2007.898943. ISSN  1520-9210. S2CID  870854. 
  7. ^ Pantos, R. (30 сентября 2011 г.). "HTTP Live Streaming". Internet Engineering Task Force . Получено 18 июня 2013 г.
  8. ^ "История для draft-pantos-http-live-streaming" . Получено 2017-04-17 . Поток изменен на ISE с None
  9. ^ Pantos, Roger; May, William (август 2017 г.). HTTP Live Streaming. doi : 10.17487/RFC8216 . RFC 8216 . Получено 05.09.2017 .
  10. ^ Роджер, Пантос; Уильям, Мэй. "HTTP Live Streaming". tools.ietf.org . Получено 23.01.2017 .
  11. ^ Что нового в HTTP Live Streaming. Разработчик Apple .
  12. ^ Сиглин, Тим (16 июня 2016 г.). «HLS теперь поддерживает фрагментированный MP4, что делает его совместимым с DASH». StreamingMedia.com .
  13. ^ Грандл, Рейнхард (15 июня 2016 г.). «WWDC16: HLS поддерживает фрагментированный MP4 – и становится совместимым с MPEG-DASH!». Bitmovin.com .
  14. ^ HLS с низкой задержкой. Разработчик Apple .
  15. ^ "Сообщество дало нам прямую трансляцию с низкой задержкой. Затем Apple отобрала ее". 2019-06-14 . Получено 2019-06-17 .
  16. ^ "Документация для разработчиков Apple". developer.apple.com . Получено 10 августа 2022 г. .
  17. ^ Спилманс, Питер-Ян (2020-12-09). "Низкая задержка везде: как реализовать LL-HLS на разных платформах". Тео . Получено 2021-03-11 .
  18. ^ Pantos, Roger (2020-04-30). "HTTP Live Streaming 2nd Edition". IETF . Получено 2020-04-30 .
  19. ^ "Video CDN | Потоковое видео | Доставка потока | Fastly". www.fastly.com . Получено 2020-10-01 .
  20. ^ "Руководство по кодированию". Поддержка видео Limelight Orchestrate . Limelight Networks. Архивировано из оригинала 2013-08-01 . Получено 14 ноября 2013 г.
  21. ^ "Модуль ngx_http_hls_module". nginx.org .
  22. ^ "hls-server". npm. 12 февраля 2018 г.
  23. ^ "Storm Streaming". Storm Streaming . Получено 2021-07-30 . Устройства вывода: HLS, MPEG-DASH, WebSocket, RTMP
  24. ^ "Unreal Media Server". umediaserver.net . Получено 2021-07-30 . Unreal Media Server поддерживает прием прямых трансляций из широкого спектра программных и аппаратных кодировщиков, которые отправляют потоки через WebRTC, RTMP, RTSP, MPEG2-TS, HLS,
  25. ^ "Основные моменты платформы Android 3.0". Разработчики Android . Архивировано из оригинала 2011-01-28.
  26. ^ "Обновления webOS 3.0.5". Архивировано из оригинала 2012-01-22.
  27. ^ "Упрощенная адаптивная потоковая передача видео: анонс поддержки HLS и DASH в Windows 10". Блог команды Internet Explorer . 29 января 2015 г.
  28. ^ ab Siglin, Tim (1 ноября 2010 г.). "First Look: Microsoft IIS Media Services 4". StreamingMedia.com . Получено 30 июля 2011 г. .
  29. Чан, Дэвид (26 ноября 2010 г.). «Обзор приложения iPad: SlingPlayer». Blogcritics . Архивировано из оригинала 15 апреля 2014 г. Получено 14 апреля 2014 г.
  30. ^ Скотт, Эндрю (27 февраля 2015 г.). "Audio Factory: обзор". Интернет-блог . BBC. единственными активами по запросу будут AAC HLS. ... Мы все еще ведем переговоры с производителями, и многие из них уверены, что они смогут предоставить своим пользователям доступ ко всем 57 нашим потокам HLS AAC со скоростью 320 кбит/с в течение нескольких недель или месяцев.
  31. ^ Шен, Юеши (2017). «Трансмультиплексирование/транскодирование живого видео: FFmpeg против TwitchTranscoder, часть 1».
  32. ^ "Поддерживаемые форматы мультимедиа". Разработчики Android .
  33. ^ "HTTP Live Streaming (HLS) | Могу ли я использовать... Таблицы поддержки для HTML5, CSS3 и т. д.". caniuse.com .
  34. ^ "Firefox для Android 50.0, см. все новые функции, обновления и исправления". Mozilla .
  35. ^ Джайлс, Ральф; Смоле, Мартин (28 ноября 2017 г.). «Воспроизведение видео AV1 в Firefox с помощью DASH». Mozilla Hacks – блог веб-разработчиков .
  36. ^ "Firefox для Android Beta 59.0beta, см. все новые функции, обновления и исправления". Mozilla .
  37. ^ Сливка, Эрик (15 ноября 2010 г.). «В iTunes 10.1 обнаружены намеки на сервис „iTunes Live Stream“». MacRumors .
  38. ^ "#2943 (Поддержка HTTP Live Streaming в качестве клиента)". VLC bug tracker . 9 июля 2009 г.
  39. ^ "Воспроизведение потокового видео HLS с помощью проигрывателя VLC - Форумы VideoLAN". forum.videolan.org .
  40. ^ "Windows 8 - HTTP Live Streaming". www.3ivx.com .
  41. ^ "3ivx - Партнерская программа разработчиков Xbox Live - Поставщик компонентов". www.3ivx.com .
  42. ^ NV, THEO Technologies. "HTML5 Video Player – THEOplayer". www.theoplayer.com .
  43. ^ Плеер, Radiant Media. "История версий - Radiant Media Player". www.radiantmediaplayer.com .
  44. ^ "dailymotion – Medium". Средний .
  45. ^ "hls.js demo page". Архивировано из оригинала 20 ноября 2015 г.
  46. ^ "Orange-OpenSource/hasplayer.js". GitHub .
  47. ^ "Искра". Искра .
  48. ^ "google/shaka-player". GitHub .
  49. ^ "Демо-версия Shaka Player". shaka-player-demo.appspot.com .
  50. ^ "Fluid Player - HTML5 видеоплеер". www.fluidplayer.com .
  51. ^ "Документация Fluid Player". docs.fluidplayer.com .
  52. ^ "fluid-player/fluid-player". GitHub .
  53. ^ "QMPlay2 - Qt Media Player 2". 22 октября 2023 г. – через GitHub.
  54. ^ "marakew/AvProxy". GitHub .
  55. ^ Озер, Ян (2015). «Обзор: Bitcodin, облачный сервис кодирования видео от Bitmovin». www.StreamingMediaGlobal.com .
  56. ^ «Предоставление видео HLS — Brightcove Learning». support.brightcove.com .
  57. ^ «MediaGoom. Основы веб-трансляций».