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