DRM system supplies no inline initialization data
Without a <cenc:pssh> in the manifest, playback depends on init data some players will not look for.
What it means
A ContentProtection element names a real DRM system but carries no inline pssh box. The data may still be present inside the init segment.
Why it matters
Some players read initialization data only from the manifest and never parse the init segment for it. On those, licence acquisition never begins and playback fails on protected content while working fine on others — a device-specific bug that is hard to reproduce.
How to fix it
- Add a <cenc:pssh> child to each ContentProtection element with the base64 pssh box for that system.
- Declare the cenc namespace on <MPD>: xmlns:cenc="urn:mpeg:cenc:2013".
- Include @cenc:default_KID so players know which key to request.
Check your own stream
The free DASH validator runs this check on every analysis and links each finding straight back here.
Open the DASH validator →Frequently asked questions
- What does "DRM system supplies no inline initialization data" mean?
- A ContentProtection element names a real DRM system but carries no inline pssh box. The data may still be present inside the init segment.
- Why does it matter?
- Some players read initialization data only from the manifest and never parse the init segment for it. On those, licence acquisition never begins and playback fails on protected content while working fine on others — a device-specific bug that is hard to reproduce.
- How do I fix it?
- 1. Add a <cenc:pssh> child to each ContentProtection element with the base64 pssh box for that system. 2. Declare the cenc namespace on <MPD>: xmlns:cenc="urn:mpeg:cenc:2013". 3. Include @cenc:default_KID so players know which key to request.
- How can I detect this automatically?
- Paste your MPEG-DASH streaming URL into StreamTest's free DASH validator. It runs this check on every analysis, flags the finding, and links straight back to this page — no sign-up required.
Related DASH checks
- DASH manifest has no UTCTiming elementA live MPD without UTCTiming forces players to trust the device clock, so any skew on the viewer’s machine becomes stalls or missing segments.
- DASH availabilityStartTime is in the futureThe manifest claims the presentation starts later than the current time, so no segment is available yet and playback cannot begin.
- The DASH manifest is not well-formed XMLThe document could not be parsed as XML, so nothing else could be checked.
- The document has no MPD root elementThe XML parsed, but its root is not <MPD>, so it is not a DASH manifest.
- MPD declares no profileWithout @profiles a player cannot tell which DASH feature set the manifest expects.
- MPD declares no minBufferTimePlayers use this required attribute to size the initial buffer before starting playback.