Jump to: Manifest & content requirements | Packages, platforms, and players
Multi-period versus single-period manifest
Ad Manager supports ingesting both multi-period manifests and single-period manifests for DASH.
With single period manifests, publishers provide a DASH stream with a single period that contains all content and ad break opportunities, rather than multiple periods differentiating them. DAI supports single-period manifests by converting them to multi-period on every fetch.
You can select the manifest as single-period when you enable conditioning.
Enable conditioning for single-period MPEignoredDASH
To use VOD DAI, set up a content source so Google Ad Manager can ingest the video on demand (VOD) content. DAI will use MRSS feed elements to determine if the content should go through DASH single-period manifest conditioning.
- Set
ingestUrl
to the MPD content URL. - Set
preconditioned
to false.
Ifpreconditioned
is set to true, Single period DASH manifests will not be conditioned for mid-roll ad breaks. - The manifest will be split based on the
Event@presentationTime
attributes in the manifest, even if the cue points don’t align for the following reasons. - If there are no
EventStream
elements in the manifest, the manifest will be split according to the cue points. - Cue points need to align with a media segment boundary, otherwise conditioning will fail.
- Set cue points within 100 ms of a
splice_insert
event. This is determined by the cue point value andEvent@presentationTime
attribute.
Manifest and content requirements
For multi-period manifests
Multi-period MPEignoredDASH manifest
Expectations for a multi-period MPEignoredDASH manifest
Google DAI performs the following validations on raw MPD.
MPD element validations
Set the following MPD element validations:
type
is set tostatic
.profiles
is set to:urn:mpeg:dash:profile:isoff-on-demand:2011
.urn:mpeg:dash:profile:isoff-live:2011
.
- HTTPS must be used for the entirety of the DASH content referenced in the same MPD.
Period element validations
The following are required for Period elements:
- Each period must specify a
duration
attribute. - Each period must not specify a
start
attribute. - Audio and video adaption sets have to be consistent across periods.
For single-period manifests
Single-period MPEignoredDASH manifest (Alpha)
It will only be available to a small number of publishers.
Expectations for single-period MPEignoredDASH manifest
Google DAI performs the following validations on the raw MPD.
Content requirements
DASH content must follow all the rules specified in the DASH-IF Interoperability Points.
MPEignoredDASH
Google DAI performs the following validations and makes the following assumptions on the raw MPD.
- MPD element validations:
@profiles
is set tourn:mpeg:dash:profile:isoff-live:2011
.@type
is set tostatic
.- MPD has exactly one Period element.
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" type="static" profiles="urn:mpeg:dash:profile:isoff-live:2011" maxSegmentDuration="PT2S" minBufferTime="PT2S">
<Period …>
…
</Period>
…
</MPD>
- Period element validations:
- Period has at least one
@AdaptationSet
element. - There must be at least one nested
EventStream
element withEvent
elements encoded with splice points for the period to be split. Reference SCTE-35 for the splice point encoding requirements.
<Period id=”1” start="PT0S">
<AdaptationSet …>
…
</AdaptationSet>
<AdaptationSet …>
…
</AdaptationSet>
</Period>
- Period has at least one
- The following are required for
AdaptationSet
element validations.
EnsureAdaptationSet
has at least one@Representation
element.Thumbnail and subtitle adaptation sets are supported. Subtitle adaptation sets are required.<AdaptationSet mimeType="video/mp4" startWithSAP="1" contentType="text" par="16:9" minWidth="640" maxWidth="640" minHeight="360" maxHeight="360" maxFrameRate="60/2" segmentAlignment="true">
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="main"></Role>
<ContentComponent id="0" contentType="video" />
<Representation …>
…
</Representation>
<Representation …>
…
</Representation>
</AdaptationSet>
- Complete
Representation
element validations:- Ensure
@id
is non-empty. - There must not be
@SegmentBase
or@SegmentList
elements.
<Representation width="640" height="360" sar="1:1" frameRate="60/2" codecs="avc1.64001e" id="V300" bandwidth="300000">
…
</Representation/>
- Ensure
- Validate
SegmentTemplate
with$Time$
:- Ensure
SegmentTemplate
elements contain a nestedSegmentTimeline
element for explicit addressing of media segments. SegmentTimeline S
elements may contain theS@t
attribute, which is used for media URLs.- If not provided, the value is assumed to be
0
for the firstS
element and for subsequentS
elements, the value shall be assumed to be the sum of the previousS
element's earliest presentation time and contiguous duration (that is, previousS@t + @d * (@r + 1)
). SegmentTemplate@startNumber
is not used.
<SegmentTemplate timescale="90000" initialization="$RepresentationID$/init.mp4" media="$RepresentationID$/$Time$.m4s">
<SegmentTimeline>
<S t="0" d="270000" r="20" />
</SegmentTimeline>
</SegmentTimeline>
- If not provided, the value is assumed to be
- Ensure
-
Google DAI supports the time component part of the ISO-8601 duration and supports the optional integer day component:
P0Y0M[n]DT[n]H[n]M[n]S
. The days component is converted to a duration by considering 1 day = 24 hours and is added to the time component. Nanosecond is the lowest granularity that we recognize.
Valid format examples:
P0Y0M
P0Y0M2D
P2D
PT3H
PT0H3M
P0Y0M0DT0H0M1.000S
P0Y0M1DT2H4M10S
PT0.000000001S
Invalid format examples:
P
PT
2007-03-01
P5Y0M1DT2H4M1.000S
P0Y1.5M1DT2H4M1.000S
P0YiM1DT2H4M1.000S
P0Y0M.3DT0H0M1.000S
3h
PT100,000H
Subtitles
- Google DAI supports both TTML and WebVTT formatted subtitles.
- Google DAI supports all sidecar subtitle files provided through the MRSS feed.
- Sidecar subtitle files specified in the DASH manifest will not be converted and will not be present in the conditioned manifest. If sidecar subtitles are required, they must be specified via the MRSS feed.
Unsupported DASH manifest sidecar subtitles
<AdaptationSet
id="3"
group="3"
contentType="text"
lang="fr"
mimeType="application/ttml+xml"
startWithSAP="1">
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="main" />
<Representation
id="textstream_fra=0"
bandwidth="0">
<BaseURL>sub/tears-of-steel-fr.ttml</BaseURL>
</Representation>
</AdaptationSet>
- Fragmented subtitles specified in an
AdaptationSet
withcontentType
="text", and with aSegmentTimeline
are supported, but subtitle segments will also need to have their segment boundaries aligned with the splice point markers to pass validation.
Supported DASH manifest fragmented subtitles
<AdaptationSet
id="2"
group="3"
contentType="text"
lang="en"
mimeType="application/mp4"
codecs="stpp.ttml.im1t"
startWithSAP="1">
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="subtitle" />
<SegmentTemplate
timescale="1000"
initialization="tears-of-steel-en-$RepresentationID$.dash"
media="tears-of-steel-en-$RepresentationID$-$Time$.dash">
<SegmentTimeline>
<S t="0" d="4000" r="140" />
<S d="3000" />
</SegmentTimeline>
</SegmentTemplate>
<Representation
id="texttream_eng=1000"
bandwidth="1000">
</Representation>
</AdaptationSet>
SCTE-35
- Google DAI will only recognize splice points as SCTE-35 markers carried in DASH
MPD@Period@EventStream@Event
elements if they pass the following validations:- Base64 encoded SCTE-35 data must be contained in the
Event@Signal@Binary
element.
Onlysplice_insert
is supported. EventStream
elements containingEvents
with SCTE-35 markers must have@schemeIdUri
set tourn:scte:scte35:2014:xml+bin
.EventStream@timescale
must be set or it will be assumed to be set to1
(seconds timescale).Event@presentationTime
must be set on eachEvent
element.Event@Signal@namespace
must have namespacehttp://scte.org/schemas/35/2016
.- Events in the
EventStream
must be in sorted order byEvent@presentationTime
.
- Base64 encoded SCTE-35 data must be contained in the
Splice_insert
assumptions
Allsplice_insert
markers in theEventStream
will be treated as ad break placement opportunities, that is, single-period conditioning does not differentiate between cue-outs and cue-ins, and instead treats any signal as an ad break placement opportunity.- Google DAI for DASH VOD does not support splitting segments and therefore only allows a 100 ms tolerance for how far a splice point's presentation time can be from the closest segment boundary.
Supported platforms, packagers, and players for VOD
Platforms |
||
---|---|---|
Devices/browsers |
Version |
DRM |
Chrome Browser |
66+ |
Widevine |
Firefox Browser |
60+ |
Widevine |
Microsoft Edge |
18 |
PlayReady |
Android |
4.4+ |
Widevine |
Chromecast |
Gen2, Ultra (CAF API) |
Widevine |
Roku |
3, 4 (firmware 8.1) |
PlayReady |
Packagers |
||
---|---|---|
2.1.0 |
Multi-period Support |
|
1.47.3 |
Multi-period Support |
|
1.11.17 | Single-period support |
Players |
||
---|---|---|
Shaka |
Recommended for testing |
|
Bitmovin |
||
Exo-Player |
||
Dash.js |