Короткое определение

HLS-плейлист – это файл, который перечисляет сегменты одного rendition. Он содержит `#EXTINF` и URL-адреса сегментов; плеер постоянно перезапрашивает его в режиме live.

Media playlist – это файл `.m3u8`, в котором для одного варианта воспроизведения (rendition) перечислены медиасегменты в порядке их воспроизведения. Перед каждым сегментом указан тег `#EXTINF` с длительностью этого сегмента. Плейлист также содержит целевую длительность (target duration – `#EXT-X-TARGETDURATION`), номер медиапоследовательности первого указанного сегмента (`#EXT-X-MEDIA-SEQUENCE`), ключ шифрования (`#EXT-X-KEY`), маркеры разрыва, а в случае трансляции в реальном времени – список частичных сегментов (partial segments) и подсказки для предварительной загрузки (preload hints).

В VOD-плейлисте медиа данные статичны: один раз перечислили все сегменты, закрыли `#EXT-X-ENDLIST` – и можно кешировать годами. В live-сценарии это скользящее окно: packager публикует новые сегменты на live edge, удаляет старые с начала списка, а плеер каждые несколько секунд обновляет плейлист, чтобы видеть свежие сегменты. Размер окна обычно составляет 5–10 сегментов, что обеспечивает 30–60 секунд проматываемой истории.

Тонкая, но важная деталь: обновления media playlist должны быть идемпотентными и согласованными. Если плеер за секунду запросил плейлист дважды, оба ответа должны содержать одни и те же сегменты с одинаковыми sequence-номерами – иначе плеер может запутаться. Под CDN-кешем это сложно обеспечить, поэтому большинство live media playlist раздаются с `Cache-Control: max-age=1` или `no-cache` плюс аккуратной CDN-конфигурацией, согласующей окно свежести с темпом публикации сегментов.

Считаете параметры для своего продукта?

Поможем собрать энкодер-леддер и посчитать стоимость доставки – до старта разработки.