[[!MPEGDASH]] defines the structure of DASH presentations. Combined with an understanding of the [[=addressing modes=]], this enables DASH clients to determine a set of HTTP requests that must be made to acquire the resources needed for playback of a DASH presentation. This section defines rules for performing the HTTP requests and signaling the relevant parameters in an interoperable manner.
Issue: Dash-Industry-Forum#333
A service MAY use the MPD/Location
element to redirect clients to a different URL to perform [=MPD refreshes=]. HTTP redirection MAY be used when responding to client requests.
A DASH client performing an [=MPD refresh=] SHALL determine the MPD URL according to the following algorithm:
The MPD URL as defined by the above algorithm SHALL be used as an implicit base URL for [=media segment=] requests.
Any present BaseURL
element SHALL NOT affect MPD location resolution.
A service MAY publish [=media segments=] on URLs unrelated to the [=MPD=] URL. A service MAY use multiple BaseURL
elements on any level of the MPD to offer content on multiple URLs (e.g. via multiple CDNs). HTTP redirection MAY be used when responding to client requests.
For [=media segment=] requests, the DASH client SHALL determine the URL according to the following algorithm:
Note: The client may use any logic to determine which BaseURL
to use if multiple are provided.
The same logic SHALL be used for [=initialization segments=] and [=index segments=].
Issue: What do relative BaseURLs do? Do they just incrementally build up the URL? Or are they ignored? This algorithm leaves it unclear, only referencing absolute BaseURLs. We should make it explicit.
It can often be the case that a [[#svc-live|live service]] signals a short [=MPD=] validity period to allow for the possibility of terminating the last [=period=] with minimal end-to-end latency. At the same time, generating future [=segment references=] might not require any additional information to be obtained by c7lients. That is, a situation might occur where constant [=MPD refreshes=] are required but the [=MPD=] content rarely changes.
Clients using HTTP to perform [=MPD refreshes=] SHOULD use conditional GET requests as specified in [[!RFC7232]] to avoid unnecessary data transfers when the contents of the [=MPD=] do not change between refreshes.
This section clarifies expansion rules for URL template variables such as $Time$
and $Number
, defined by [[!MPEGDASH]].
The set of string formatting suffixes used SHALL be restricted to %0[width]d
.
Note: The string format suffixes are not intended for general-purpose string formatting. Restricting it to only this single suffix enables the functionality to be implemented without a string formatting library.