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

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

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

В VOD media playlist статичен: один раз перечислили все сегменты, закрыли `#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-конфигурацией, согласующей окно свежести с темпом публикации сегментов.

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

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