Термин
EXT-X-DISCONTINUITY
Тег HLS-плейлиста, указывающий плееру на наличие разрыва в таймстемпах, параметрах кодирования или init-сегменте в следующем сегменте. Обязателен на границах рекламных блоков и при переключении контента.
Разрыв в HLS-потоке означает, что плеер должен сбросить состояние декодера на границе – таймстемпы в следующем сегменте не продолжаются плавно, параметры кодека могут измениться (другие SPS/PPS для H.264, другой `moov` для fMP4), а аудио может иметь иную частоту дискретизации или раскладку каналов. Тег `#EXT-X-DISCONTINUITY` предупреждает плеер о необходимости сброса декодера, получения нового init-сегмента при необходимости и пересинхронизации с новым временным масштабом.
Самая частая причина – вставка рекламы на стороне сервера (SSAI). Когда SSAI-сервер вставляет рекламные сегменты в поток в прямом эфире или VOD, эти сегменты поступают с другого энкодера, с другими временными метками и, возможно, с иными параметрами кодирования. Пакер ставит `#EXT-X-DISCONTINUITY` перед первым рекламным сегментом и ещё одну – перед первым сегментом основного контента после рекламы. Метки SCTE-35 в исходном потоке управляют такой расстановкой.
Разрывы возникают на границах программ (канал A заканчивается, начинается канал B в том же потоке), при смене кодека (например, HD-контент, за которым следует 4K-контент на другом кодеке) и при восстановлении после сбоев на стороне upstream (перезапуск энкодера). Плееры, плохо обрабатывающие `#EXT-X-DISCONTINUITY`, начинают «заикаться», зависать или пропускать рекламные блоки – это постоянный источник проблем с качеством пользовательского опыта (QoE).
Считаете параметры для своего продукта?
Поможем собрать энкодер-леддер и посчитать стоимость доставки – до старта разработки.