DASH .mpd Manifests
Veeplay supports .mpd
live and video on demand (VOD) manifests that follow the guidelines for the DASH dynamic profile. Veeplay accepts multi-period and single-period DASH-compliant manifest inputs, and delivers multi-period DASH-compliant manifest outputs.
DASH manifests must satisfy the following requirements:
Manifests must be accessible on the public internet.
Manifests must be live or video on demand (VOD).
Manifests must mark events as ad avails using either splice insert markers or time signal markers. You can provide the ad markers in clear XML or in base64-encoded binary. For splice insert, the out-of-network indicator must be enabled. For time signal markers, the segmentation type ID, located inside the segmentation UPID, must be a cue-out value recognized by Veeplay. The ad avail starts at the event start and lasts for the event duration, if one is specified, or until the next event starts.
The following example shows an event designated as an ad avail using splice insert markers. The duration for this ad avail is the event's duration.
Ad avails must have the same
AdaptationSet
andRepresentation
settings as content streams. Veeplay uses these settings to transcode the ads to match the content stream, for smooth switching between the two.
Input manifests must have the following:
- At least one
Period
element with astart
attribute. - SCTE-35 event streams with splice info settings for either
splice insert
ortime signal
. The settings can be provided in clear XML or in base64-encoded binary. Segment templates
withsegment timelines
.
For published manifests, Veeplay requires that updates by the origin server leave the following unchanged:
- Period start times, specified in the
start
attribute. - Values of
presentationTimeOffset
in the segment templates of the period representations.
As a best practice, give the ad avails the same AdaptationSet
and Representation
settings as the content stream periods. Veeplay uses these settings to transcode the ads to match the content stream, for smooth switching between the two.
#
DASH Ad Avail DurationDuring playback, when Veeplay encounters an ad avail, it replaces some or all of the avail with ads. Veeplay starts ad replacement at the beginning of the ad avail and includes ads as follows:
- If the ad avail specifies a duration, Veeplay includes as many ads as it can fit inside the duration boundary, without overwriting content that follows.
- If no duration is provided, Veeplay includes ads until it reaches the end of the ad avail. For multi-period manifests, this is the end of the period. For single-period manifests, this is the end of the event. Veeplay doesn't play ads past the end of the ad avail and, when it encounters the end, truncates the current ad instead of overwriting the content that follows.
How Veeplay looks for the ad avail duration
Veeplay searches for a duration setting in the following order:
Event
duration
For splice insert, the
scte35:BreakDuration
duration
For time signal, the
scte35:SegmentationDescriptor
segmentationDuration
If Veeplay doesn't find any of these settings, it manages ad inclusion without a duration.
The following example shows an Event
that has a duration
.
The following example shows ad avail with no duration specified. The Event
has no duration
and the scte35:SpliceInsert
element doesn't contain a scte35:BreakDuration
child element.
#
DASH Ad MarkersVeeplay identifies ad avails in a DASH manifest by splice insert and time signal cue-out markers, as follows:
- In a multi-period DASH manifest, a
Period
is considered an ad avail when the firstEvent
in its event stream contains splice insert or time signal cue-out markers. In multi-period DASH, Veeplay ignores all but the first event in a period. - In a single-period DASH manifest, an
Event
is considered an ad avail when it contains splice insert or time signal cue-out markers.
By default, Veeplay manages DASH manifests as multi-period manifests.
You can provide ad markers in clear XML or in base64-encoded binary:
Clear XML
The event stream schemeIdUri
must be set to urn:scte:scte35:2013:xml
, and the event must have scte35:SpliceInfoSection
markers containing one of the following:
scte35:SpliceInsert
withoutOfNetworkIndicator
set totrue
The following example shows this option, with the required markers in bold.
scte35:TimeSignal
accompanied byscte35:SegmentationDescriptor
scte35:SegmentationUpid
withsegmentationTypeId
set to one of the following cue-out numbers:- 0x22 (start break)
- 0x30 (provider advertisement start)
- 0x32 (distributor advertisement start)
- 0x34 (provider placement opportunity start)
- 0x36 (distributor placement opportunity start)
The following example shows this option, with the required markers in bold. The
segmentationTypeId
in this example is set to 52, equivalent to 0x34.
Base64-encoded binary
The event stream schemeIdUri
must be set to urn:scte:scte35:2014:xml+bin
, and the event must have scte35:Signal
scte35:Binary
that contains a base64-encoded binary. The decoded binary must provide a splice_info_section
with the same set of information as the clear XML would provide in a scte35:SpliceInfoSection
element. The command type must be either splice_insert()
or time_signal()
, and the additional settings must comply with those described previously for clear XML delivery.
The following example shows this option, with the required markers in bold.
The following is the decoded binary for the first event listed in the preceding example. The setting for splice_command_type
is 5, which indicates splice_insert
.
For multi-period DASH manifests, Veeplay considers only the first Event
in an event stream to determine ad replacement markers, and it ignores any additional Event
markers in the stream. For single-period DASH manifests, Veeplay considers each Event
.