HLS как средство борьбы за рынок услуг IPTV | Techsuphelper

БлогФорум

HLS для VoD и потокового вещания в Nimble Streamer

В медиа-сервере Nimble Streamer есть полный набор возможностей для HTTP Live Streaming (HLS).

Потоковое вещание HLS

Nimble Streamer предусматривает различные сценарии живого вещания.

DVR: Запись потоков и вопроизведение в HLS

Nimble Streamer поддерживает функциональность DVR, которая позволяет записывать входящие живые потоки и воспроизводить их через MPEG-DASH и HLS.
DVR HLS поддерживает кодеки HEVC (H.265) и AVC (H.264) для контейнеров fMP4 и MPEG2TS одновременно.

Вещание HLS видео-по-запросу в качестве origin-сервера

Nimble Streamer позволяет эффективно транслировать HLS в режиме VOD.

  • Поддерживаются кодеки H.264/AVC и H.265/HEVC.
  • Поддерживаемые форматы: MP4, MP3, AAC, F4V.
  • Поддерживается MP4 видео+аудио, видео, аудио, оригинальный MP4, расширения Apple QuickTime.
  • Могут использоваться контейнеры MPEG2TS, fragmented MP4 (fMP4) и MPEG2TS «только-аудио».
  • Перепаковка MP4 в HLS в VOD режиме делается эффективно и с малой ресурсоёмкостью.
  • Поддержка удаленного HTTP хранилища позволяет эффективно работать с файлами, размер которых превышает свободное пространство в файловой системе.
  • Поддержка адаптивного битрейта (ABR) с помощью SMIL файлов.
  • Поддержка выбора аудио и видео треков для перепаковки MP4 в VOD HLS.
  • Можно делать перепаковку треков только-audio и только-video.
  • Субтитры: WebVTT, SRT и TTML поддерживаются для HLS — как одиночные файлы, так и через SMIL.
  • Эффективная перепаковка MP3 аудио в аудио HLS для уменьшения трафика интернет-радио.
  • Создание ‘только аудио’ HLS из AAC.
  • Контроль VOD кэша с использованием LRU используемых фрагментов и других параметров.
  • Для удобства интеграции с CDN поддерживается заголовок If-Modified-Since.
  • Возможность использования шифрования HLS AES-128 для защиты контента (DRM).
  • Одни и те же медиа-файлы могут быть использованы как для DASH, так и для HLS VOD вещания.

Ретрансляция HLS

Если у вас есть предварительно пакетированный контент, то можно настроить ретрансляцию HLS через edge-серверы. Эффективное кэширование позволит сберечь ресурсы и трафик.

Установитьи бесплатно попробовать WMSPanel

Легкая процедура установки и обновления

Nimble Streamer ставится в несколько простых шагов и может быть обновлен до последней версии с помощью двух-трех простых команд в консоли.

Свяжитесь с нами, если нужна помощь и воспользуйтесь поиском по документации, там есть ответы на многие вопросы.

В последние несколько лет в мире цифрового вещания произошли большие изменения . Flash — технология доставки контента через интернет, разработанная Adobe, стремительно сокращает свое присутствие. А ее место занимают протоколы подобные HLS.

HTML5 и HLS созданы на открытом коде, их можно изменять как угодно и использовать бесплатно. Также они более безопасные, надежные и быстрые чем предшественники. В статье постараемся раскрыть понятия онлайн вещания, дадим описание стриминговым протоколам и рекомендации по использованию HLS.

Что такое HLS

HLS расшифровывается как HTTP Live Streaming – протокол для потоковой передачи медиа данных через интернет. HLS нарезает видео контент в формате MP4 на короткие 10-секундные блоки, чанки. Эти короткие фрагменты доставляются по HTTP, что делает протокол совместимым с большинством устройств и файерволов.

HLS обеспечивает в первую очередь отменное качество онлайн трансляций. Но, нужно учитывать, что задержка при онлайн вещании составляет 15-30 секунд. На серверной части создатель трансляции может назначить кодирование потока в несколько качеств. Плеер затем динамически запрашивает оптимальное качество, исходя из ширины интернет канала в конкретный момент. Соответственно качество фрагментов может отличаться.

