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/