Player | Version | Web browser | Video codec | Decryption | WebVTT subtitle | SMPTE-TT subtitle | Remarks | Date | |||
---|---|---|---|---|---|---|---|---|---|---|---|
H.264 | HEVC | PlayReady | Widevine | Text profile | Text profile | Image profile | |||||
dash.js | 2.5.0 | Google Chrome v.60.0.3112.113 | X | X | X | N/A | 2017/08/28 | ||||
Mozilla Firefox v.55.0.3 | X | X | X | N/A | 2017/08/28 | ||||||
Microsoft Edge v.40.15063.0.0 | X | X | X | X | X | N/A | 2017/08/28 | ||||
Bitmovin | 7.3.5 | Google Chrome v.60.0.3112.113 | X | X | X | N/A | 2017/08/28 | ||||
Mozilla Firefox v.55.0.3 | X | X | X | N/A | 2017/08/28 | ||||||
Microsoft Edge v.40.15063.0.0 | X | X | X | X | N/A | 2017/08/28 | |||||
JWPlayer | 7.12.6 | Google Chrome v.60.0.3112.113 | X | X | N/A | 2017/08/28 | |||||
Mozilla Firefox v.55.0.3 | X | X | N/A | 2017/08/28 | |||||||
Microsoft Edge v.40.15063.0.0 | Playback doesn't start | 2017/08/28 | |||||||||
THEOPlayer | 7.12.6 | Google Chrome v.60.0.3112.113 | X | X | X | X | N/A | 2017/08/28 | |||
Mozilla Firefox v.55.0.3 | X | X | X | X | N/A | 2017/08/28 | |||||
Microsoft Edge v.40.15063.0.0 | X | X | X | X | N/A | 2017/08/28 | |||||
GPAC (mp4client) | 0.7.0 | N/A | X | X | N/A | 2017/08/28 | |||||
BuyDRM’s KeyOS player | Rev 9535 | N/A | X | Not tested | X | Not tested | Tested on Sony Xperia tablet with Android 4.4.4 H.264 video profile Main@4 |
2016/04/01 | |||
VisualOn MediaPlayer+ | 3.18.0 | N/A | X | X | Not tested | Not tested | Not tested | X | X | N/A | 2016/09/10 |
Nextstreaming NexPlayer | 6.56.2.639 | N/A | X | X | Not tested | X | X | X | X | Tested on Samsung Galaxy Tab A (2016) | 2017/06/01 |
Video codecs | Audio codecs | Subtitles | Ad insertion |
---|---|---|---|
H.264 HEVC |
Pass-through MPEG-1 Layer II AAC-LC (ADTS) HE-AAC v1/v2 Dolby Digital/Dolby Digital Plus |
DVB-Teletext to SMPTE-TT DVB-Subtitle to SMPTE-TT DVB-Teletext to WebVTT Closed caption EIA-608 to SMPTE-TT Closed Caption 608/708 passthrough Closed Caption 608/708 to WebVTT |
Not supported |
Local publication information are available from Origin Server configuration documentation.
Media segments can be published in the same location or separately from manifest files and initialization segments.
<?xml version="1.0" encoding="UTF-8" ?> <MPD type="dynamic" availabilityStartTime="2017-05-22T08:21:05Z" > <BaseURL>http://customerhostname-i.akamaihd.net/dash/live/streamID/eventname</BaseURL> <BaseURL>http://customerhostname-i.akamaihd.net/dash/live/streamID-b/eventname</BaseURL> <Period id="0" start="PT0S"> <!--Video--> <AdaptationSet id="0" maxWidth="1280" maxHeight="720" maxFrameRate="50/1" par="16:9" segmentAlignment="true"> [...] </AdaptationSet> <!--Audio--> <AdaptationSet id="1" lang="fre" segmentAlignment="true"> [...] </AdaptationSet> </Period> </MPD>
If multiple BaseURL elements are available, the client may check for alternative instances of the same content that are hosted on a different server.
SMPTE-TT subtitles are fully compliant with EBU-TT-D 3380 (Subtitling distribution format) and EBU-TT-D 3381 (Carriage of EBU-TT-D in ISOBMFF).
DRM Provider | Protection Sheme | Protection System | Encryption Algorithm | Key Rotation |
---|---|---|---|---|
Manual PlayReady | CENC | PlayReady | AES-CTR 128 | |
Manual Multi-Encryption | CENC | PlayReady | AES-CTR 128 | |
Widevine | ||||
Marlin | ||||
Verimatrix VCAS for DASH | ||||
Verimatrix | CENC | Verimatrix VCAS for DASH | AES-CTR 128 | Yes |
BuyDrm | CENC | PlayReady | AES-CTR 128 | Yes |
Inside Secure | CENC | PlayReady | AES-CTR 128 | Yes |
Widevine standard server | CENC | Widevine | AES-CTR 128 | Yes |
Open KMS (Harmonic) 2.4 | CENC | all (custom configuration) | AES-CTR 128 | Yes |
Irdeto | CENC | all (PlayReady, Widevine, Irdeto Cloaked CA, Marlin) | AES-CTR 128 | Yes |
See Encryption documentation to get detailed information.
<Period id="0" start="PT0S">
<AdaptationSet id="0" maxWidth="640" maxHeight="720" maxFrameRate="50/1" par="16:9" segmentAlignment="true">
<SegmentTemplate timescale="10000000" duration="20000000" startNumber="1" initialization="0_$RepresentationID$-init.mp4" media="0_$RepresentationID$-$Number$.mp4" />
<Representation id="video_00" mimeType="video/mp4" codecs="avc1.4d401f" bandwidth="1400000" width="640" height="360" frameRate="50/1" sar="1:1" startWithSAP="1" />
</Period>
<Period id="0" start="PT0S">
<AdaptationSet id="0" maxWidth="640" maxHeight="720" maxFrameRate="50/1" par="16:9" segmentAlignment="true">
<SegmentTemplate timescale="10000000" initialization="0_$RepresentationID$-init.mp4" media="0_$RepresentationID$-$Time$.mp4">
<SegmentTimeline>
<S t="600000" d="20000000" r="11" />
</SegmentTimeline>
</SegmentTemplate>
<Representation id="video_00" mimeType="video/mp4" codecs="avc1.4d401f" bandwidth="1400000" width="640" height="360" frameRate="50/1" sar="1:1" startWithSAP="1" />
</AdaptationSet>
</Period>
<?xml version="1.0" encoding="UTF-8" ?>
<MPD type="dynamic" availabilityStartTime="2017-05-19T11:44:43Z">
<Period id="0" start="PT0S">
<AdaptationSet id="0" maxWidth="640" maxHeight="720" maxFrameRate="50/1" par="16:9" segmentAlignment="true">
<SegmentTemplate timescale="10000000" duration="20000000" startNumber="1" initialization="0_$RepresentationID$-init.mp4" media="0_$RepresentationID$-$Number$.mp4" />
<Representation id="video_00" mimeType="video/mp4" codecs="avc1.4d401f" bandwidth="1400000" width="640" height="360" frameRate="50/1" sar="1:1" startWithSAP="1" />
</Period>
</MPD>
<Period id="0" start="PT0S"> <AdaptationSet id="0" maxWidth="640" maxHeight="720" maxFrameRate="50/1" par="16:9" segmentAlignment="true"> <SegmentTemplate timescale="10000000" duration="20000000" startNumber="1" initialization="http://init_segments.server.com/init_segments/0/$RepresentationID$/init.mp4" media="http://media_segments.server.com/media_segments/0/$RepresentationID$/$Number$.mp4" /> <Representation id="video_00" mimeType="video/mp4" codecs="avc1.4d401f" bandwidth="1400000" width="640" height="360" frameRate="50/1" sar="1:1" startWithSAP="1" /> </Period>
<AdaptationSet id="0" maxWidth="1280" maxHeight="720" maxFrameRate="25/1" par="16:9" segmentAlignment="true">
<SegmentTemplate timescale="10000000" duration="20000000" startNumber="1" initialization="0/$RepresentationID$/init.m4i" media="0/$RepresentationID$/chunk_$Number$.m4v" />
<Representation id="video_00" mimeType="video/mp4" codecs="avc1.64001f" bandwidth="2000000" width="1280" height="720" />
</AdaptationSet>
When "Share Initialization Segments between Representations" is enabled, "${representationId}" is t allowed in "Initialization segment path".
<AdaptationSet id="0" maxWidth="1280" maxHeight="720" maxFrameRate="25/1" par="16:9" segmentAlignment="true">
<SegmentTemplate timescale="10000000" duration="20000000" startNumber="1" initialization="0/$RepresentationID$/init.m4i" media="0/$RepresentationID$/chunk_$Number$.m4v" />
<Representation id="video_00" mimeType="video/mp4" codecs="avc3.64001f" bandwidth="2000000" width="1280" height="720" />
</AdaptationSet>
<AdaptationSet id="0" maxWidth="1280" maxHeight="720" maxFrameRate="25/1" par="16:9" segmentAlignment="true"> <Representation id="video_00" mimeType="video/mp4" codecs="avc1.64001f" bandwidth="2000000" width="1280" height="720" /> <Representation id="video_01" mimeType="video/mp4" codecs="avc1.64001f" bandwidth="1500000" width="960" height="540" /> <Representation id="video_02" mimeType="video/mp4" codecs="avc1.64001e" bandwidth="1000000" width="640" height="360" /> </AdaptationSet>
<AdaptationSet id="0" maxWidth="1280" maxHeight="720" maxFrameRate="25/1" par="16:9" segmentAlignment="true"> <Representation id="video_00" myAttribute="1" mimeType="video/mp4" codecs="avc1.64001f" bandwidth="2000000" width="1280" height="720" /> <Representation id="video_01" myAttribute="1" mimeType="video/mp4" codecs="avc1.64001f" bandwidth="1500000" width="960" height="540" /> <Representation id="video_02" myAttribute="1" mimeType="video/mp4" codecs="avc1.64001e" bandwidth="1000000" width="640" height="360" /> </AdaptationSet>