Термин

SegmentTemplate

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

Элемент MPD DASH, параметризующий URL-ы сегментов через подстановку `$Number$` или `$Time$`. Заменяет явные per-сегмент списки URL для долгоживущего live и крупных VOD-ассетов.

DASH-манифесты могут перечислять сегменты тремя способами. SegmentList явно перечисляет каждый URL (компактно для короткого контента, неудобно для live). SegmentBase указывает на один MP4 с byte-range-индексом. SegmentTemplate параметризует URL – `media="video-$Number$.m4s"` разворачивается в `video-1.m4s`, `video-2.m4s` и т. д., и плеер генерирует URL-ы на лету. Для live-потоков, публикующих сегмент каждые 2 секунды часами или днями, SegmentTemplate – единственный практичный выбор.

Два режима подстановки – number-based (`$Number$`) и time-based (`$Time$`). Number-режим использует последовательные целые от `startNumber`. Time-режим использует presentation timestamps и привязан к `<SegmentTimeline>`, который явно перечисляет `t=` (время начала) и `d=` (длительность) каждого сегмента, поддерживая переменные длительности. Time-режим обязателен для low-latency DASH, где тайминг сегментов должен быть точным.

SegmentTemplate плюс SegmentTimeline вместе позволяют MPD описывать часы live-контента в 5–10 КБ XML. Минус – плеер должен вычислить URL live edge, комбинируя `availabilityStartTime`, текущее настенное время и параметры шаблона. Маленькие баги здесь – расхождение часов между packager-ом и плеером, off-by-one на startNumber – дают трудно диагностируемые отказы live-воспроизведения.

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

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