DASH manifests can list segments in three ways. SegmentList enumerates every URL explicitly (compact for short content, unwieldy for live). SegmentBase points at a single MP4 with byte-range index. SegmentTemplate parameterises URLs — media="video-$Number$.m4s" resolves to video-1.m4s, video-2.m4s and so on, and the player generates URLs on the fly. For live streams that publish a segment every 2 seconds for hours or days, SegmentTemplate is the only practical choice.

The two substitution modes are number-based ($Number$) and time-based ($Time$). Number mode uses sequential integers starting at startNumber. Time mode uses presentation timestamps, mapping to entries that explicitly enumerate t= (start time) and d= (duration) per segment, supporting variable segment durations. Time mode is required for low-latency DASH where segment timing must be exact.

SegmentTemplate plus SegmentTimeline together let an MPD describe hours of live content in 5–10 KB of XML. The downside is that the player must compute the live edge URL by combining availabilityStartTime, current wall-clock time, and template parameters. Small bugs here — clock drift between packager and player, off-by-one on startNumber — produce hard-to-diagnose live playback failures.