This section assumes a working knowledge of the DASH format. For a refresher and some context. we recommend consulting our introductory guide in the DASH Format
Quick MPD compatibility check:
Check the following, for VOD and Live inputs
- MPD follows ISO/IEC 23009-1 - Part 8.4 - Live or ISO/IEC 23009-1 - Part 8.5 - Main . A quick way to check it is to look at the URN in the MPD which should respectively be
- SegmentTemplate with or without SegmentTimeline, using time-base (
$Time$) or number-based (
For VOD input specifically:
- MPD contains a single period
For Live inputs specifically:
- MPD contains a single period or multiple periods
- The availability start time is set to 0 (Jan 1st 1970), or the presentation time offset is equal to the first period start.
You can use your DASH input source on broadpeak.io for linear content if they respect the DASH Guidelines specified in ISO/IEC 23009-1 - Part 8.4 - Live or ISO/IEC 23009-1 - Part 8.5 - Main, taking into account some of the limitations described in this chapter.
The ISO Live profile is identified by the URN
urn:mpeg:dash:profile:isoff-live:2011 and the ISO Main profile is identified by the URN
Please contact us if your use-case requires the support of other DASH implementations.
DASH media containers supported by broadpeak.io are:
- ISOBMFF (Fragmented MP4, aka fMP4)
- Transport Stream (aka TS, but limitations apply for Ad insertion)
- smpte-tt (subtitles)
Depending on the media content, the origin server used for your media application, and the nature of the stream, the MPD manifest can contain one or more consecutive non-overlapping periods.
- For VOD inputs, only single-period MPDs are supported.
- For Live inputs, broadpeak.io supports MPD that are either structured under a single time period or with multiple periods.
For examples of DASH manifests using multiple periods, check our Guide on the DASH Format
There are many ways in DASH to express how a DASH client can retrieve segments, called "addressing modes". broadpeak.io supports the following:
- Explicit addressing: Segment Template with Segment Timeline, using $Time$ or $Number$ variables in segment filename patterns.
- Simple addressing, with $Time$ or $Number$ variables in segment filename patterns
Whenever possible, it is recommended to use $Time$, in particular for Live scenarios.
broadpeak.io does not support use cases in which SegmentTemplates in the MPD use different addressing modes. Contact us at [email protected] if you need it for your use case(s).
In addition to the base requirements, the following constraints also apply to Live streams:
For broadpeak.io to operate properly, two options are accepted to describe the start of the stream in the manifest:
- The availability start time (
MPD@availabilityStartTime) is set to 0 (ie. Jan 1st 1970). In addition, the segment template's presentation offset (
Representation@presentationOffset) is either absent or is set to 0.
<MPD type="dynamic" availabilityStartTime="1970-01-01T00:00:00Z" profiles="urn:mpeg:dash:profile:isoff-live:2011"> <Period id="1" start="PT0S"> ..... <SegmentTemplate timescale="48000" initialization="output-$RepresentationID$.dash" media="output-$RepresentationID$-$Time$.dash"> <SegmentTimeline>
- The availability start time (
MPD@availabilityStartTime) is more than 0, and the presentation offset of the segment template (
Representation@presentationOffset) matches the period's start (
<MPD type="dynamic" availabilityStartTime="2022-06-17T12:53:06.856000+00:00" profiles="urn:mpeg:dash:profile:isoff-live:2011"> <Period start="PT3444374.133S" id="1" duration="PT30.000S"> ..... <SegmentTemplate timescale="30000" media="output-$RepresentationID$-$Time$.dash" initialization="output-$RepresentationID$.dash" presentationTimeOffset="103331224000"> <SegmentTimeline>
Period@start = SegmentTemplate@presentationOffset / SegmentTemplate@timescale
Updated about 1 month ago