Skip to content

Потоки по запросу (on-demand) и HLS

Содержание

Для чего нужны потоки по запросу (on-demand)?

Если поток настроен на режим по запросу, он будет включаться только при получении запроса от пользователя. В случае, если у пользователя пропала необходимость в просмотре, или же источник, из которого транслируется поток, по каким-то причинам остановил свою работу — поток автоматически отключится через определенное время (таймаут). Потоки по запросу нужны, в основном, для экономии ресурсов (в первую очередь трафика). Они хорошо подходят в тех случаях, когда у вас есть большое количество потоков, но вам не нужна их одновременная и постоянная работа.

Подробнее о настройке потоков по запросу здесь.

Проблемы, связанные с on-demand

Особенность работы сегментированных протоколов в режиме по запросу (On-demand) состоит в том, что при их использовании требуется накопление буфера плеера перед началом отдачи видео (первичная загрузка хотя бы 3 сегментов видео), что занимает некоторое время. Несмотря на то, что такие параметры, как используемый протокол передачи медиа, размер GOP (группы кадров), длина сегмента, могут повлиять на время накопления буфера, этот процесс и связанная с ним задержка неизбежны.

Проблемы, связанные с протоколом HLS

  1. HLS является сегментированным протоколом, соответственно, требуется некоторое время на накопление буфера.
  2. В Flussonic Media Server реализована проверка, определяющая, жив ли источник. Она заключается в том, что Flussonic (рестример), подключившись к HLS источнику, запоминает последний увиденный сегмент и ждет появление следующего. До тех пор, пока он не появится, Flussonic не начнет воспроизведение. Это приводит к дополнительной задержке воспроизведения.

Note

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

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

Как это исправить?

У нас есть решение для обеих этих проблем — наш собственный протокол M4F. Его использование убирает необходимость проверки источника (этот протокол гарантирует, что рестример не загрузит уже имеющиеся сегменты второй раз, а источник сбросит плейлист, если на нем пропали кадры), также он поддерживает prepush (быстрое наполнение буфера плеера) и предоставляет информацию об архиве источника (или нескольких источников одновременно), дает возможность проксировать архив. Как итог — нивелируются обе причины этой задержки. M4F является внутренним протоколом Flussonic, следовательно, его использование возможно только при условии, если Flussonic Media Server — и источник, и рестример. Подробнее о протоколе M4F.

Note

Если ваша цель — именно потоки по запросу (On-demand) и их вывод по протоколу HLS — мы настоятельно рекомендуем вам обратиться к поставщику с просьбой поставить себе Flussonic Media Server, и использовать протокол M4F для передачи данных между ними. В результате вы получите хорошо синхронизированную конфигурацию и решите проблемы, связанные с долгим запуском потоков.