Например, мобильный телефон проигрывает видео в HD качестве, а минутой позже зритель попадает в зону плохого приема. Когда плеер обнаруживает снижение качества связи, он запрашивает видео чанки меньшего качества. Таким образом снижается буферизация, зависание и другие проблемы.

История создания HLS

Изначально HLS был запущен компанией Apple летом 2009 года вместе с IРhone 3. Предыдущие модели IРhone испытывали проблемы с онлайн вещанием, из-за того, что иногда переключались между Wi-Fi сетями и мобильной передачей данных.

Перед выходом HLS, главным стриминговым медиа протоколом Apple был Quicktime Streaming Server. Хороший сервис, но так как он использовал нестандартные порты для передачи данных, его RTSP протокол периодически блокировался файерволами. В купе с медленным интернетом это привело к отказу от данного протокола. Но уроки, полученные при его реализации, очень пригодились в разработке HLS. Техническая сторона

HLS поток создается на лету и хранится на HTTP сервере. Видео файлы, как упомянули выше, делятся на короткие фрагменты с расширением .ts – MPEG2 Transport Stream.

HTTP сервер также создает плейлист файл с расширением .M3U8 (также называемый манифестом), который служит для индексирования всех видео чанков. Этот плейлист файл указывает на дополнительные индексные файлы для каждого из существующих качеств вещания. Даже если вы решите вещать, используя одно качество, «манифест» все равно будет создан.

Плеер пользователя должен распознать ухудшение или улучшение скорости передачи данных в сети интернет. Когда такое событие происходит, плеер обращается к файлу-манифесту, для определения на какое качество видео переключиться. После этого плеер запрашивает индексный файл для конкретного качества, чтобы загрузить фрагмент видео, на котором остановился зритель. Весь этот процесс незаметен для пользователя. Протокол HLS также поддерживает скрытые субтитры,

Обзор стриминговых протоколов

Каждый из созданных ранее протоколов являл собой реализацию какой-либо инновации в медиа стриминге. Были и «войны форматов», как HD-DVD с Blu-Ray и противостояние Betamax с VHS. HLS лидер онлайн вещания, но так было не всегда и не факт, что сохранится в будущем.

RTMP

RTMP или Real-Time Messaging Protocol, протокол потоковой передачи данных в реальном времени. Был создан Macromedia в середине 2000 для доставки аудио и видео контента. Часто его называют просто Flash.

Когда использовать протокол HLS

Позже Macromedia объединилось с Adobe Inc, который продолжает развивать RTMP как полуоткрытый протокол.

В течение прошедшего десятилетия RTMP был основным способом вещания через интернет. Только с появлением HLS его доля стала уменьшаться. На сегодняшний день большинство онлайн видео платформ работают с входящим RTMP потоком. Другими словами, вы вещаете в RTMP, который, затем, онлайн видео платформа кодирует в HLS и доставляет конечным зрителям. Правда, многие операторы CDN начинают отказываться от поддержки RTMP — пруф

HDS

Протокол для стриминга следующего поколения, разработанный Adobe называется HDS — HTTP Dynamic Streaming. Он совместим с плагином для проигрывания Flash, но частота его использования сильно уступает распространенному HLS.

Для устройств и браузеров, которые поддерживают Flash, HDS будет лучшим выбором. Он дает минимальную задержку при вещании, как и HLS разделяет медиа файлы небольшие фрагменты, поддерживает шифрование и DRM.

Microsoft Smooth Streaming

Microsoft создал свой протокол онлайн вещания, Microsoft Smooth Streaming. MSS также использует адаптивный битрейт, чтобы доставлять контент в наилучшем возможном качестве. Вещание с адаптивным битрейтом было представлено в 2008 году. С помощью MSS вещали Летние Олимпийские Игры 2008 года. Основным пользователем данного типа вещания является платформа XBox One. При этом, MSS один из наименее популярных протоколов сегодня.

