stringtranslate.com

HTTP-трансляция в прямом эфире

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

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

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

Apple задокументировала HTTP Live Streaming как интернет-черновик (индивидуальная подача), первый этап процесса публикации в виде запроса на комментарии (RFC). По состоянию на декабрь 2015 года авторы этого документа обратились к независимому редактору потока RFC (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 .
  • Сегментатор: делит поток на фрагменты одинаковой длины. Он также создает индексный файл, содержащий ссылки на фрагментированные файлы, сохраненные как .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 с именем с низкой задержкой и соответствующей аббревиатурой:

Оставшаяся часть этого раздела описывает 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, а также в 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 должна иметь атрибут SCTE35-OUT, а команда входа соединения должна иметь атрибут 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. В версии 20H2 он был заменен Edge Chromium. Наряду с Windows 11 Microsoft выпустила обновленный медиаплеер , который изначально поддерживает HLS.

Клиенты

Серверы

Живые кодеры

Кодеры VOD

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

Рекомендации

  1. ^ Пантос, Р.; Мэй, В. (2017). «Плейлисты». HTTP-трансляция в прямом эфире. IETF . п. 9. сек. 4. дои : 10.17487/RFC8216 . ISSN  2070-1721. РФК 8216 . Проверено 15 января 2020 г.
  2. ^ Ледерер, Стефан. «Отчет разработчиков видео за 2022 год» (PDF) . Битмовин . Проверено 25 октября 2023 г.
  3. Джордан, Ларри (10 июня 2013 г.). «Основы потоковой передачи HTTP в реальном времени». Блог Ларри . Ларри Джордан и партнеры . Проверено 18 июня 2013 г.
  4. ^ «MPEG-DASH против Apple HLS против Smooth Streaming против Adobe HDS» . Битмовин . 29 марта 2015 г.
  5. ^ Чен, Сунцин; Шен, Бо; Тан, Вай-тян; Ух, Сьюзи; Чжан, Сяодун (9 июля 2006 г.). «Аргументы в пользу потоковой передачи через Интернет через веб-серверы». 2006 Международная конференция IEEE по мультимедиа и выставкам . стр. 2145–2148. дои : 10.1109/ICME.2006.262660. eISSN  1945-788X. ISBN 9781424403677. ISSN  1945-7871. S2CID  9202042.
  6. ^ Сунцин Чен; Бо Шен; Ви, С.; Сяодун Чжан (23 июля 2007 г.). «SProxy: инфраструктура кэширования для поддержки потоковой передачи через Интернет». Транзакции IEEE в мультимедиа . 9 (5): 1062–1072. CiteSeerX 10.1.1.74.4838 . дои : 10.1109/TMM.2007.898943. ISSN  1520-9210. S2CID  870854. 
  7. Пантос, Р. (30 сентября 2011 г.). «HTTP-трансляция в прямом эфире». Рабочая группа по интернет-инжинирингу . Проверено 18 июня 2013 г.
  8. ^ "История Draft-Pantos-http-live-streaming" . Проверено 17 апреля 2017 г. Поток изменен на ISE с «Нет»
  9. ^ Пантос, Роджер; Мэй, Уильям (август 2017 г.). HTTP-трансляция в прямом эфире. дои : 10.17487/RFC8216 . РФК 8216 . Проверено 5 сентября 2017 г.
  10. ^ Роджер, Пантос; Уильям, Мэй. «HTTP-трансляция в прямом эфире». www.tools.ietf.org . Проверено 23 января 2017 г.
  11. ^ Что нового в потоковой передаче HTTP в реальном времени. Разработчик Apple .
  12. Сиглин, Тим (16 июня 2016 г.). «HLS теперь поддерживает фрагментированный MP4, что делает его совместимым с DASH». StreamingMedia.com .
  13. Грандл, Рейнхард (15 июня 2016 г.). «WWDC16: HLS поддерживает фрагментированный MP4 и совместим с MPEG-DASH!». Bitmovin.com .
  14. ^ HLS с низкой задержкой. Разработчик Apple .
  15. ^ «Сообщество предоставило нам прямую трансляцию с малой задержкой. Затем Apple забрала ее» . 14 июня 2019 г. Проверено 17 июня 2019 г.
  16. ^ «Документация разработчика Apple». разработчик.apple.com . Проверено 10 августа 2022 г.
  17. ^ Спилманс, Питер-Ян (9 декабря 2020 г.). «Повсюду низкая задержка: как реализовать LL-HLS на разных платформах». Тео . Проверено 11 марта 2021 г.
  18. ^ Пантос, Роджер (30 апреля 2020 г.). «Прямая трансляция HTTP, 2-е издание». IETF . Проверено 30 апреля 2020 г.
  19. ^ «Видео CDN | Потоковое видео | Доставка потоков | Быстро» . www.fastly.com . Проверено 1 октября 2020 г.
  20. ^ «Руководство по кодированию». Поддержка видео Limelight Orchestrate . Сети внимания. Архивировано из оригинала 1 августа 2013 г. Проверено 14 ноября 2013 г.
  21. ^ "Модуль ngx_http_hls_module". nginx.org .
  22. ^ "hls-сервер". нпм. 12 февраля 2018 г.
  23. ^ "Штормовая трансляция". Штормовой стриминг . Проверено 30 июля 2021 г. Устройства вывода: HLS, MPEG-DASH, WebSocket, RTMP.
  24. ^ «Unreal Media Server». umediaserver.net . Проверено 30 июля 2021 г. Unreal Media Server поддерживает прием прямых трансляций из широкого спектра живых программных и аппаратных кодировщиков, которые отправляют потоки через WebRTC, RTMP, RTSP, MPEG2-TS, HLS,
  25. ^ «Основные особенности платформы Android 3.0» . Android-разработчики . Архивировано из оригинала 28 января 2011 г.
  26. ^ «Обновления webOS 3.0.5» . Архивировано из оригинала 22 января 2012 г.
  27. ^ «Упрощенная адаптивная потоковая передача видео: объявление о поддержке HLS и DASH в Windows 10» . Блог команды Internet Explorer . 29 января 2015 г.
  28. ^ аб Сиглин, Тим (1 ноября 2010 г.). «Первый взгляд: службы мультимедиа Microsoft IIS 4». StreamingMedia.com . Проверено 30 июля 2011 г.
  29. Чан, Дэвид (26 ноября 2010 г.). «Обзор приложения для iPad: SlingPlayer». Блогкритики . Архивировано из оригинала 15 апреля 2014 года . Проверено 14 апреля 2014 г.
  30. Скотт, Эндрю (27 февраля 2015 г.). «Аудио Фабрика: обзор». Интернет-блог . Би-би-си. единственными ресурсами по требованию будут 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, см. все новые функции, обновления и исправления» . Мозилла .
  35. ^ Джайлз, Ральф; Смоул, Мартин (28 ноября 2017 г.). «Воспроизведение DASH видео AV1 в Firefox». Mozilla Hacks — блог веб-разработчиков .
  36. ^ «Firefox для Android Beta 59.0beta, см. все новые функции, обновления и исправления» . Мозилла .
  37. Сливка, Эрик (15 ноября 2010 г.). «Подсказки о сервисе iTunes Live Stream найдены в iTunes 10.1». МакСлухи .
  38. ^ «# 2943 (Поддержка HTTP Live Streaming в качестве клиента)» . Трекер ошибок VLC . 9 июля 2009 г.
  39. ^ «Воспроизведение потокового видео HLS с помощью проигрывателя VLC - Форумы VideoLAN» . forum.videolan.org .
  40. ^ «Windows 8 — прямая трансляция HTTP» . www.3ivx.com .
  41. ^ «3ivx — Партнерская программа разработчиков Xbox Live — Поставщик компонентов» . www.3ivx.com .
  42. ^ Н.В., ТЕО Технологии. «Видеоплеер HTML5 – THEOplayer». www.theoplayer.com .
  43. ^ Игрок, Radiant Media. «История версий — Radiant Media Player». www.radiantmediaplayer.com .
  44. ^ "дейлидвижение - Средний" . Середина .
  45. ^ "Демо-страница hls.js" . Архивировано из оригинала 20 ноября 2015 года.
  46. ^ "Orange-OpenSource/hasplayer.js". Гитхаб .
  47. ^ "Искра". Искра .
  48. ^ "Google/shaka-player" . Гитхаб .
  49. ^ "Демо-версия Shaka Player" . shaka-player-demo.appspot.com .
  50. ^ «Fluid Player — видеоплеер HTML5» . www.fluidplayer.com .
  51. ^ "Документация Fluid Player" . docs.fluidplayer.com .
  52. ^ "Жидкий игрок / Жидкий игрок" . Гитхаб .
  53. ^ «QMPlay2 — Qt Media Player 2» . 22 октября 2023 г. — через GitHub.
  54. ^ "Маракью/AvProxy". Гитхаб .
  55. ^ Озер, Январь (2015). «Обзор: Bitcodin, облачная служба кодирования видео от Bitmovin». www.StreamingMediaGlobal.com .
  56. ^ «Предоставление видео HLS - Brightcove Learning» . support.brightcove.com .
  57. ^ "MediaGoom. Основная веб-трансляция" .