Single-period MPEi-gno/re-dDASH manifest (Alpha)
This feature is in Alpha
It will only be available to a small number of publishers.
Expectations for single-period MPEi-gno/re-dDASH 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.
MPEi-gno/re-dDASH
Google DAI performs the following validations and makes the following assumptions on the raw MPD.
- MPD element validations:
@profiles
is set to urn:mpeg:dash:profile:isoff-live:2011
.
@type
is set to static
.
- 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 with Event
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>
- The following are required for
AdaptationSet
element validations.
Ensure AdaptationSet
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/>
- Validate
SegmentTemplate
with $Time$
:
- Ensure
SegmentTemplate
elements contain a nested SegmentTimeline
element for explicit addressing of media segments.
SegmentTimeline S
elements may contain the S@t
attribute, which is used for media URLs.
- If not provided, the value is assumed to be
0
for the first S
element and for subsequent S
elements, the value shall be assumed to be the sum of the previous S
element's earliest presentation time and contiguous duration (that is, previous S@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>
-
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
with contentType
="text", and with a SegmentTimeline
are supported, but subtitle segments will also need to have their segment boundaries aligned with the splice point markers to pass validation.
Note: Roku devices don't support fragmented segments in an AdaptationSet
.
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.
Only splice_insert
is supported.
EventStream
elements containing Events
with SCTE-35 markers must have @schemeIdUri
set to urn:scte:scte35:2014:xml+bin
.
EventStream@timescale
must be set or it will be assumed to be set to 1
(seconds timescale).
Event@presentationTime
must be set on each Event
element.
Event@Signal@namespace
must have namespace http://scte.org/schemas/35/2016
.
- Events in the
EventStream
must be in sorted order by Event@presentationTime
.
Splice_insert
assumptions
All splice_insert
markers in the EventStream
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.