MPEG-DASH

Одним из последних значимых решений в сфере стриминговых протоколов является MPEG-DASH, где DASH означает Dynamic Adaptive Streaming over HTTP, Динамическое Адаптивное Вещание через HTTP. Преимущество MPEG-DASH в том, что он признан единым международным стандартом вещания медиа через НТТР. На данный момент, он еще не широко распространен и далеко не все компании вещания поддерживают его. Но, по общему мнению, через несколько лет именно этот стандарт станет самым популярным протоколом вещания.

MPEG-DASH не зависит от вида кодека, вы можете использовать любой из них для пересылки медиа с помощью этого протокола – Н.264, HEVC/H.265, VP10

Когда же использовать HLS для онлайн вещания

Мы рекомендуем использовать HLS все время. Это самый современный и широко поддерживаемый протокол медиа стриминга. Без него не обойтись, если вы хотите вещать на мобильные устройства. Нативная поддержка HTML5 плеера и конечно же адаптивный битрейт обеспечивают оптимальное качество просмотров.

Недавно руководство видеохостинга YouTube, который многие еще называют пользовательским интернет телевидением, заявило о том, что в долгосрочной перспективе намерено отказаться от технологии передачи потокового видео на основе Flash.

На данный момент сервис использует стандарт HTML-5, но в YouTube говорят, что с недавнего времени Flash перестал удовлетворять все их потребности, но отказываться от него в ближайшие несколько лет компания не намерена, так как разработчики еще не создали равноценной альтернативы данной платформе.
Для решения поставленных руководством YouTube задач существует два пути – разработка принципиально новой системы передачи видео потока или совершенствование уже существующих систем использующих протокол HTTP. На данный момент есть несколько интересных разработок и в той и другой области.

Основной причиной, по которой YouTube принципиально не меняет свои алгоритмы передачи потокового видео, состоит в том, что Flash в HTML-5 является самым безопасным на данный момент форматом для использования в видеохостингах, онлайн ТВ или любом другом сервисе подобного рода. По заявлениям топ менеджеров YouTube, их компания предоставляет лишь дисковое пространство для размещения файлов и не является владельцем этих медиа материалов, но при этом видеохостинг несет ответственность за безопасность пользователей, которые посещают их сайт. Для защиты контента используются возможности протокола RTMPE, который гарантирует, что ролик не будет передан заново. Также, во Flash реализованы безопасные и устойчивые к ошибкам и сбоям элементы управления и есть возможность передавать в полноэкранном режиме видео поток хорошего качества, вплоть до HD.

В YouTube отмечают, что Flash в формате HTML-5 обеспечивает беспроблемный просмотр видео практически на любом компьютере и на многих других устройствах и данная технология является на сегодняшний день наилучшей для распространения медиа материалов посредством видеохостинга.

Документация на Flussonic Media Server

Получается, что руководство этого подразделения Google делает довольно противоречивые заявления – с одной стороны Flash не удовлетворяет их требованиям, с другой этот формат их полностью устраивает, более того данная технология активно внедряется в гуглофоны на базе Android. Скорее всего имеет место активная дискуссия в высших эшелонах менеджмента компании о дальнейшей целесообразности развития Flash направления и единого мнения по этому вопросу пока нет. Однако ясно одно – Google сформировал к способам передачи потокового видео новые требования, очевидно, что они продиктованы планами по расширению медиа услуг компании. Один из анонсированных недавно новых проектов — это интернет кинотеатр, возможно вскоре Google заявит и о намерении открыть масштабное интернет телевидение или удивит пользователя другим амбициозным сервисом

Протокол Apple HTTP Live Streaming (HLS)

Протокол HLS используется для передачи потокового видео на мобильные устройства Apple (iPhone, iPad, Mac) и на устройства с ОС Android. Поддержку протокола HLS в видеосервере «Момент» обеспечивает модуль mod_hls.

По протоколу HLS можно передавать видео, закодированное кодеком h.264 и звук, закодированный кодеком AAC. Большинство устройств поддерживают профиль «baseline» кодека h.264 (baseline profile) и звук в формате AAC LC.

