The bootstrapInfo element holds, in Base64 or at a URL, a binary
bootstrap info box defined in Adobe’s F4V file format specification. It tells a player
which segments and fragments exist and what time each fragment starts. The media itself
is in F4F files, fragmented MP4 in Adobe’s variant. Boxes have the usual MP4 header: a
4-byte big-endian size and a 4-byte type. All numbers are big-endian; strings end with a
zero byte.
abst: bootstrap info box
| Field | Size | Meaning |
|---|---|---|
size, abst | 8 | Box header |
| version | 1 | 0 |
| flags | 3 | 0 |
| BootstrapinfoVersion | 4 | Rises each time the information is updated |
| Profile, Live, Update, reserved | 1 | Bits 7–6 the profile (0 named access); bit 5 (0x20) live; bit 4 (0x10) an update to earlier information rather than a full table |
| TimeScale | 4 | Units per second of the times that follow |
| CurrentMediaTime | 8 | The latest available time: the end of the presentation, or the live point |
| SmpteTimeCodeOffset | 8 | Offset of the SMPTE time code |
| MovieIdentifier | string | Name of the presentation |
| ServerEntryCount, ServerEntryTable | 1, strings | Servers the fragments can come from |
| QualityEntryCount, QualityEntryTable | 1, strings | Names of the quality levels |
| DrmData | string | DRM information |
| MetaData | string | Metadata |
| SegmentRunTableCount, SegmentRunTableEntries | 1, boxes | One or more asrt boxes |
| FragmentRunTableCount, FragmentRunTableEntries | 1, boxes | One or more afrt boxes |
asrt: segment run table
Says how many fragments each segment holds, as runs of segments.
| Field | Size | Meaning |
|---|---|---|
size, asrt, version, flags | 12 | Box header and full-box fields |
| QualityEntryCount, QualitySegmentUrlModifiers | 1, strings | The quality levels the table applies to |
| SegmentRunEntryCount | 4 | Number of entries |
| FirstSegment | 4 | Per entry: the first segment number of the run |
| FragmentsPerSegment | 4 | Per entry: fragments in each segment of the run, which lasts until the next entry’s first segment |
afrt: fragment run table
Gives the time of every fragment, as runs of fragments of equal duration.
| Field | Size | Meaning |
|---|---|---|
size, afrt, version, flags | 12 | Box header and full-box fields |
| TimeScale | 4 | Units per second of this table |
| QualityEntryCount, QualitySegmentUrlModifiers | 1, strings | The quality levels the table applies to |
| FragmentRunEntryCount | 4 | Number of entries |
| FirstFragment | 4 | Per entry: the first fragment number of the run |
| FirstFragmentTimestamp | 8 | Per entry: its start time |
| FragmentDuration | 4 | Per entry: the duration of each fragment in the run |
| DiscontinuityIndicator | 1 | Per entry, only when FragmentDuration is 0 (below) |
| DiscontinuityIndicator | Meaning |
|---|---|
| 0 | End of the presentation |
| 1 | The fragment numbers skip |
| 2 | A gap in the timestamps |
| 3 | Both |
Fragment addresses
A fragment’s address is the media element’s url, resolved
against baseURL, followed by Seg, the segment number,
-Frag and the fragment number. Fragment numbers count on through the
whole presentation; they do not restart in each segment.
http://cdn.example.com/vod/film_1000_Seg1-Frag1
http://cdn.example.com/vod/film_1000_Seg1-Frag2
…
baseURL http://cdn.example.com/vod/.Worked example
segment run table: FirstSegment 1, FragmentsPerSegment 150
fragment run table: TimeScale 1000
FirstFragment 1, FirstFragmentTimestamp 0, FragmentDuration 4000
FirstFragment 150, FirstFragmentTimestamp 596000, FragmentDuration 500
FirstFragment 0, FirstFragmentTimestamp 0, FragmentDuration 0, DiscontinuityIndicator 0