Термин

SegmentTemplate

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

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

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

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

SegmentTemplate в сочетании с SegmentTimeline позволяет MPD описывать live-контент объёмом 5–10 КБ XML. Недостаток – плееру приходится вычислять URL live edge, комбинируя `availabilityStartTime`, текущее настенное время и параметры шаблона. Даже мелкие ошибки – например, расхождение времени между packager’ом и плеером или ошибка на единицу в startNumber – приводят к трудно диагностируемым сбоям при воспроизведении в прямом эфире.

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

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