Настройка

В большинстве случаев mod_hls не требует какой-либо дополнительной настройки. Достаточно только убедиться в том, что он включен, т.е. что параметр mod_hls/enable имеет значение «включено».

Для передачи по HLS потоков без видео или без аудио следует установить параметры mod_hls/no_video и mod_hls/no_audio соответственно.

Пример настройки модуля mod_hls:

mod_hls { enable = y no_audio = n no_video = n }

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

Ссылки на HLS-потоки имеют вид:

где «test» — имя потока, 1.2.3.4 — IP-адрес сервера, 8080 — порт moment/http_bind в конфиге.

Для показа HLS-видео на веб-странице достаточно использовать тег <video> следующим образом:

<video autoplay controls src=»https://bit-digest.ru/wp-content/uploads/2018/06/53156.jpg»> Для просмотра видео требуется поддержка протокола Apple HLS. </video>

Второй вариант показа видео — через нативное приложение, написанное под конкретную мобильную платформу. Этот вариант хорошо подходит для показа видео как в iOS, так и на Android-устройствах.

Много информации об использовании HLS можно найти на веб-сайте Apple.

HTTP URI-путь зарезервирован для mod_hls. Этот путь нельзя использовать для других целей (в частности, как prefix в секции mod_file).

Список параметров

Доступные параметры конфигурации модуля mod_hls:

mod_hls/enable — включить модуль mod_hls. По умолчанию: «yes» (mod_hls включен).

mod_hls/no_audio — Не включать аудиотрек в отдаваемые HLS-потоки. В случае, если в HLS-потоке заявлена звуковая дорожка, но нет аудиоданных, воспроизведение потока в плеере начинается со значительной задержкой, когда плеер принимает решение начать показ видео не смотря на отсутствие ожидаемых аудиоданных. По умолчанию: «no» (отправлять аудио).

mod_hls/no_video — Не включать видеотрек в отдаваемые HLS-потоки. В случае, если в HLS-потоке заявлено наличие видео, но нет видеоданных, воспроизведение потока в плеере начинается со значительной задержкой, когда плеер принимает решение начать показ не смотря на отсутствие ожидаемых видеоданных. По умолчанию: «no» (отправлять видео).

mod_hls/no_rtmp_audio — Не включать аудио для видеопотоков, публикуемых на сервере RTMP-клиентами.

mod_hls/no_rtmp_video — Не включать видео для потоков, публикуемых на сервере RTMP-клиентами.

mod_hls/stream_timeout — Таймаут удаления HLS-потока на сервере, в секундах. В обычном режиме HLS-поток удаляется спустя stream_timeout секунд после удаления исходного видеопотока. До момента удаления HLS-потока клиенты ещё могут загружать хвостовые сегменты. В режиме «realtime» поток удаляется, если в течение интервала stream_timeout от клиента не поступило ни одного запроса на загрузку HLS-сегмента. По умолчанию: 60 секунд.

mod_hls/watcher_timeout — таймаут в миллисекундах, используемый для определения, есть ли в данный момент HLS-клиенты, смотрящие конкретный видеопоток. Этот таймаут может использоваться при настройке подключения к источникам видео по запросу (см. параметр модуля mod_gst mod_gst/connect_on_demand) и при настройке включения/выключения транскодера Speex->AAC. По умолчанию: 5000 миллисекунд (5 секунд).

mod_hls/segment_duration — Длительность одного HLS-сегмента в миллисекундах. Это одна из основных характеристик HLS-потока (см. также параметр mod_hls/target_duration). Следует учитывать, что воспроизведение потока в HLS-плеерах не начинается до тех пор, пока клиент не загрузит полностью хотя бы один сегмент. Это также означает, что задержка воспроизведения видео в плеере относительно реального времени не может быть меньше, чем segment_duration. Слишком малые значения segment_duration приводят к задержкам воспроизведения на клиенте, перерасходу сетевого трафика, повышенной нагрузке на сервер из-за частых HTTP-запросов на загрузку HLS-сегментов. Значение segment_duration (а также target_duration), рекомендуемое Apple — не менее 10 секунд. По умолчанию: 1000 миллисекунд (1 секунда).

