I'm following this demo which uses mediaSource API and MPEG DASH standard to play a .webm video. This is the MPD file used:
<?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"
type="static"
mediaPresentationDuration="PT888.05S"
minBufferTime="PT1S"
profiles="urn:webm:dash:profile:webm-on-demand:2012">
<Period id="0" start="PT0S" duration="PT888.05S" >
<AdaptationSet id="0" mimeType="video/webm" codecs="vp8" lang="eng" width="720" height="306" subsegmentAlignment="true" subsegmentStartsWithSAP="1" bitstreamSwitching="true">
<Representation id="1" bandwidth="534144">
<BaseURL>mevq_logo_720x306_0250k_int-150-150.webm</BaseURL>
<SegmentBase indexRange="29052226-29054708">
<Initialization range="0-229" />
</SegmentBase>
</Representation>
<Representation id="2" bandwidth="1078766">
<BaseURL>mevq_logo_720x306_0500k_int-150-150.webm</BaseURL>
<SegmentBase indexRange="56003676-56006200">
<Initialization range="0-229" />
</SegmentBase>
</Representation>
<Representation id="3" bandwidth="1745140">
<BaseURL>mevq_logo_720x306_0750k_int-150-150.webm</BaseURL>
<SegmentBase indexRange="83686040-83688577">
<Initialization range="0-229" />
</SegmentBase>
</Representation>
<Representation id="4" bandwidth="2295403">
<BaseURL>mevq_logo_720x306_1000k_int-150-150.webm</BaseURL>
<SegmentBase indexRange="111588024-111590567">
<Initialization range="0-229" />
</SegmentBase>
</Representation>
<Representation id="5" bandwidth="3797938">
<BaseURL>mevq_logo_720x306_1500k_int-150-150.webm</BaseURL>
<SegmentBase indexRange="166960740-166963291">
<Initialization range="0-229" />
</SegmentBase>
</Representation>
<Representation id="6" bandwidth="6418657">
<BaseURL>mevq_logo_720x306_2000k_int-150-150.webm</BaseURL>
<SegmentBase indexRange="222165200-222167753">
<Initialization range="0-229" />
</SegmentBase>
</Representation>
</AdaptationSet>
<AdaptationSet id="1" mimeType="audio/webm" codecs="vorbis" lang="eng" audioSamplingRate="41000" subsegmentStartsWithSAP="1">
<Representation id="7" bandwidth="115479">
<BaseURL>evq_vorbis_128kbps_cues-5sec_tracks-2.webm</BaseURL>
<SegmentBase indexRange="11944509-11947524">
<Initialization range="0-4501" />
</SegmentBase>
</Representation>
</AdaptationSet>
Does anybody know how to obtain/calculate the numbers 'SegmentBase indexRange' and 'Initialization range' for any video?
MPEG-DASH is an adaptive bitrate streaming technique that enables streaming of media content over the Internet delivered from conventional HTTP web servers. A media presentation description (MPD) file is used to hold the information on the various streams and the bandwidths they are associated with.
Simply enter the URL of your mpeg-dash stream (. mpd file) into Castr's Dash player and press play. If everything goes well, the video will playback smoothly. Make sure your URL are HTTPS- compatible, otherwise your stream may not play.
To play the video a DASH file contains, you must: Combine all the DASH files that comprise a single streamed video into one DASH file. Convert the combined DASH file into an MP4 file.
indexRange contains Segment Index Box (sidx). It is basically metadata fragment that contains information about the fragments the player should request when downloading the file. This is a quote from the spec:
"indexRange specifies the byte range that contains the Segment Index in all Media Segments of the Representation. The byte range shall be expressed and formatted as a byte-range-spec as defined in RFC 2616, Clause 14.35.1. It is restricted to a single expression identifying a contiguous range of bytes."
sidx box is described in HERE and a parser can be found HERE and HERE(from dash.js project)
Initialization - According to spec:
"specifies the URL including a possible byte range for the Initialization Segment."
Hope it helped!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With