Applies to: Protocol and format interpretation for developers inspecting authorized media delivery.
The useful distinctions
- Alternative tracks can be grouped in separate adaptation sets.
- A Role descriptor communicates a track role.
- A language value and a representation identifier describe different properties.
Create a metadata row without inventing a preference
The invented audio entry provides a language, a role descriptor, a representation identifier, and a codec declaration. These values belong in different inventory columns. The word main describes the declared role; ur identifies the language; audio-ur identifies one representation in this document. None should silently replace another as a user-facing name or a join key.
Separate manifest semantics from player policy
A client can use these declarations when choosing tracks, but a specific player's filtering and preference rules are implementation behavior. An article about the format should not claim that every player selects the same track from the same metadata. If examining dash.js, its own current documentation can explain its selection rules, with the version and configuration context kept explicit. This example stops at the inventory stage. It does not execute a player, query device capability, or verify that the referenced resource contains the announced language. A real authoring check would compare the declared metadata with the actual track and confirm that every intended alternative has a coherent identity and reference. An import ledger can retain the role scheme URI as well as the role value. A familiar word appearing under an unrelated scheme should not be silently treated as the same typed declaration.
Worked example · synthetic
The inventory is language ur, role main, representation audio-ur, and announced AAC codec. These declarations do not prove the language of actual audio or predict a particular player's default.
Synthetic text example; no network operation has been performed.
<AdaptationSet xmlns="urn:mpeg:dash:schema:mpd:2011"
contentType="audio" mimeType="audio/mp4" lang="ur">
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="main"/>
<Representation id="audio-ur" bandwidth="128000" codecs="mp4a.40.2">
<BaseURL>ur-audio.mp4</BaseURL>
</Representation>
</AdaptationSet>Check the interpretation
- Keep language, role, and ID in separate fields.
- Verify the role scheme URI.
- Scope player-selection claims to documented implementations.