I got a sample mpd file from http://dash-mse-test.appspot.com/media.html and below is a snippet containing a single Representation.
...
<Representation bandwidth="4190760" codecs="avc1.640028" height="1080" id="1" mimeType="video/mp4" width="1920">
<BaseURL>car_cenc-20120827-89.mp4</BaseURL>
<SegmentBase indexRange="2755-3230">
<Initialization range="0-2754" />
</SegmentBase>
</Representation>
...
What does SegmentBase mean? What does the value of indexRange mean?
Initialization end range is always one less than the indexRange start value. ie., in the above 2755-1 = 2754 (the value of Initialization)
Can anyone help me understand the significance of these number?
EDIT 1:
As per the answer by @sander below, I understand segmentindex is byte range. However, I am still confused about how to use this value.
For eg:
<Representation bandwidth="4190760" codecs="avc1.640028" height="1080" id="1" mimeType="video/mp4" width="1920">
<BaseURL>car-20120827-89.mp4</BaseURL>
<SegmentBase indexRange="674-1149">
<Initialization range="0-673" />
</SegmentBase>
</Representation>
There is only one segment in this representation containing the entire video clip in a single file. (the file size is about 90mb).
Initialization Range mentions 0-673. So from the 0th byte of the file to the 673rd byte of the file contains the initialization segment for the video. Is my understanding right?
If so, the file is about 90mb. How does one get the other segments by byte range? SegmentBase only mentions the indexRange 674-1149.
BTW, I am using this player to understand the segmentindex.
Looking at the header request sent using Chrome's inspect tool, there is a lot of request happening in small byte ranges but I am not sure how does one get these byte ranges from the MPD.
Thanks
The exact format of this file is described in the DASH specification (ISO/IEC 23009-1). The
SegmentBase
element is described in chapter 5.3.9.2.My interpretation of this snippet is that this Representation consists of a single mp4 file that is delivered to the player as one segment. The
indexRange
is the range of bytes within this segment that represents the segment index (thesidx
box in the mp4 file) and theInitialization
element indicates the range of bytes that includes any relevant initialization data (the various header boxes in the mp4 file). As you note, the ranges neatly cover the beginning of the segment, with the rest presumably filled with media sample data. The byte ranges inform the player where exactly it should load the relevant data from.Edit: The
sidx
box contains the byte ranges that reference the sub-segments of this single mp4 file. Quoting from ISO/IEC 14496-12:2012(E):Based on the contents of the
sidx
box, the player can determine which parts of the mp4 file it needs to download in order to play a specific piece of the video.