mod_hls/target_duration — Значение target_duration соответствует длине HLS-сегмента в секундах. В большинстве случаев target_duration должно быть равно значению параметра mod_hls/segment_duration, поделённому на 1000 (т.к.

segment_duration задаётся в миллисекундах). Значение target_duration помещается в поле #EXT-X-TARGETDURATION в списках HLS (m3u8), а также используется для определения интервалов срабатывания внутренних таймеров удаления старых данных видеопотока. По умолчанию: 1 секунда.

mod_hls/max_segment_len — Максимальная длина HLS-сегмента в байтах. По умолчанию: 16777216 (16 МБ).

mod_hls/one_session_per_streammod_hls может работать в двух режимах. Основной режим — общее сегментирование потока для всех клиентов (one_sssion_per_stream=y).

DASH или HLS?

В этом режиме поток разбивается на HLS-сегменты однократно, затем полученные сегменты рассылаются всем смотрящим клиентам. Второй режим — сегментирование потока отдельно для каждого клиента (one_session_per_stream=n). Этот режим позволяет уменьшить среднюю задержку воспроизведения потока на клиенте, при этом нагрузка на систему в расчёте на одного клиента выше. По умолчанию: «yes» (использовать общее сегментирование).

mod_hls/num_real_segments — Количество заполненных сегментов с реально собранными (готовыми к воспроизведению) видеоданными, которые помещаются в список сегментов HLS, отдаваемый клиентам.

Задержка воспроизведения видео в плеере не может быть меньше, чем segment_duration * num_real_segments. По умолчанию: 2.

mod_hls/num_lead_segments — Количество ещё не заполненных сегментов, которые помещаются в хвост списка сегментов HLS, отдаваемого клиентам. По умолчанию: 1.

mod_hls/insert_au_delimiters — Вставлять в поток дополнительные разделители access units. Если этот параметр не задан (значение «no»), то дополнительные разделители добавляются только для потоков, публикуемых на сервере RTMP-клиентами — этого достаточно для корректной работы в большинстве случаев. По умолчанию: «yes» (добавлять разделители).

mod_hls/send_codec_data — Вставлять в поток настройки кодека h.264 (SPS, PPS) с определённом интервалом (параметр mod_hls/codec_data_interval). Если этот параметр не задан (значение «no»), то настройки кодека добавляются только для потоков, публикуемых на сервере RTMP-клиентами — этого достаточно для корректной работы в большинстве случаев. По умолчанию: «yes» (вставлять в поток настройки кодека).

mod_hls/codec_data_interval — Интервал добавления настроек h.264 в поток, в миллисекундах. См. параметр mod_hls/send_codec_data. По умолчанию: 1000 миллисекунд (1 секунда).

mod_hls/realtime_mode — в режиме «realtime» данные HLS-сегментов отправляются клиентам немедленно, даже если сегмент сформирован не полностью. Сегменты при этом имеют фиксированный размер в байтах (параметр mod_hls/realtime_target_len). На практике уменьшения задержки воспроизведения в этом режиме не наблюдается, т.к. плееры не начинают воспроизведение сегмента до его полной загрузки. Использовать режим «realtime» не рекомендуется, за исключением случаев, когда это может быть полезно для тестирования — например, при разработке HLS-плееров. По умолчанию: «no» (выключено).

mod_hls/realtime_target_len — Длина HLS-сегмента в байтах в режиме «realtime» (см. параметр mod_hls/realtime_mode). Это число должно быть кратно 188, т.е. размеру пакета MPEG TS. По умолчанию: 94000 (равняется 500 * 188).

mod_hls/num_dummy_starters — Количество пустых HLS-сегментов, состоящих из одного разделителя access units, помещаемых в список сегментов HLS в начале потока. Экспериментальный параметр. По умолчанию: 0.

К содержанию

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *