DASH
Once you complete your Media Services Live: DASH Ingest setup, you need to configure your encoder to capture and push your stream to the entrypoints.
For a list of third-party live encoders and the latest software versions qualified with Media Services Live DASH ingest, refer to Qualified Encoders (MSL 3.2 & MSL 4.x).
Ensure that you use qualified live encoders as DASH streams pushed from unqualified live encoders will be rejected.
Publish DASH streams
The encoder should be able to input primary and backup publishing and playback hostnames and primary and backup paths for a given stream. The same content (.mpd
, initialization segments, and media segments) should be simultaneously published to primary and backup paths to avoid interruptions in the distributed system.
Media Services Live: DASH Ingest does not work with the live encoder HTTP DELETE requests. The servers return a 200 HTTP status code, but the content is not actually deleted as requested.
The encoder publishes primary and backup streams according to this URL syntax. The segments and .mpd
are duplicated across primary and backup and should be identical.
Stream | Hostname | Path | Example |
---|---|---|---|
Primary | p-ep{stream_id}.i.akamaientrypoint.net | dash/{stream_id}/{event_name} | http://p-ep50002.i.akamaientrypoint.net/dash/50002/test79/dash.mpd |
Backup | b-ep{stream_id}.i.akamaientrypoint.net | dash/{stream_id}-b/{event_name} | http://b-ep50002.i.akamaientrypoint.net/dash/50002-b/test79/dash.mpd |
If you need to restart your encoder, ensure that the initialization segment name is re-uploaded with a unique value in its name, for example:
timestamp
.
The MSL system considers a stream as a combination of stream_id
and event_name
. All ingested content, such as variant playlists, bitrate playlists, and segments, should have a common event_name
in the path.
For example:
http://p-ep50002.i.akamaientrypoint.net/50002/test79/master.mpd
http://p-ep50002.i.akamaientrypoint.net/50002/test79/dash_video12mbps.mpd
http://p-ep50002.i.akamaientrypoint.net/50002/test79/dash-archive.mpd
To improve security and reduce potential vulnerabilities, Akamai supports TLS 1.2 and above in accordance with Internet Engineering Task Force recommendations.
Play DASH streams
To play DASH streams, construct the URLs according to this syntax.
https://amd-property-hostname/dash/live/stream-id/event_name/manifest.mpd
The amd-property-hostname
depends on the CDN that you use. For Akamai CDN, the hostname is origin.akamaized.net
, the Adaptive Media Delivery hostname, so the Playback URL is:
http://origin.akamaized.net/dash/live/50002/test79/manifest.mpd
Stream | Path | Example |
---|---|---|
Primary | dash/live/{streamID}/{eventname}/{object} | http://origin.akamaized.net/dash/live/50002/test79/dash.mpd http://origin.akamaized.net/dash/live/50002/test79/dash/5000kbps-10.m4s |
Backup | dash/live/{streamID}-b/{eventname}/{object} | http://origin.akamaized.net/dash/live/50002-b/test79/dash.mpd http://origin.akamaized.net/dash/live/50002-b/test79/dash/5000kbps-10.m4s |
Example manifest
The playback information is embedded in the manifest .mpd
file as two <BaseURL>
s, as shown in this example:
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:mpeg:dash:schema:mpd:2011" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd" type="dynamic" minimumUpdatePeriod="PT30S" availabilityStartTime="2014-02-05T22:29:56" minBufferTime="PT12S" timeShiftBufferDepth="PT1M0S" profiles="urn:mpeg:dash:profile:isoff-live:2011">
<BaseURL>http://origin.akamaized.net/dash/live/50002/test79/
</BaseURL>
<BaseURL>http://origin.akamaized.net/dash/live/50002-b/test79/
</BaseURL>
<Period start="PT0S" duration="PT1M0.6S" id="1">
<AdaptationSe01t mimeType="video/mp4" codecs="avc1.42CE,mp4a.40.5" frameRate="15000/1001" segmentAlignment="true" subsegmentAlignment="true" startWithSAP="1" subsegmentstartWithSAP="1" bitstreamSwitching="true">
<ContentComponent contentType="video" id="1"/>
<SegmentTemplate timescale="90000" duration="540000"
startNumber="74247"/>
<Representation id="1" width="640" height="360"
bandwidth="600000">
<SubRepresentation contentComponent="1" bandwidth="600000"
codecs="avc1.42C01E"/>
<SegmentTemplate duration="540000" startNumber="74247"
media="dash_video600-$Number$.mp4
initialization="dash_video600-.init"/>
</Representation>
<Representation id="2" width="320" height="180"
bandwidth="200000">
<SubRepresentation contentComponent="1" bandwidth="200000"
codecs="avc1.42C01E"/>
<SegmentTemplate duration="540000" startNumber="74248"
media="dash_video200-$Number$.mp4"
initialization="dash_video200-.init"/>
</Representation>
</AdaptationSet>
</Period>
</MPD>
If the player detects a 404 error on a segment request, it switches to an alternate stream.
To check the quality of your DASH streaming content, you can use this player: http://players.akamai.com/players/dashjs.
Low latency for DASH streams
When using DASH as the protocol for a live stream in MSL, you can enable low latency for an aggregating response that helps to reduce latency and decrease overall transfer time of live streams.
To use low latency for DASH, you need to distribute your MSL streams using the Adaptive Media Delivery (AMD) product. AMD requires that you create a property configuration using Property Manager, and apply specific behaviors that determine how to deliver your streams. Refer to Go live in AMD with MSL origin for detailed instructions.
Ensure that you include the /dash/live-ull/*
element in the request path to enable low latency for the stream playback. Optimizations are automatically applied to a playback URL if the request includes the appropriate media-format path element.
Updated about 3 years ago