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.

StreamHostnamePathExample
Primaryp-ep{stream_id}.i.akamaientrypoint.net dash/{stream_id}/{event_name} http://p-ep50002.i.akamaientrypoint.net/dash/50002/test79/dash.mpd
Backupb-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_idand event_name. All ingested content, such as variant playlists, bitrate playlists, and segments, should have a common event_namein 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
StreamPathExample
Primarydash/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
Backupdash/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.