draft-pantos-http-live-streaming-23v3.original | draft-pantos-http-live-streaming-23v3.txt | |||
---|---|---|---|---|
Informational R. Pantos, Ed. | Independent R. Pantos, Ed. | |||
Internet-Draft Apple Inc. | Internet-Draft Apple Inc. | |||
Intended status: Informational W. May | Intended status: Informational W. May | |||
Expires: November 23, 2017 Major League Baseball Advanced Media | Expires: November 23, 2017 Major League Baseball Advanced Media | |||
May 22, 2017 | May 22, 2017 | |||
HTTP Live Streaming | HTTP Live Streaming | |||
draft-pantos-http-live-streaming-23 | draft-pantos-http-live-streaming-23 | |||
Abstract | Abstract | |||
skipping to change at page 1, line 46 | skipping to change at page 1, line 46 | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2017 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | ||||
This Informational Internet Draft is submitted as an RFC Editor | the Trust Legal Provisions and are provided without warranty as | |||
Contribution and/or non-IETF Document (not as a Contribution, IETF | described in the Simplified BSD License. | |||
Contribution, nor IETF Document) in accordance with BCP 78 and BCP | ||||
79. | ||||
This document may not be modified, and derivative works of it may not | ||||
be created, except to format it for publication as an RFC or to | ||||
translate it into languages other than English. | ||||
Table of Contents | Table of Contents | |||
1. Introduction to HTTP Live Streaming . . . . . . . . . . . . . 4 | 1. Introduction to HTTP Live Streaming . . . . . . . . . . . . . 3 | |||
2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3. Media Segments . . . . . . . . . . . . . . . . . . . . . . . 6 | 3. Media Segments . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.1. Supported Media Segment Formats . . . . . . . . . . . . . 6 | 3.1. Supported Media Segment Formats . . . . . . . . . . . . . 5 | |||
3.2. MPEG-2 Transport Streams . . . . . . . . . . . . . . . . 7 | 3.2. MPEG-2 Transport Streams . . . . . . . . . . . . . . . . 5 | |||
3.3. Fragmented MPEG-4 . . . . . . . . . . . . . . . . . . . . 7 | 3.3. Fragmented MPEG-4 . . . . . . . . . . . . . . . . . . . . 6 | |||
3.4. Packed Audio . . . . . . . . . . . . . . . . . . . . . . 8 | 3.4. Packed Audio . . . . . . . . . . . . . . . . . . . . . . 7 | |||
3.5. WebVTT . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 3.5. WebVTT . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
4. Playlists . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 4. Playlists . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
4.1. Definition of a Playlist . . . . . . . . . . . . . . . . 9 | 4.1. Definition of a Playlist . . . . . . . . . . . . . . . . 8 | |||
4.2. Attribute Lists . . . . . . . . . . . . . . . . . . . . . 10 | 4.2. Attribute Lists . . . . . . . . . . . . . . . . . . . . . 9 | |||
4.3. Playlist Tags . . . . . . . . . . . . . . . . . . . . . . 12 | 4.3. Playlist Tags . . . . . . . . . . . . . . . . . . . . . . 11 | |||
4.3.1. Basic Tags . . . . . . . . . . . . . . . . . . . . . 12 | 4.3.1. Basic Tags . . . . . . . . . . . . . . . . . . . . . 11 | |||
4.3.1.1. EXTM3U . . . . . . . . . . . . . . . . . . . . . 12 | 4.3.2. Media Segment Tags . . . . . . . . . . . . . . . . . 11 | |||
4.3.1.2. EXT-X-VERSION . . . . . . . . . . . . . . . . . . 12 | 4.3.3. Media Playlist Tags . . . . . . . . . . . . . . . . . 20 | |||
4.3.2. Media Segment Tags . . . . . . . . . . . . . . . . . 13 | 4.3.4. Master Playlist Tags . . . . . . . . . . . . . . . . 23 | |||
4.3.2.1. EXTINF . . . . . . . . . . . . . . . . . . . . . 13 | 4.3.5. Media or Master Playlist Tags . . . . . . . . . . . . 33 | |||
4.3.2.2. EXT-X-BYTERANGE . . . . . . . . . . . . . . . . . 13 | 5. Key files . . . . . . . . . . . . . . . . . . . . . . . . . . 35 | |||
4.3.2.3. EXT-X-DISCONTINUITY . . . . . . . . . . . . . . . 14 | 5.1. Structure of Key files . . . . . . . . . . . . . . . . . 35 | |||
4.3.2.4. EXT-X-KEY . . . . . . . . . . . . . . . . . . . . 14 | 5.2. IV for [AES_128] . . . . . . . . . . . . . . . . . . . . 35 | |||
4.3.2.5. EXT-X-MAP . . . . . . . . . . . . . . . . . . . . 16 | 6. Client/Server Responsibilities . . . . . . . . . . . . . . . 35 | |||
4.3.2.6. EXT-X-PROGRAM-DATE-TIME . . . . . . . . . . . . . 17 | 6.1. Introduction . . . . . . . . . . . . . . . . . . . . . . 35 | |||
4.3.2.7. EXT-X-DATERANGE . . . . . . . . . . . . . . . . . 17 | 6.2. Server Responsibilities . . . . . . . . . . . . . . . . . 35 | |||
4.3.2.7.1. Mapping SCTE-35 into EXT-X-DATERANGE . . . . 19 | 6.2.1. General Server Responsibilities . . . . . . . . . . . 35 | |||
4.3.3. Media Playlist Tags . . . . . . . . . . . . . . . . . 21 | 6.2.2. Live Playlists . . . . . . . . . . . . . . . . . . . 38 | |||
4.3.3.1. EXT-X-TARGETDURATION . . . . . . . . . . . . . . 21 | 6.2.3. Encrypting Media Segments . . . . . . . . . . . . . . 39 | |||
4.3.3.2. EXT-X-MEDIA-SEQUENCE . . . . . . . . . . . . . . 22 | 6.2.4. Providing Variant Streams . . . . . . . . . . . . . . 40 | |||
4.3.3.3. EXT-X-DISCONTINUITY-SEQUENCE . . . . . . . . . . 22 | 6.3. Client Responsibilities . . . . . . . . . . . . . . . . . 41 | |||
4.3.3.4. EXT-X-ENDLIST . . . . . . . . . . . . . . . . . . 23 | 6.3.1. General Client Responsibilities . . . . . . . . . . . 41 | |||
4.3.3.5. EXT-X-PLAYLIST-TYPE . . . . . . . . . . . . . . . 23 | 6.3.2. Loading the Media Playlist file . . . . . . . . . . . 42 | |||
4.3.3.6. EXT-X-I-FRAMES-ONLY . . . . . . . . . . . . . . . 23 | 6.3.3. Playing the Media Playlist file . . . . . . . . . . . 43 | |||
4.3.4. Master Playlist Tags . . . . . . . . . . . . . . . . 24 | 6.3.4. Reloading the Media Playlist file . . . . . . . . . . 44 | |||
4.3.4.1. EXT-X-MEDIA . . . . . . . . . . . . . . . . . . . 24 | 6.3.5. Determining the next segment to load . . . . . . . . 45 | |||
4.3.4.1.1. Rendition Groups . . . . . . . . . . . . . . 27 | 6.3.6. Decrypting encrypted Media Segments . . . . . . . . . 45 | |||
4.3.4.2. EXT-X-STREAM-INF . . . . . . . . . . . . . . . . 28 | 7. Protocol version compatibility . . . . . . . . . . . . . . . 46 | |||
4.3.4.2.1. Alternative Renditions . . . . . . . . . . . 31 | 8. Playlist Examples . . . . . . . . . . . . . . . . . . . . . . 47 | |||
4.3.4.3. EXT-X-I-FRAME-STREAM-INF . . . . . . . . . . . . 32 | 8.1. Simple Media Playlist . . . . . . . . . . . . . . . . . . 47 | |||
4.3.4.4. EXT-X-SESSION-DATA . . . . . . . . . . . . . . . 33 | 8.2. Live Media Playlist, using HTTPS . . . . . . . . . . . . 47 | |||
4.3.4.5. EXT-X-SESSION-KEY . . . . . . . . . . . . . . . . 34 | 8.3. Playlist with encrypted Media Segments . . . . . . . . . 48 | |||
4.3.5. Media or Master Playlist Tags . . . . . . . . . . . . 34 | 8.4. Master Playlist . . . . . . . . . . . . . . . . . . . . . 48 | |||
4.3.5.1. EXT-X-INDEPENDENT-SEGMENTS . . . . . . . . . . . 34 | 8.5. Master Playlist with I-Frames . . . . . . . . . . . . . . 49 | |||
4.3.5.2. EXT-X-START . . . . . . . . . . . . . . . . . . . 35 | 8.6. Master Playlist with Alternative audio . . . . . . . . . 49 | |||
5. Key files . . . . . . . . . . . . . . . . . . . . . . . . . . 36 | 8.7. Master Playlist with Alternative video . . . . . . . . . 49 | |||
5.1. Structure of Key files . . . . . . . . . . . . . . . . . 36 | 8.8. Session Data in a Master Playlist . . . . . . . . . . . . 50 | |||
5.2. IV for [AES_128] . . . . . . . . . . . . . . . . . . . . 36 | ||||
6. Client/Server Responsibilities . . . . . . . . . . . . . . . 36 | ||||
6.1. Introduction . . . . . . . . . . . . . . . . . . . . . . 36 | ||||
6.2. Server Responsibilities . . . . . . . . . . . . . . . . . 36 | ||||
6.2.1. General Server Responsibilities . . . . . . . . . . . 36 | ||||
6.2.2. Live Playlists . . . . . . . . . . . . . . . . . . . 39 | ||||
6.2.3. Encrypting Media Segments . . . . . . . . . . . . . . 40 | ||||
6.2.4. Providing Variant Streams . . . . . . . . . . . . . . 41 | ||||
6.3. Client Responsibilities . . . . . . . . . . . . . . . . . 42 | ||||
6.3.1. General Client Responsibilities . . . . . . . . . . . 42 | ||||
6.3.2. Loading the Media Playlist file . . . . . . . . . . . 43 | ||||
6.3.3. Playing the Media Playlist file . . . . . . . . . . . 44 | ||||
6.3.4. Reloading the Media Playlist file . . . . . . . . . . 45 | ||||
6.3.5. Determining the next segment to load . . . . . . . . 46 | ||||
6.3.6. Decrypting encrypted Media Segments . . . . . . . . . 46 | ||||
7. Protocol version compatibility . . . . . . . . . . . . . . . 47 | ||||
8. Playlist Examples . . . . . . . . . . . . . . . . . . . . . . 48 | ||||
8.1. Simple Media Playlist . . . . . . . . . . . . . . . . . . 48 | ||||
8.2. Live Media Playlist, using HTTPS . . . . . . . . . . . . 48 | ||||
8.3. Playlist with encrypted Media Segments . . . . . . . . . 49 | ||||
8.4. Master Playlist . . . . . . . . . . . . . . . . . . . . . 49 | ||||
8.5. Master Playlist with I-Frames . . . . . . . . . . . . . . 50 | ||||
8.6. Master Playlist with Alternative audio . . . . . . . . . 50 | ||||
8.7. Master Playlist with Alternative video . . . . . . . . . 50 | ||||
8.8. Session Data in a Master Playlist . . . . . . . . . . . . 51 | ||||
8.9. CHARACTERISTICS attribute containing multiple | 8.9. CHARACTERISTICS attribute containing multiple | |||
characteristics . . . . . . . . . . . . . . . . . . . . . 52 | characteristics . . . . . . . . . . . . . . . . . . . . . 51 | |||
8.10. EXT-X-DATERANGE carrying SCTE-35 tags . . . . . . . . . . 52 | ||||
9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 52 | 8.10. EXT-X-DATERANGE carrying SCTE-35 tags . . . . . . . . . . 51 | |||
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 52 | 9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 51 | |||
11. Security Considerations . . . . . . . . . . . . . . . . . . . 53 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 51 | |||
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 54 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 52 | |||
12.1. Normative References . . . . . . . . . . . . . . . . . . 54 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 53 | |||
12.2. Informative References . . . . . . . . . . . . . . . . . 57 | 12.1. Normative References . . . . . . . . . . . . . . . . . . 53 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 58 | 12.2. Informative References . . . . . . . . . . . . . . . . . 56 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 57 | ||||
1. Introduction to HTTP Live Streaming | 1. Introduction to HTTP Live Streaming | |||
HTTP Live Streaming provides a reliable, cost-effective means of | HTTP Live Streaming provides a reliable, cost-effective means of | |||
delivering continuous and long-form video over the Internet. It | delivering continuous and long-form video over the Internet. It | |||
allows a receiver to adapt the bit rate of the media to the current | allows a receiver to adapt the bit rate of the media to the current | |||
network conditions in order to maintain uninterrupted playback at the | network conditions in order to maintain uninterrupted playback at the | |||
best possible quality. It supports interstitial content boundaries. | best possible quality. It supports interstitial content boundaries. | |||
It provides a flexible framework for media encryption. It can | It provides a flexible framework for media encryption. It can | |||
efficiently offer multiple renditions of the same content, such as | efficiently offer multiple renditions of the same content, such as | |||
skipping to change at page 17, line 9 | skipping to change at page 16, line 4 | |||
The value is a quoted-string specifying a byte range into the | The value is a quoted-string specifying a byte range into the | |||
resource identified by the URI attribute. This range SHOULD | resource identified by the URI attribute. This range SHOULD | |||
contain only the Media Initialization Section. The format of the | contain only the Media Initialization Section. The format of the | |||
byte range is described in Section 4.3.2.2. This attribute is | byte range is described in Section 4.3.2.2. This attribute is | |||
OPTIONAL; if it is not present, the byte range is the entire | OPTIONAL; if it is not present, the byte range is the entire | |||
resource indicated by the URI. | resource indicated by the URI. | |||
An EXT-X-MAP tag SHOULD be supplied for Media Segments in Playlists | An EXT-X-MAP tag SHOULD be supplied for Media Segments in Playlists | |||
with the EXT-X-I-FRAMES-ONLY tag when the first Media Segment (i.e., | with the EXT-X-I-FRAMES-ONLY tag when the first Media Segment (i.e., | |||
I-frame) in the Playlist (or the first segment following an | I-frame) in the Playlist (or the first segment following an EXT- | |||
EXT-X-DISCONTINUITY tag) does not immediately follow the Media | X-DISCONTINUITY tag) does not immediately follow the Media | |||
Initialization Section at the beginning of its resource. | Initialization Section at the beginning of its resource. | |||
Use of the EXT-X-MAP tag in a Media Playlist that contains the | Use of the EXT-X-MAP tag in a Media Playlist that contains the EXT- | |||
EXT-X-I-FRAMES-ONLY tag REQUIRES a compatibility version number of 5 | X-I-FRAMES-ONLY tag REQUIRES a compatibility version number of 5 or | |||
or greater. Use of the EXT-X-MAP tag in a Media Playlist that DOES | greater. Use of the EXT-X-MAP tag in a Media Playlist that DOES NOT | |||
NOT contain the EXT-X-I-FRAMES-ONLY tag REQUIRES a compatibility | contain the EXT-X-I-FRAMES-ONLY tag REQUIRES a compatibility version | |||
version number of 6 or greater. | number of 6 or greater. | |||
4.3.2.6. EXT-X-PROGRAM-DATE-TIME | 4.3.2.6. EXT-X-PROGRAM-DATE-TIME | |||
The EXT-X-PROGRAM-DATE-TIME tag associates the first sample of a | The EXT-X-PROGRAM-DATE-TIME tag associates the first sample of a | |||
Media Segment with an absolute date and/or time. It applies only to | Media Segment with an absolute date and/or time. It applies only to | |||
the next Media Segment. | the next Media Segment. | |||
The date/time representation is ISO/IEC 8601:2004 [ISO_8601] and | The date/time representation is ISO/IEC 8601:2004 [ISO_8601] and | |||
SHOULD indicate a time zone and fractional parts of seconds: | SHOULD indicate a time zone and fractional parts of seconds: | |||
skipping to change at page 21, line 15 | skipping to change at page 20, line 8 | |||
The END-DATE of an EXT-X-DATERANGE tag containing a SCTE35-IN | The END-DATE of an EXT-X-DATERANGE tag containing a SCTE35-IN | |||
attribute MUST be the actual (not planned) program date and time of | attribute MUST be the actual (not planned) program date and time of | |||
that in-point. | that in-point. | |||
If the actual end date and time is not known when a SCTE35-OUT | If the actual end date and time is not known when a SCTE35-OUT | |||
attribute is added to the Playlist, the DURATION attribute and the | attribute is added to the Playlist, the DURATION attribute and the | |||
END-TIME attribute MUST NOT be present; the actual end date of the | END-TIME attribute MUST NOT be present; the actual end date of the | |||
splice SHOULD be signaled by another EXT-X-DATERANGE tag once it has | splice SHOULD be signaled by another EXT-X-DATERANGE tag once it has | |||
been established. | been established. | |||
A canceled splice SHOULD NOT appear in the Playlist as an | A canceled splice SHOULD NOT appear in the Playlist as an EXT- | |||
EXT-X-DATERANGE tag. | X-DATERANGE tag. | |||
An EXT-X-DATERANGE tag announcing a splice SHOULD be added to a | An EXT-X-DATERANGE tag announcing a splice SHOULD be added to a | |||
Playlist at the same time as the last pre-splice Media Segment. | Playlist at the same time as the last pre-splice Media Segment. | |||
The ID attribute of an EXT-X-DATERANGE tag MAY contain a | The ID attribute of an EXT-X-DATERANGE tag MAY contain a | |||
splice_event_id and/or a segmentation_event_id, but it MUST be unique | splice_event_id and/or a segmentation_event_id, but it MUST be unique | |||
in the the Playlist. If there is a possibility that a SCTE-35 id | in the the Playlist. If there is a possibility that a SCTE-35 id | |||
will be reused, the ID attribute value MUST include disambiguation, | will be reused, the ID attribute value MUST include disambiguation, | |||
such as a date or sequence number. | such as a date or sequence number. | |||
skipping to change at page 22, line 49 | skipping to change at page 21, line 39 | |||
where number is a decimal-integer. | where number is a decimal-integer. | |||
If the Media Playlist does not contain an EXT-X-DISCONTINUITY- | If the Media Playlist does not contain an EXT-X-DISCONTINUITY- | |||
SEQUENCE tag, then the Discontinuity Sequence Number of the first | SEQUENCE tag, then the Discontinuity Sequence Number of the first | |||
Media Segment in the Playlist SHALL be considered to be 0. | Media Segment in the Playlist SHALL be considered to be 0. | |||
The EXT-X-DISCONTINUITY-SEQUENCE tag MUST appear before the first | The EXT-X-DISCONTINUITY-SEQUENCE tag MUST appear before the first | |||
Media Segment in the Playlist. | Media Segment in the Playlist. | |||
The EXT-X-DISCONTINUITY-SEQUENCE tag MUST appear before any | The EXT-X-DISCONTINUITY-SEQUENCE tag MUST appear before any EXT- | |||
EXT-X-DISCONTINUITY tag. | X-DISCONTINUITY tag. | |||
See Section 6.2.1 and Section 6.2.2 for more information about | See Section 6.2.1 and Section 6.2.2 for more information about | |||
setting the value of the EXT-X-DISCONTINUITY-SEQUENCE tag. | setting the value of the EXT-X-DISCONTINUITY-SEQUENCE tag. | |||
4.3.3.4. EXT-X-ENDLIST | 4.3.3.4. EXT-X-ENDLIST | |||
The EXT-X-ENDLIST tag indicates that no more Media Segments will be | The EXT-X-ENDLIST tag indicates that no more Media Segments will be | |||
added to the Media Playlist file. It MAY occur anywhere in the Media | added to the Media Playlist file. It MAY occur anywhere in the Media | |||
Playlist file. Its format is: | Playlist file. Its format is: | |||
skipping to change at page 24, line 8 | skipping to change at page 22, line 46 | |||
#EXT-X-I-FRAMES-ONLY | #EXT-X-I-FRAMES-ONLY | |||
In a Playlist with the EXT-X-I-FRAMES-ONLY tag, the Media Segment | In a Playlist with the EXT-X-I-FRAMES-ONLY tag, the Media Segment | |||
duration (EXTINF tag value) is the time between the presentation time | duration (EXTINF tag value) is the time between the presentation time | |||
of the I-frame in the Media Segment and the presentation time of the | of the I-frame in the Media Segment and the presentation time of the | |||
next I-frame in the Playlist, or the end of the presentation if it is | next I-frame in the Playlist, or the end of the presentation if it is | |||
the last I-frame in the Playlist. | the last I-frame in the Playlist. | |||
Media resources containing I-frame segments MUST begin with either a | Media resources containing I-frame segments MUST begin with either a | |||
Media Initialization Section (Section 3) or be accompanied by an | Media Initialization Section (Section 3) or be accompanied by an EXT- | |||
EXT-X-MAP tag indicating the Media Initialization Section so that | X-MAP tag indicating the Media Initialization Section so that clients | |||
clients can load and decode I-frame segments in any order. The byte | can load and decode I-frame segments in any order. The byte range of | |||
range of an I-frame segment with an EXT-X-BYTERANGE tag applied to it | an I-frame segment with an EXT-X-BYTERANGE tag applied to it | |||
(Section 4.3.2.2) MUST NOT include its Media Initialization Section; | (Section 4.3.2.2) MUST NOT include its Media Initialization Section; | |||
clients can assume that the Media Initialization Section is defined | clients can assume that the Media Initialization Section is defined | |||
by EXT-X-MAP tag, or is located from the start of the resource to the | by EXT-X-MAP tag, or is located from the start of the resource to the | |||
offset of the first I-frame segment in that resource. | offset of the first I-frame segment in that resource. | |||
Use of the EXT-X-I-FRAMES-ONLY REQUIRES a compatibility version | Use of the EXT-X-I-FRAMES-ONLY REQUIRES a compatibility version | |||
number of 4 or greater. | number of 4 or greater. | |||
4.3.4. Master Playlist Tags | 4.3.4. Master Playlist Tags | |||
skipping to change at page 28, line 20 | skipping to change at page 27, line 12 | |||
corresponding member MUST have identical attributes with the | corresponding member MUST have identical attributes with the | |||
exception of the URI and CHANNELS attributes. | exception of the URI and CHANNELS attributes. | |||
Each member in a Group of Renditions MAY have a different sample | Each member in a Group of Renditions MAY have a different sample | |||
format. For example, an English rendition can be encoded with AC-3 | format. For example, an English rendition can be encoded with AC-3 | |||
5.1 while a Spanish rendition is encoded with AAC stereo. However, | 5.1 while a Spanish rendition is encoded with AAC stereo. However, | |||
any EXT-X-STREAM-INF (Section 4.3.4.2) tag or EXT-X-I-FRAME-STREAM- | any EXT-X-STREAM-INF (Section 4.3.4.2) tag or EXT-X-I-FRAME-STREAM- | |||
INF (Section 4.3.4.3) tag which references such a Group MUST have a | INF (Section 4.3.4.3) tag which references such a Group MUST have a | |||
CODECS attribute that lists every sample format present in any | CODECS attribute that lists every sample format present in any | |||
Rendition in the Group, or client playback failures can occur. In | Rendition in the Group, or client playback failures can occur. In | |||
the example above, the CODECS attribute would include | the example above, the CODECS attribute would include "ac- | |||
"ac-3,mp4a.40.2". | 3,mp4a.40.2". | |||
4.3.4.2. EXT-X-STREAM-INF | 4.3.4.2. EXT-X-STREAM-INF | |||
The EXT-X-STREAM-INF tag specifies a Variant Stream, which is a set | The EXT-X-STREAM-INF tag specifies a Variant Stream, which is a set | |||
of Renditions which can be combined to play the presentation. The | of Renditions which can be combined to play the presentation. The | |||
attributes of the tag provide information about the Variant Stream. | attributes of the tag provide information about the Variant Stream. | |||
The URI line that follows the EXT-X-STREAM-INF tag specifies a Media | The URI line that follows the EXT-X-STREAM-INF tag specifies a Media | |||
Playlist that carries a Rendition of the Variant Stream. The URI | Playlist that carries a Rendition of the Variant Stream. The URI | |||
line is REQUIRED. Clients that do not support multiple video | line is REQUIRED. Clients that do not support multiple video | |||
skipping to change at page 31, line 31 | skipping to change at page 30, line 21 | |||
CLOSED-CAPTIONS | CLOSED-CAPTIONS | |||
The value can be either a quoted-string or an enumerated-string | The value can be either a quoted-string or an enumerated-string | |||
with the value NONE. If the value is a quoted-string, it MUST | with the value NONE. If the value is a quoted-string, it MUST | |||
match the value of the GROUP-ID attribute of an EXT-X-MEDIA tag | match the value of the GROUP-ID attribute of an EXT-X-MEDIA tag | |||
elsewhere in the Playlist whose TYPE attribute is CLOSED-CAPTIONS, | elsewhere in the Playlist whose TYPE attribute is CLOSED-CAPTIONS, | |||
and indicates the set of closed-caption Renditions that can be | and indicates the set of closed-caption Renditions that can be | |||
used when playing the presentation. See Section 4.3.4.2.1. | used when playing the presentation. See Section 4.3.4.2.1. | |||
If the value is the enumerated-string value NONE, all EXT-X | If the value is the enumerated-string value NONE, all EXT-X - | |||
-STREAM-INF tags MUST have this attribute with a value of NONE, | STREAM-INF tags MUST have this attribute with a value of NONE, | |||
indicating that there are no closed captions in any Variant Stream | indicating that there are no closed captions in any Variant Stream | |||
in the Master Playlist. Having closed captions in one Variant | in the Master Playlist. Having closed captions in one Variant | |||
Stream but not another can trigger playback inconsistencies. | Stream but not another can trigger playback inconsistencies. | |||
The CLOSED-CAPTIONS attribute is OPTIONAL. | The CLOSED-CAPTIONS attribute is OPTIONAL. | |||
4.3.4.2.1. Alternative Renditions | 4.3.4.2.1. Alternative Renditions | |||
When an EXT-X-STREAM-INF tag contains an AUDIO, VIDEO, SUBTITLES, or | When an EXT-X-STREAM-INF tag contains an AUDIO, VIDEO, SUBTITLES, or | |||
CLOSED-CAPTIONS attribute, it indicates that alternative Renditions | CLOSED-CAPTIONS attribute, it indicates that alternative Renditions | |||
of the content are available for playback of that Variant Stream. | of the content are available for playback of that Variant Stream. | |||
When defining alternative Renditions, the following constraints MUST | When defining alternative Renditions, the following constraints MUST | |||
be met to prevent client playback errors: | be met to prevent client playback errors: | |||
o All playable combinations of Renditions associated with an EXT-X | o All playable combinations of Renditions associated with an EXT-X - | |||
-STREAM-INF tag MUST have an aggregate bandwidth less than or | STREAM-INF tag MUST have an aggregate bandwidth less than or equal | |||
equal to the BANDWIDTH attribute of the EXT-X-STREAM-INF tag. | to the BANDWIDTH attribute of the EXT-X-STREAM-INF tag. | |||
o If an EXT-X-STREAM-INF tag contains a RESOLUTION attribute and a | o If an EXT-X-STREAM-INF tag contains a RESOLUTION attribute and a | |||
VIDEO attribute, then every alternative video Rendition MUST have | VIDEO attribute, then every alternative video Rendition MUST have | |||
an optimal display resolution matching the value of the RESOLUTION | an optimal display resolution matching the value of the RESOLUTION | |||
attribute. | attribute. | |||
o Every alternative Rendition associated with an EXT-X-STREAM-INF | o Every alternative Rendition associated with an EXT-X-STREAM-INF | |||
tag MUST meet the constraints for a Variant Stream described in | tag MUST meet the constraints for a Variant Stream described in | |||
Section 6.2.4. | Section 6.2.4. | |||
The URI attribute of the EXT-X-MEDIA tag is REQUIRED if the media | The URI attribute of the EXT-X-MEDIA tag is REQUIRED if the media | |||
type is SUBTITLES, but OPTIONAL if the media type is VIDEO or AUDIO. | type is SUBTITLES, but OPTIONAL if the media type is VIDEO or AUDIO. | |||
If the media type is VIDEO or AUDIO, a missing URI attribute | If the media type is VIDEO or AUDIO, a missing URI attribute | |||
indicates that the media data for this Rendition is included in the | indicates that the media data for this Rendition is included in the | |||
Media Playlist of any EXT-X-STREAM-INF tag referencing this | Media Playlist of any EXT-X-STREAM-INF tag referencing this EXT- | |||
EXT-X-MEDIA tag. If the media TYPE is AUDIO and the URI attribute is | X-MEDIA tag. If the media TYPE is AUDIO and the URI attribute is | |||
missing, clients MUST assume that the audio data for this Rendition | missing, clients MUST assume that the audio data for this Rendition | |||
is present in every video Rendition specified by the EXT-X-STREAM-INF | is present in every video Rendition specified by the EXT-X-STREAM-INF | |||
tag. | tag. | |||
The URI attribute of the EXT-X-MEDIA tag MUST NOT be included if the | The URI attribute of the EXT-X-MEDIA tag MUST NOT be included if the | |||
media type is CLOSED-CAPTIONS. | media type is CLOSED-CAPTIONS. | |||
4.3.4.3. EXT-X-I-FRAME-STREAM-INF | 4.3.4.3. EXT-X-I-FRAME-STREAM-INF | |||
The EXT-X-I-FRAME-STREAM-INF tag identifies a Media Playlist file | The EXT-X-I-FRAME-STREAM-INF tag identifies a Media Playlist file | |||
skipping to change at page 33, line 52 | skipping to change at page 32, line 47 | |||
LANGUAGE | LANGUAGE | |||
The value is a quoted-string containing a language tag [RFC5646] | The value is a quoted-string containing a language tag [RFC5646] | |||
that identifies the language of the VALUE. This attribute is | that identifies the language of the VALUE. This attribute is | |||
OPTIONAL. | OPTIONAL. | |||
Each EXT-X-SESSION-DATA tag MUST contain either a VALUE or URI | Each EXT-X-SESSION-DATA tag MUST contain either a VALUE or URI | |||
attribute, but not both. | attribute, but not both. | |||
A Playlist MAY contain multiple EXT-X-SESSION-DATA tags with the same | A Playlist MAY contain multiple EXT-X-SESSION-DATA tags with the same | |||
DATA-ID attribute. A Playlist MUST NOT contain more than one EXT-X | DATA-ID attribute. A Playlist MUST NOT contain more than one EXT-X - | |||
-SESSION-DATA tag with the same DATA-ID attribute and the same | SESSION-DATA tag with the same DATA-ID attribute and the same | |||
LANGUAGE attribute. | LANGUAGE attribute. | |||
4.3.4.5. EXT-X-SESSION-KEY | 4.3.4.5. EXT-X-SESSION-KEY | |||
The EXT-X-SESSION-KEY tag allows encryption keys from Media Playlists | The EXT-X-SESSION-KEY tag allows encryption keys from Media Playlists | |||
to be specified in a Master Playlist. This allows the client to | to be specified in a Master Playlist. This allows the client to | |||
preload these keys without having to read the Media Playlist(s) | preload these keys without having to read the Media Playlist(s) | |||
first. | first. | |||
Its format is: | Its format is: | |||
#EXT-X-SESSION-KEY:<attribute-list> | #EXT-X-SESSION-KEY:<attribute-list> | |||
All attributes defined for the EXT-X-KEY tag (Section 4.3.2.4) are | All attributes defined for the EXT-X-KEY tag (Section 4.3.2.4) are | |||
also defined for the EXT-X-SESSION-KEY, except that the value of the | also defined for the EXT-X-SESSION-KEY, except that the value of the | |||
METHOD attribute MUST NOT be NONE. If an EXT-X-SESSION-KEY is used, | METHOD attribute MUST NOT be NONE. If an EXT-X-SESSION-KEY is used, | |||
the values of the METHOD, KEYFORMAT and KEYFORMATVERSIONS attributes | the values of the METHOD, KEYFORMAT and KEYFORMATVERSIONS attributes | |||
MUST match any EXT-X-KEY with the same URI value. | MUST match any EXT-X-KEY with the same URI value. | |||
EXT-X-SESSION-KEY tags SHOULD be added if multiple Variant Streams or | EXT-X-SESSION-KEY tags SHOULD be added if multiple Variant Streams or | |||
Renditions use the same encryption keys and formats. A EXT-X | Renditions use the same encryption keys and formats. A EXT-X - | |||
-SESSION-KEY tag is not associated with any particular Media | SESSION-KEY tag is not associated with any particular Media Playlist. | |||
Playlist. | ||||
A Master Playlist MUST NOT contain more than one EXT-X-SESSION-KEY | A Master Playlist MUST NOT contain more than one EXT-X-SESSION-KEY | |||
tag with the same METHOD, URI, IV, KEYFORMAT, and KEYFORMATVERSIONS | tag with the same METHOD, URI, IV, KEYFORMAT, and KEYFORMATVERSIONS | |||
attribute values. | attribute values. | |||
The EXT-X-SESSION-KEY tag is optional. | The EXT-X-SESSION-KEY tag is optional. | |||
4.3.5. Media or Master Playlist Tags | 4.3.5. Media or Master Playlist Tags | |||
The tags in this section can appear in either Master Playlists or | The tags in this section can appear in either Master Playlists or | |||
skipping to change at page 36, line 13 | skipping to change at page 35, line 13 | |||
If it is missing, its value should be treated as NO. | If it is missing, its value should be treated as NO. | |||
5. Key files | 5. Key files | |||
5.1. Structure of Key files | 5.1. Structure of Key files | |||
An EXT-X-KEY tag with a URI attribute identifies a Key file. A Key | An EXT-X-KEY tag with a URI attribute identifies a Key file. A Key | |||
file contains a cipher key that can decrypt Media Segments in the | file contains a cipher key that can decrypt Media Segments in the | |||
Playlist. | Playlist. | |||
[AES_128] encryption uses 16-octet keys. If the KEYFORMAT of an | [AES_128] encryption uses 16-octet keys. If the KEYFORMAT of an EXT- | |||
EXT-X-KEY tag is "identity", the Key file is a single packed array of | X-KEY tag is "identity", the Key file is a single packed array of 16 | |||
16 octets in binary format. | octets in binary format. | |||
5.2. IV for [AES_128] | 5.2. IV for [AES_128] | |||
[AES_128] REQUIRES the same 16-octet Initialization Vector (IV) to be | [AES_128] REQUIRES the same 16-octet Initialization Vector (IV) to be | |||
supplied when encrypting and decrypting. Varying this IV increases | supplied when encrypting and decrypting. Varying this IV increases | |||
the strength of the cipher. | the strength of the cipher. | |||
An IV attribute on an EXT-X-KEY tag with a KEYFORMAT of "identity" | An IV attribute on an EXT-X-KEY tag with a KEYFORMAT of "identity" | |||
specifies an Initialization Vector that can be used when decrypting | specifies an Initialization Vector that can be used when decrypting | |||
Media Segments encrypted with that Key file. IV values for AES-128 | Media Segments encrypted with that Key file. IV values for AES-128 | |||
skipping to change at page 37, line 43 | skipping to change at page 36, line 43 | |||
of view of the clients, or playback errors MAY occur. | of view of the clients, or playback errors MAY occur. | |||
The server MUST NOT change the Media Playlist file, except to: | The server MUST NOT change the Media Playlist file, except to: | |||
Append lines to it (Section 6.2.1). | Append lines to it (Section 6.2.1). | |||
Remove Media Segment URIs from the Playlist in the order that they | Remove Media Segment URIs from the Playlist in the order that they | |||
appear, along with any tags that apply only to those segments | appear, along with any tags that apply only to those segments | |||
(Section 6.2.2). | (Section 6.2.2). | |||
Increment the value of the EXT-X-MEDIA-SEQUENCE or EXT-X | Increment the value of the EXT-X-MEDIA-SEQUENCE or EXT-X - | |||
-DISCONTINUITY-SEQUENCE tags (Section 6.2.2). | DISCONTINUITY-SEQUENCE tags (Section 6.2.2). | |||
Add an EXT-X-ENDLIST tag to the Playlist (Section 6.2.1). | Add an EXT-X-ENDLIST tag to the Playlist (Section 6.2.1). | |||
A Media Playlist has further constraints on its updates if it | A Media Playlist has further constraints on its updates if it | |||
contains an EXT-X-PLAYLIST-TYPE tag. An EXT-X-PLAYLIST-TYPE tag with | contains an EXT-X-PLAYLIST-TYPE tag. An EXT-X-PLAYLIST-TYPE tag with | |||
a value of VOD indicates that the Playlist file MUST NOT change. An | a value of VOD indicates that the Playlist file MUST NOT change. An | |||
EXT-X-PLAYLIST-TYPE tag with a value of EVENT indicates that the | EXT-X-PLAYLIST-TYPE tag with a value of EVENT indicates that the | |||
server MUST NOT change or delete any part of the Playlist file; it | server MUST NOT change or delete any part of the Playlist file; it | |||
MAY append lines to it. | MAY append lines to it. | |||
skipping to change at page 38, line 18 | skipping to change at page 37, line 18 | |||
NOT change. A typical target duration is 10 seconds. | NOT change. A typical target duration is 10 seconds. | |||
Playlist changes other than those allowed here can trigger playback | Playlist changes other than those allowed here can trigger playback | |||
errors and inconsistent client behavior. | errors and inconsistent client behavior. | |||
Each Media Segment in a Media Playlist has an integer Discontinuity | Each Media Segment in a Media Playlist has an integer Discontinuity | |||
Sequence Number. The Discontinuity Sequence Number can be used in | Sequence Number. The Discontinuity Sequence Number can be used in | |||
addition to the timestamps within the media to synchronize Media | addition to the timestamps within the media to synchronize Media | |||
Segments across different Renditions. | Segments across different Renditions. | |||
A segment's Discontinuity Sequence Number is the value of the EXT-X | A segment's Discontinuity Sequence Number is the value of the EXT-X - | |||
-DISCONTINUITY-SEQUENCE tag (or zero if none) plus the number of | DISCONTINUITY-SEQUENCE tag (or zero if none) plus the number of EXT- | |||
EXT-X-DISCONTINUITY tags in the Playlist preceding the URI line of | X-DISCONTINUITY tags in the Playlist preceding the URI line of the | |||
the segment. | segment. | |||
The server MAY associate an absolute date and time with a Media | The server MAY associate an absolute date and time with a Media | |||
Segment by applying an EXT-X-PROGRAM-DATE-TIME tag to it. This | Segment by applying an EXT-X-PROGRAM-DATE-TIME tag to it. This | |||
defines an informative mapping of the (wall-clock) date and time | defines an informative mapping of the (wall-clock) date and time | |||
specified by the tag to the first media timestamp in the segment, | specified by the tag to the first media timestamp in the segment, | |||
which may be used as a basis for seeking, for display, or for other | which may be used as a basis for seeking, for display, or for other | |||
purposes. If a server provides this mapping, it SHOULD apply an | purposes. If a server provides this mapping, it SHOULD apply an EXT- | |||
EXT-X-PROGRAM-DATE-TIME tag to every segment that has an | X-PROGRAM-DATE-TIME tag to every segment that has an EXT- | |||
EXT-X-DISCONTINUITY tag applied to it. | X-DISCONTINUITY tag applied to it. | |||
The Server MUST NOT add any EXT-X-PROGRAM-DATE-TIME tag to a Playlist | The Server MUST NOT add any EXT-X-PROGRAM-DATE-TIME tag to a Playlist | |||
that would cause the mapping between program date and Media Segment | that would cause the mapping between program date and Media Segment | |||
to become ambiguous. | to become ambiguous. | |||
The server MUST NOT remove an EXT-X-DATERANGE tag from a Playlist if | The server MUST NOT remove an EXT-X-DATERANGE tag from a Playlist if | |||
any date in the range maps to a Media Segment in the Playlist. | any date in the range maps to a Media Segment in the Playlist. | |||
The server MUST NOT reuse the ID attribute value of an | The server MUST NOT reuse the ID attribute value of an EXT- | |||
EXT-X-DATERANGE tag for any new Date Range in the same Playlist. | X-DATERANGE tag for any new Date Range in the same Playlist. | |||
Once the Following Range of a Date Range with an END-ON-NEXT=YES | Once the Following Range of a Date Range with an END-ON-NEXT=YES | |||
attribute is added to a Playlist, the Server MUST NOT subsequently | attribute is added to a Playlist, the Server MUST NOT subsequently | |||
add a Date Range with the same CLASS attribute whose START-DATE is | add a Date Range with the same CLASS attribute whose START-DATE is | |||
between that of the END-ON-NEXT=YES range and its Following Range. | between that of the END-ON-NEXT=YES range and its Following Range. | |||
For Date Ranges with a PLANNED-DURATION attribute, the Server SHOULD | For Date Ranges with a PLANNED-DURATION attribute, the Server SHOULD | |||
signal the actual end of the range once it has been established. It | signal the actual end of the range once it has been established. It | |||
can do so by adding another EXT-X-DATERANGE tag with the same ID | can do so by adding another EXT-X-DATERANGE tag with the same ID | |||
attribute value and either a DURATION or an END-DATE attribute or, if | attribute value and either a DURATION or an END-DATE attribute or, if | |||
skipping to change at page 39, line 31 | skipping to change at page 38, line 31 | |||
provide a clear indication to clients that the Playlist file is no | provide a clear indication to clients that the Playlist file is no | |||
longer available (e.g. with an HTTP 404 or 410 response). It MUST | longer available (e.g. with an HTTP 404 or 410 response). It MUST | |||
ensure that all Media Segments in the Playlist file remain available | ensure that all Media Segments in the Playlist file remain available | |||
to clients for at least the duration of the Playlist file at the time | to clients for at least the duration of the Playlist file at the time | |||
of removal to prevent interruption of in-progress playback. | of removal to prevent interruption of in-progress playback. | |||
6.2.2. Live Playlists | 6.2.2. Live Playlists | |||
The server MAY limit the availability of Media Segments by removing | The server MAY limit the availability of Media Segments by removing | |||
Media Segments from the Playlist file (Section 6.2.1). If Media | Media Segments from the Playlist file (Section 6.2.1). If Media | |||
Segments are to be removed, the Playlist file MUST contain an EXT-X | Segments are to be removed, the Playlist file MUST contain an EXT-X - | |||
-MEDIA-SEQUENCE tag. Its value MUST be incremented by 1 for every | MEDIA-SEQUENCE tag. Its value MUST be incremented by 1 for every | |||
Media Segment that is removed from the Playlist file; it MUST NOT | Media Segment that is removed from the Playlist file; it MUST NOT | |||
decrease or wrap. Clients can malfunction if each Media Segment does | decrease or wrap. Clients can malfunction if each Media Segment does | |||
not have a consistent, unique Media Sequence Number. | not have a consistent, unique Media Sequence Number. | |||
Media Segments MUST be removed from the Playlist file in the order | Media Segments MUST be removed from the Playlist file in the order | |||
that they appear in the Playlist; otherwise, client playback can | that they appear in the Playlist; otherwise, client playback can | |||
malfunction. | malfunction. | |||
The server MUST NOT remove a Media Segment from a Playlist file | The server MUST NOT remove a Media Segment from a Playlist file | |||
without an EXT-X-ENDLIST tag if that would produce a Playlist whose | without an EXT-X-ENDLIST tag if that would produce a Playlist whose | |||
skipping to change at page 40, line 7 | skipping to change at page 39, line 7 | |||
When the server removes a Media Segment URI from the Playlist, the | When the server removes a Media Segment URI from the Playlist, the | |||
corresponding Media Segment MUST remain available to clients for a | corresponding Media Segment MUST remain available to clients for a | |||
period of time equal to the duration of the segment plus the duration | period of time equal to the duration of the segment plus the duration | |||
of the longest Playlist file distributed by the server containing | of the longest Playlist file distributed by the server containing | |||
that segment. Removing a Media Segment earlier than that can | that segment. Removing a Media Segment earlier than that can | |||
interrupt in-progress playback. | interrupt in-progress playback. | |||
If the server wishes to remove segments from a Media Playlist | If the server wishes to remove segments from a Media Playlist | |||
containing an EXT-X-DISCONTINUITY tag, the Media Playlist MUST | containing an EXT-X-DISCONTINUITY tag, the Media Playlist MUST | |||
contain an EXT-X-DISCONTINUITY-SEQUENCE tag. Without the EXT-X | contain an EXT-X-DISCONTINUITY-SEQUENCE tag. Without the EXT-X - | |||
-DISCONTINUITY-SEQUENCE tag, it can be impossible for a client to | DISCONTINUITY-SEQUENCE tag, it can be impossible for a client to | |||
locate corresponding segments between Renditions. | locate corresponding segments between Renditions. | |||
If the server removes an EXT-X-DISCONTINUITY tag from the Media | If the server removes an EXT-X-DISCONTINUITY tag from the Media | |||
Playlist, it MUST increment the value of the EXT-X-DISCONTINUITY- | Playlist, it MUST increment the value of the EXT-X-DISCONTINUITY- | |||
SEQUENCE tag so that the Discontinuity Sequence Numbers of the | SEQUENCE tag so that the Discontinuity Sequence Numbers of the | |||
segments still in the Media Playlist remain unchanged. The value of | segments still in the Media Playlist remain unchanged. The value of | |||
the EXT-X-DISCONTINUITY-SEQUENCE tag MUST NOT decrease or wrap. | the EXT-X-DISCONTINUITY-SEQUENCE tag MUST NOT decrease or wrap. | |||
Clients can malfunction if each Media Segment does not have a | Clients can malfunction if each Media Segment does not have a | |||
consistent Discontinuity Sequence Number. | consistent Discontinuity Sequence Number. | |||
skipping to change at page 40, line 50 | skipping to change at page 39, line 50 | |||
If an encrypted Media Segment is followed by one or more unencrypted | If an encrypted Media Segment is followed by one or more unencrypted | |||
Media Segments in the Playlist, the unencrypted Media Segments MUST | Media Segments in the Playlist, the unencrypted Media Segments MUST | |||
have an EXT-X-KEY tag whose METHOD is NONE applied to them. | have an EXT-X-KEY tag whose METHOD is NONE applied to them. | |||
Otherwise, the client will misinterpret those segments as encrypted. | Otherwise, the client will misinterpret those segments as encrypted. | |||
If the encryption METHOD is AES-128 and the Playlist does not contain | If the encryption METHOD is AES-128 and the Playlist does not contain | |||
the EXT-X-I-FRAMES-ONLY tag, AES encryption as described in | the EXT-X-I-FRAMES-ONLY tag, AES encryption as described in | |||
Section 4.3.2.4 SHALL be applied to individual Media Segments. | Section 4.3.2.4 SHALL be applied to individual Media Segments. | |||
If the encryption METHOD is AES-128 and the Playlist contains an | If the encryption METHOD is AES-128 and the Playlist contains an EXT- | |||
EXT-X-I-FRAMES-ONLY tag, the entire resource MUST be encrypted using | X-I-FRAMES-ONLY tag, the entire resource MUST be encrypted using | |||
AES-128 CBC with PKCS7 padding [RFC5652]. Encryption MAY be | AES-128 CBC with PKCS7 padding [RFC5652]. Encryption MAY be | |||
restarted on 16-byte block boundaries, unless the first block | restarted on 16-byte block boundaries, unless the first block | |||
contains an I-frame. The IV used for encryption MUST be either the | contains an I-frame. The IV used for encryption MUST be either the | |||
Media Sequence Number of the Media Segment or the value of the IV | Media Sequence Number of the Media Segment or the value of the IV | |||
attribute of the EXT-X-KEY tag, as described in Section 5.2. These | attribute of the EXT-X-KEY tag, as described in Section 5.2. These | |||
constraints allow a client to load and decrypt individual I-frames | constraints allow a client to load and decrypt individual I-frames | |||
specified as sub-ranges of regular encrypted Media Segments, and | specified as sub-ranges of regular encrypted Media Segments, and | |||
their Media Initialization Sections. | their Media Initialization Sections. | |||
If the encryption METHOD is SAMPLE-AES, media samples MAY be | If the encryption METHOD is SAMPLE-AES, media samples MAY be | |||
skipping to change at page 42, line 18 | skipping to change at page 41, line 18 | |||
duration. | duration. | |||
If any Media Playlists have an EXT-X-PLAYLIST-TYPE tag, all Media | If any Media Playlists have an EXT-X-PLAYLIST-TYPE tag, all Media | |||
Playlists MUST have the EXT-X-PLAYLIST-TYPE tag with the same | Playlists MUST have the EXT-X-PLAYLIST-TYPE tag with the same | |||
value. | value. | |||
If the Playlist contains an EXT-X-PLAYLIST-TYPE tag with the value | If the Playlist contains an EXT-X-PLAYLIST-TYPE tag with the value | |||
of VOD, the first segment of every Media Playlist in every Variant | of VOD, the first segment of every Media Playlist in every Variant | |||
Stream MUST start at the same media timestamp. | Stream MUST start at the same media timestamp. | |||
If any Media Playlist in a Master Playlist contains an EXT-X | If any Media Playlist in a Master Playlist contains an EXT-X - | |||
-PROGRAM-DATE-TIME tag, then all Media Playlists in that Master | PROGRAM-DATE-TIME tag, then all Media Playlists in that Master | |||
Playlist MUST contain EXT-X-PROGRAM-DATE-TIME tags with consistent | Playlist MUST contain EXT-X-PROGRAM-DATE-TIME tags with consistent | |||
mappings of date and time to media timestamps. | mappings of date and time to media timestamps. | |||
Each Variant Stream MUST contain the same set of Date Ranges, each | Each Variant Stream MUST contain the same set of Date Ranges, each | |||
one identified by EXT-X-DATERANGE tag(s) with the same ID | one identified by EXT-X-DATERANGE tag(s) with the same ID | |||
attribute value and containing the same set of attributes / value | attribute value and containing the same set of attributes / value | |||
pairs. | pairs. | |||
In addition, for broadest compatibility, Variant Streams SHOULD | In addition, for broadest compatibility, Variant Streams SHOULD | |||
contain the same encoded audio bitstream. This allows clients to | contain the same encoded audio bitstream. This allows clients to | |||
skipping to change at page 45, line 15 | skipping to change at page 44, line 15 | |||
account; if it does not the client MAY assume the time to be local. | account; if it does not the client MAY assume the time to be local. | |||
Note that dates in Playlists can refer to when the content was | Note that dates in Playlists can refer to when the content was | |||
produced (or to other times), which have no relation to the time of | produced (or to other times), which have no relation to the time of | |||
playback. | playback. | |||
If the first EXT-X-PROGRAM-DATE-TIME tag in a Playlist appears after | If the first EXT-X-PROGRAM-DATE-TIME tag in a Playlist appears after | |||
one or more media segment URIs, the client SHOULD extrapolate | one or more media segment URIs, the client SHOULD extrapolate | |||
backward from that tag (using EXTINF durations and/or media | backward from that tag (using EXTINF durations and/or media | |||
timestamps) to associate dates with those segments. To associate a | timestamps) to associate dates with those segments. To associate a | |||
date with any other media segment that does not have an EXT-X | date with any other media segment that does not have an EXT-X - | |||
-PROGRAM-DATE-TIME tag applied to it directly , the client SHOULD | PROGRAM-DATE-TIME tag applied to it directly , the client SHOULD | |||
extrapolate forward from the last EXT-X-PROGRAM-DATE-TIME tag | extrapolate forward from the last EXT-X-PROGRAM-DATE-TIME tag | |||
appearing before that segment in the Playlist. | appearing before that segment in the Playlist. | |||
6.3.4. Reloading the Media Playlist file | 6.3.4. Reloading the Media Playlist file | |||
The client MUST periodically reload a Media Playlist file to learn | The client MUST periodically reload a Media Playlist file to learn | |||
what media is currently available, unless it contains an EXT-X | what media is currently available, unless it contains an EXT-X - | |||
-PLAYLIST-TYPE tag with a value of VOD, or a value of EVENT and the | PLAYLIST-TYPE tag with a value of VOD, or a value of EVENT and the | |||
EXT-X-ENDLIST tag is also present. | EXT-X-ENDLIST tag is also present. | |||
However the client MUST NOT attempt to reload the Playlist file more | However the client MUST NOT attempt to reload the Playlist file more | |||
frequently than specified by this section, in order to limit the | frequently than specified by this section, in order to limit the | |||
collective load on the server. | collective load on the server. | |||
When a client loads a Playlist file for the first time or reloads a | When a client loads a Playlist file for the first time or reloads a | |||
Playlist file and finds that it has changed since the last time it | Playlist file and finds that it has changed since the last time it | |||
was loaded, the client MUST wait for at least the target duration | was loaded, the client MUST wait for at least the target duration | |||
before attempting to reload the Playlist file again, measured from | before attempting to reload the Playlist file again, measured from | |||
skipping to change at page 48, line 13 | skipping to change at page 47, line 13 | |||
contains: | contains: | |||
o The KEYFORMAT and KEYFORMATVERSIONS attributes of the EXT-X-KEY | o The KEYFORMAT and KEYFORMATVERSIONS attributes of the EXT-X-KEY | |||
tag. | tag. | |||
o The EXT-X-MAP tag. | o The EXT-X-MAP tag. | |||
A Media Playlist MUST indicate a EXT-X-VERSION of 6 or higher if it | A Media Playlist MUST indicate a EXT-X-VERSION of 6 or higher if it | |||
contains: | contains: | |||
o The EXT-X-MAP tag in a Media Playlist that does not contain | o The EXT-X-MAP tag in a Media Playlist that does not contain EXT- | |||
EXT-X-I-FRAMES-ONLY. | X-I-FRAMES-ONLY. | |||
A Master Playlist MUST indicate a EXT-X-VERSION of 7 or higher if it | A Master Playlist MUST indicate a EXT-X-VERSION of 7 or higher if it | |||
contains: | contains: | |||
o "SERVICE" values for the INSTREAM-ID attribute of the EXT-X-MEDIA | o "SERVICE" values for the INSTREAM-ID attribute of the EXT-X-MEDIA | |||
tag. | tag. | |||
The EXT-X-MEDIA tag and the AUDIO, VIDEO and SUBTITLES attributes of | The EXT-X-MEDIA tag and the AUDIO, VIDEO and SUBTITLES attributes of | |||
the EXT-X-STREAM-INF tag are backward compatible to protocol version | the EXT-X-STREAM-INF tag are backward compatible to protocol version | |||
1, but playback on older clients may not be desirable. A server MAY | 1, but playback on older clients may not be desirable. A server MAY | |||
consider indicating a EXT-X-VERSION of 4 or higher in the Master | consider indicating a EXT-X-VERSION of 4 or higher in the Master | |||
Playlist but is not required to do so. | Playlist but is not required to do so. | |||
The PROGRAM-ID attribute of the EXT-X-STREAM-INF and the EXT-X-I | The PROGRAM-ID attribute of the EXT-X-STREAM-INF and the EXT-X-I - | |||
-FRAME-STREAM-INF tags was removed in protocol version 6. | FRAME-STREAM-INF tags was removed in protocol version 6. | |||
The EXT-X-ALLOW-CACHE tag was removed in protocol version 7. | The EXT-X-ALLOW-CACHE tag was removed in protocol version 7. | |||
8. Playlist Examples | 8. Playlist Examples | |||
8.1. Simple Media Playlist | 8.1. Simple Media Playlist | |||
#EXTM3U | #EXTM3U | |||
#EXT-X-TARGETDURATION:10 | #EXT-X-TARGETDURATION:10 | |||
#EXT-X-VERSION:3 | #EXT-X-VERSION:3 | |||
skipping to change at page 54, line 40 | skipping to change at page 53, line 37 | |||
Encryption keys are specified by URI. The delivery of these keys | Encryption keys are specified by URI. The delivery of these keys | |||
SHOULD be secured by a mechanism such as HTTP Over TLS [RFC2818] | SHOULD be secured by a mechanism such as HTTP Over TLS [RFC2818] | |||
(formerly SSL) in conjunction with a secure realm or a session token. | (formerly SSL) in conjunction with a secure realm or a session token. | |||
12. References | 12. References | |||
12.1. Normative References | 12.1. Normative References | |||
[AC_3] Advanced Television Systems Committee, "ATSC Standard: | [AC_3] Advanced Television Systems Committee, "ATSC Standard: | |||
A/52:2010: Digital Audio Compression (AC-3) (E-AC-3) | A/52:2010: Digital Audio Compression (AC-3) (E-AC-3) | |||
Standard", November 2010, <http://atsc.org/wp-content/ | Standard", November 2010, <http://atsc.org/wp- | |||
uploads/2015/03/A52-201212-17.pdf>. | content/uploads/2015/03/A52-201212-17.pdf>. | |||
[AES_128] U.S. Department of Commerce/National Institute of | ||||
Standards and Technology, "Advanced Encryption Standard | ||||
(AES), FIPS PUB 197", November 2001, <http://csrc.nist | ||||
.gov/publications/fips/fips197/fips-197.pdf>. | ||||
[CEA608] Consumer Electronics Association, "CEA-608-E: Line 21 Data | [CEA608] Consumer Electronics Association, "CEA-608-E: Line 21 Data | |||
Services", April 2008, <http://www.ce.org/Standards/ | Services", April 2008, <http://www.ce>. | |||
Standard-Listings/R4-3-Television-Data-Systems | ||||
-Subcommittee/Line-21-Data-Service.aspx>. | ||||
[CEA708] Consumer Electronics Association, "CEA-708-E (ANSI): | [CEA708] Consumer Electronics Association, "CEA-708-E (ANSI): | |||
Digital Television (DTV) Closed Captioning", August 2013, | Digital Television (DTV) Closed Captioning", August 2013, | |||
<http://www.ce.org/Standards/Standard-Listings/ | <http://www.ce.org/Standards/Standard-Listings/ | |||
R4-3-Television-Data-Systems-Subcommittee/CEA-708-D.aspx>. | R4-3-Television-Data-Systems-Subcommittee/CEA-708-D.aspx>. | |||
[COMMON_ENC] | [COMMON_ENC] | |||
International Organization for Standardization, "ISO/IEC | International Organization for Standardization, "ISO/IEC | |||
23001-7:2016; Information technology -- MPEG systems | 23001-7:2016; Information technology -- MPEG systems | |||
technologies -- Part 7: Common encryption in ISO base | technologies -- Part 7: Common encryption in ISO base | |||
media file format files", February 2016, <http://www.iso | media file format files", February 2016, <http://www>. | |||
.org/iso/catalogue_detail.htm?csnumber=68042>. | ||||
[HDCP] Digital Content Protection LLC, "High-bandwidth Digital | ||||
Content Protection System - Mapping HDCP to HDMI", | ||||
February 2013, <http://www.digital-cp.com/sites/default/ | ||||
files/specifications/ | ||||
HDCP%20on%20HDMI%20Specification%20Rev2_2_Final1.pdf>. | ||||
[H_264] International Telecommunications Union, "Advanced video | [H_264] International Telecommunications Union, "Advanced video | |||
coding for generic audiovisual services", January 2012, | coding for generic audiovisual services", January 2012, | |||
<http://www.itu.int/rec/T-REC-H.264>. | <http://www.itu.int/rec/T-REC-H.264>. | |||
[ISOBMFF] International Organization for Standardization, "ISO/IEC | [HDCP] Digital Content Protection LLC, "High-bandwidth Digital | |||
14496-12:2015; Information technology -- Coding of audio- | Content Protection System - Mapping HDCP to HDMI", | |||
visual objects -- Part 12: ISO base media file format", | February 2013, <http://www.digital- | |||
December 2015, <http://www.iso.org/iso/ | cp.com/sites/default/files/specifications/ | |||
catalogue_detail.htm?csnumber=68960>. | HDCP%20on%20HDMI%20Specification%20Rev2_2_Final1.pdf>. | |||
[ISO_13818] | [ISO_13818] | |||
International Organization for Standardization, "ISO/IEC | International Organization for Standardization, "ISO/IEC | |||
International Standard 13818; Generic coding of moving | International Standard 13818; Generic coding of moving | |||
pictures and associated audio information", October 2007, | pictures and associated audio information", October 2007, | |||
<http://www.iso.org/iso/catalogue_detail?csnumber=44169>. | <http://www.iso.org/iso/catalogue_detail?csnumber=44169>. | |||
[ISO_13818_3] | [ISO_13818_3] | |||
International Organization for Standardization, "ISO/IEC | International Organization for Standardization, "ISO/IEC | |||
International Standard 13818-3:1998; Generic coding of | International Standard 13818-3:1998; Generic coding of | |||
moving pictures and associated audio information - Part 3: | moving pictures and associated audio information - Part 3: | |||
Audio", April 1998, <http://www.iso.org/iso/home/store/ | Audio", April 1998, | |||
catalogue_tc/catalogue_detail.htm?csnumber=26797>. | <http://www.iso.org/iso/home/store/catalogue_tc/ | |||
catalogue_detail.htm?csnumber=26797>. | ||||
[ISO_13818_7] | [ISO_13818_7] | |||
International Organization for Standardization, "ISO/IEC | International Organization for Standardization, "ISO/IEC | |||
International Standard 13818-3:2006; Generic coding of | International Standard 13818-3:2006; Generic coding of | |||
moving pictures and associated audio information - Part 7: | moving pictures and associated audio information - Part 7: | |||
Advanced Audio Coding (AAC)", January 2006, | Advanced Audio Coding (AAC)", January 2006, | |||
<http://www.iso.org/iso/home/store/catalogue_tc/ | <http://www.iso.org/iso/home/store/catalogue_tc/ | |||
catalogue_detail.htm?csnumber=43345>. | catalogue_detail.htm?csnumber=43345>. | |||
[ISO_14496] | [ISO_14496] | |||
International Organization for Standardization, "ISO/IEC | International Organization for Standardization, "ISO/IEC | |||
14496-3:2009 Information technology -- Coding of audio- | 14496-3:2009 Information technology -- Coding of audio- | |||
visual objects -- Part 3: Audio", 2009, | visual objects -- Part 3: Audio", 2009, | |||
<http://www.iso.org/iso/catalogue_detail?csnumber=53943>. | <http://www.iso.org/iso/catalogue_detail?csnumber=53943>. | |||
[ISO_8601] | [ISO_8601] | |||
International Organization for Standardization, "ISO/IEC | International Organization for Standardization, "ISO/IEC | |||
International Standard 8601:2004; Data elements and | International Standard 8601:2004; Data elements and | |||
interchange formats -- Information interchange -- | interchange formats -- Information interchange | |||
Representation of dates and times", December 2004, | --Representation of dates and times", December 2004, | |||
<http://www.iso.org/iso/catalogue_detail?csnumber=40874>. | <http://www.iso.org/iso/catalogue_detail?csnumber=40874>. | |||
[ISOBMFF] International Organization for Standardization, "ISO/IEC | ||||
14496-12:2015; Information technology -- Coding of audio- | ||||
visual objects -- Part 12: ISO base media file format", | ||||
December 2015, <http://www.iso.org/iso/ | ||||
catalogue_detail.htm?csnumber=68960>. | ||||
[RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | [RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | |||
Extensions (MIME) Part Two: Media Types", RFC 2046, | Extensions (MIME) Part Two: Media Types", RFC 2046, | |||
November 1996. | DOI 10.17487/RFC2046, November 1996, | |||
<http://www.rfc-editor.org/info/rfc2046>. | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | ||||
<http://www.rfc-editor.org/info/rfc2119>. | ||||
[RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. | [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, | |||
DOI 10.17487/RFC2818, May 2000, | ||||
<http://www.rfc-editor.org/info/rfc2818>. | ||||
[RFC2964] Moore, K. and N. Freed, "Use of HTTP State Management", | [RFC2964] Moore, K. and N. Freed, "Use of HTTP State Management", | |||
BCP 44, RFC 2964, October 2000. | BCP 44, RFC 2964, DOI 10.17487/RFC2964, October 2000, | |||
<http://www.rfc-editor.org/info/rfc2964>. | ||||
[RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO | [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO | |||
10646", STD 63, RFC 3629, November 2003. | 10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November | |||
2003, <http://www.rfc-editor.org/info/rfc3629>. | ||||
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | |||
Resource Identifier (URI): Generic Syntax", STD 66, RFC | Resource Identifier (URI): Generic Syntax", STD 66, | |||
3986, January 2005. | RFC 3986, DOI 10.17487/RFC3986, January 2005, | |||
<http://www.rfc-editor.org/info/rfc3986>. | ||||
[RFC5646] Phillips, A. and M. Davis, "Tags for Identifying | [RFC5646] Phillips, A., Ed. and M. Davis, Ed., "Tags for Identifying | |||
Languages", BCP 47, RFC 5646, September 2009. | Languages", BCP 47, RFC 5646, DOI 10.17487/RFC5646, | |||
September 2009, <http://www.rfc-editor.org/info/rfc5646>. | ||||
[RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, | [RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, | |||
RFC 5652, September 2009. | RFC 5652, DOI 10.17487/RFC5652, September 2009, | |||
<http://www.rfc-editor.org/info/rfc5652>. | ||||
[RFC6265] Barth, A., "HTTP State Management Mechanism", RFC 6265, | [RFC6265] Barth, A., "HTTP State Management Mechanism", RFC 6265, | |||
April 2011. | DOI 10.17487/RFC6265, April 2011, | |||
<http://www.rfc-editor.org/info/rfc6265>. | ||||
[RFC6381] Gellens, R., Singer, D., and P. Frojdh, "The 'Codecs' and | [RFC6381] Gellens, R., Singer, D., and P. Frojdh, "The 'Codecs' and | |||
'Profiles' Parameters for "Bucket" Media Types", RFC 6381, | 'Profiles' Parameters for "Bucket" Media Types", RFC 6381, | |||
August 2011. | DOI 10.17487/RFC6381, August 2011, | |||
<http://www.rfc-editor.org/info/rfc6381>. | ||||
[RFC7159] Bray, T., "The JavaScript Object Notation (JSON) Data | [RFC7159] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data | |||
Interchange Format", RFC 7159, March 2014. | Interchange Format", RFC 7159, DOI 10.17487/RFC7159, March | |||
2014, <http://www.rfc-editor.org/info/rfc7159>. | ||||
[RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | [RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | |||
Protocol (HTTP/1.1): Message Syntax and Routing", RFC | Protocol (HTTP/1.1): Message Syntax and Routing", | |||
7230, DOI 10.17487/RFC7230, June 2014, | RFC 7230, DOI 10.17487/RFC7230, June 2014, | |||
<http://www.rfc-editor.org/info/rfc7230>. | <http://www.rfc-editor.org/info/rfc7230>. | |||
[SCTE35] Society of Cable Telecommunications Engineers, "SCTE-35 | [SCTE35] Society of Cable Telecommunications Engineers, "SCTE-35 | |||
(ANSI/SCTE): Digital Program Insertion Cueing Message for | (ANSI/SCTE): Digital Program Insertion Cueing Message for | |||
Cable", August 2014, <http://www.scte.org/documents/pdf/ | Cable", August 2014, | |||
Standards/ANSI_SCTE%2035%202014.pdf>. | <http://www.scte.org/documents/pdf/Standards/ | |||
ANSI_SCTE%2035%202014.pdf>. | ||||
[US_ASCII] | [US_ASCII] | |||
American National Standards Institute, "ANSI X3.4-1986, | American National Standards Institute, "ANSI X3.4-1986, | |||
Information Systems -- Coded Character Sets 7-Bit American | Information Systems -- Coded Character Sets 7-Bit American | |||
National Standard Code for Information Interchange (7-Bit | National Standard Code for Information Interchange (7-Bit | |||
ASCII)", December 1986. | ASCII)", December 1986. | |||
[WebVTT] World Wide Web Consortium (W3C), "WebVTT: The Web Video | ||||
Text Tracks Format", July 2013, | ||||
<http://dev.w3.org/html5/webvtt/>. | ||||
12.2. Informative References | 12.2. Informative References | |||
[CMAF] International Organization for Standardization, "ISO/IEC | [CMAF] International Organization for Standardization, "ISO/IEC | |||
23000-19; Information technology -- Multimedia application | 23000-19; Information technology -- Multimedia application | |||
format (MPEG-A) -- Part 5: Common media application format | format (MPEG-A) -- Part 5: Common media application format | |||
(CMAF) for segmented media", <https://www.iso.org/ | (CMAF) for segmented media", <https://www.iso.org/ | |||
standard/71975.html/>. | standard/71975.html/>. | |||
[ID3] ID3.org, "The ID3 audio file data tagging format", | ||||
<http://www.id3.org/Developer_Information>. | ||||
[M3U] Nullsoft, Inc., "The M3U Playlist format, originally | ||||
invented for the Winamp media player", | ||||
<http://wikipedia.org/wiki/M3U>. | ||||
[SampleEnc] | [SampleEnc] | |||
Apple Inc., "MPEG-2 Stream Encryption Format for HTTP Live | Apple Inc., "MPEG-2 Stream Encryption Format for HTTP Live | |||
Streaming", <https://developer.apple.com/library/ios/ | Streaming", | |||
documentation/AudioVideo/Conceptual/ | <https://developer.apple.com/library/ios/documentation/ | |||
HLS_Sample_Encryption/>. | AudioVideo/Conceptual/HLS_Sample_Encryption/>. | |||
[UTI] Apple Inc., "Uniform Type Identifier", | [UTI] Apple Inc., "Uniform Type Identifier", <http://developer.a | |||
<http://developer.apple.com/library/ios/#documentation/ | pple.com/library/ios/#documentation/general/conceptual/ | |||
general/conceptual/DevPedia-CocoaCore/ | DevPedia-CocoaCore/UniformTypeIdentifier.html>. | |||
UniformTypeIdentifier.html>. | ||||
Authors' Addresses | Authors' Addresses | |||
Roger Pantos (editor) | Roger Pantos (editor) | |||
Apple Inc. | Apple Inc. | |||
Cupertino, California | Cupertino, California | |||
United States | United States | |||
Email: http-live-streaming-review@group.apple.com | Email: http-live-streaming-review@group.apple.com | |||
End of changes. 52 change blocks. | ||||
211 lines changed or deleted | 175 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |