Notification

Only available in Google Ad Manager 360.

Dynamic Adaptive Streaming over HTTP (DASH)

Video on demand encoding (DASH)

 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 MPEG-DASH

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.
    If preconditioned 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 and Event@presentationTime attribute.

Manifest and content requirements

For multi-period manifests

Multi-period MPEG-DASH manifest

Expectations for a multi-period MPEG-DASH manifest

Google DAI performs the following validations on raw MPD.

MPD element validations

Set the following MPD element validations:

  • type is set to static.
  • 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.

For single-period manifests

Single-period MPEG-DASH manifest (Alpha)

This feature is in Alpha
It will only be available to a small number of publishers.

Expectations for single-period MPEG-DASH 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.

MPEG-DASH

Google DAI performs the following validations and makes the following assumptions on the raw MPD.

  1. 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://www.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>

  1. 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>

  1. 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>

  2. 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/>

  3. 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>

  4. 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

  1. Google DAI supports both TTML and WebVTT formatted subtitles.
  2. Google DAI supports all sidecar subtitle files provided through the MRSS feed.
  3. 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>

  1. 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.

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

  1. 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://www.scte.org/schemas/35/2016.
    • Events in the EventStream must be in sorted order by Event@presentationTime.
  2. 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.
  3. 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

Shaka

2.1.0

Multi-period Support

Bitmovin

1.47.3

Multi-period Support

Unified Streaming

1.11.17 Single-period support
 

Players

Shaka

2.4.2

Recommended for testing

Bitmovin

v7

 

Exo-Player

2.8.2

 

Dash.js

2.0

 
For any issues related to DAI troubleshooting or outages, contact publisher support.

Was this helpful?

How can we improve it?
true
Get started with Dynamic Ad Insertion

Our guide to delivering a seamless ad experience across live, linear, and on-demand video content.
See the guide

Search
Clear search
Close search
Main menu
18278513083187842315
true
Search Help Center
true
true
true
true
true
148
false
false