HTTP Live Streaming
HTTP Live Streaming
HTTP Live Streaming
Abstract
Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the
document authors. All rights reserved.
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
2. Overview
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXTINF:9.009,
http://media.example.com/first.ts
#EXTINF:9.009,
http://media.example.com/second.ts
#EXTINF:3.003,
http://media.example.com/third.ts
The first line is the format identifier tag #EXTM3U. The line
containing #EXT-X-TARGETDURATION says that all Media Segments will be
10 seconds long or less. Then, three Media Segments are declared.
The first and second are 9.009 seconds long; the third is 3.003
seconds.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
3. Media Segments
MPEG-4 Fragments are specified by the ISO Base Media File Format
[ISOBMFF]. Unlike regular MPEG-4 files that have a Movie Box
('moov') that contains sample tables and a Media Data Box ('mdat')
containing the corresponding samples, an MPEG-4 Fragment consists of
a Movie Fragment Box ('moof') containing a subset of the sample table
and a Media Data Box containing those samples. Use of MPEG-4
Fragments does require a Movie Box for initialization, but that Movie
Box contains only non-sample-specific information such as track and
sample descriptions.
A Packed Audio Segment contains encoded audio samples and ID3 tags
that are simply packed together with minimal framing and no per-
sample timestamps. Supported Packed Audio formats are Advanced Audio
Coding (AAC) with Audio Data Transport Stream (ADTS) framing
[ISO_13818_7], MP3 [ISO_13818_3], AC-3 [AC_3], and Enhanced AC-3
[AC_3].
Each Packed Audio Segment MUST signal the timestamp of its first
sample with an ID3 Private frame (PRIV) tag [ID3] at the beginning of
the segment. The ID3 PRIV owner identifier MUST be
"com.apple.streaming.transportStreamTimestamp". The ID3 payload MUST
be a 33-bit MPEG-2 Program Elementary Stream timestamp expressed as a
big-endian eight-octet number, with the upper 31 bits set to zero.
Clients SHOULD NOT play Packed Audio Segments without this ID3 tag.
3.5. WebVTT
Each WebVTT Segment MUST contain all subtitle cues that are intended
to be displayed during the period indicated by the segment EXTINF
duration. The start time offset and end time offset of each cue MUST
indicate the total display time for that cue, even if part of the cue
time range is outside the Segment period. A WebVTT Segment MAY
contain no cues; this indicates that no subtitles are to be displayed
during that period.
Each WebVTT Segment MUST either start with a WebVTT header or have an
EXT-X-MAP tag applied to it.
The cue timestamp in the LOCAL attribute MAY fall outside the range
of time covered by the segment.
4. Playlists
The format of the Playlist files is derived from the M3U [M3U]
playlist file format and inherits two tags from that earlier file
format: EXTM3U (Section 4.3.1.1) and EXTINF (Section 4.3.2.1).
Lines that start with the character '#' are either comments or tags.
Tags begin with #EXT. They are case sensitive. All other lines that
begin with '#' are comments and SHOULD be ignored.
The segment bit rate of a Media Segment is the size of the Media
Segment divided by its EXTINF duration (Section 4.3.2.1). Note that
this includes container overhead but does not include overhead
imposed by the delivery system, such as HTTP, TCP, or IP headers.
The peak segment bit rate of a Media Playlist is the largest bit rate
of any contiguous set of segments whose total duration is between 0.5
and 1.5 times the target duration. The bit rate of a set is
calculated by dividing the sum of the segment sizes by the sum of the
segment durations.
The average segment bit rate of a Media Playlist is the sum of the
sizes (in bits) of every Media Segment in the Media Playlist, divided
by the Media Playlist duration. Note that this includes container
overhead, but not HTTP or other overhead imposed by the delivery
system.
AttributeName=AttributeValue
These tags are allowed in both Media Playlists and Master Playlists.
4.3.1.1. EXTM3U
The EXTM3U tag indicates that the file is an Extended M3U [M3U]
Playlist file. It MUST be the first line of every Media Playlist and
every Master Playlist. Its format is:
#EXTM3U
4.3.1.2. EXT-X-VERSION
#EXT-X-VERSION:<n>
A Playlist file MUST NOT contain more than one EXT-X-VERSION tag. If
a client encounters a Playlist with multiple EXT-X-VERSION tags, it
MUST fail to parse it.
4.3.2.1. EXTINF
#EXTINF:<duration>,[<title>]
#EXT-X-BYTERANGE:<n>[@<o>]
4.3.2.3. EXT-X-DISCONTINUITY
#EXT-X-DISCONTINUITY
o file format
o timestamp sequence
o encoding sequence
See Sections 3, 6.2.1, and 6.3.3 for more information about the EXT-
X-DISCONTINUITY tag.
4.3.2.4. EXT-X-KEY
#EXT-X-KEY:<attribute-list>
METHOD
media encoding and the media format of the segment. fMP4 Media
Segments are encrypted using the 'cbcs' scheme of Common
Encryption [COMMON_ENC]. Encryption of other Media Segment
formats containing H.264 [H_264], AAC [ISO_14496], AC-3 [AC_3],
and Enhanced AC-3 [AC_3] media streams is described in the HTTP
Live Streaming (HLS) Sample Encryption specification [SampleEnc].
The IV attribute MAY be present; see Section 5.2.
URI
IV
KEYFORMAT
KEYFORMATVERSIONS
If the Media Playlist file does not contain an EXT-X-KEY tag, then
Media Segments are not encrypted.
See Section 5 for the format of the Key file and Sections 5.2, 6.2.3,
and 6.3.6 for additional information on Media Segment encryption.
4.3.2.5. EXT-X-MAP
URI
BYTERANGE
Use of the EXT-X-MAP tag in a Media Playlist that contains the EXT-
X-I-FRAMES-ONLY tag REQUIRES a compatibility version number of 5 or
greater. Use of the EXT-X-MAP tag in a Media Playlist that DOES NOT
contain the EXT-X-I-FRAMES-ONLY tag REQUIRES a compatibility version
number of 6 or greater.
4.3.2.6. EXT-X-PROGRAM-DATE-TIME
#EXT-X-PROGRAM-DATE-TIME:<date-time-msec>
For example:
#EXT-X-PROGRAM-DATE-TIME:2010-02-19T14:54:23.031+08:00
See Sections 6.2.1 and 6.3.3 for more information on the EXT-X-
PROGRAM-DATE-TIME tag.
4.3.2.7. EXT-X-DATERANGE
#EXT-X-DATERANGE:<attribute-list>
ID
CLASS
START-DATE
END-DATE
DURATION
PLANNED-DURATION
X-<client-attribute>
END-ON-NEXT
If the actual end date and time is not known when an SCTE35-OUT
attribute is added to the Playlist, the DURATION attribute and 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
been established.
4.3.3.1. EXT-X-TARGETDURATION
#EXT-X-TARGETDURATION:<s>
4.3.3.2. EXT-X-MEDIA-SEQUENCE
#EXT-X-MEDIA-SEQUENCE:<number>
See Sections 6.2.1 and 6.3.5 for more information on setting the EXT-
X-MEDIA-SEQUENCE tag.
4.3.3.3. EXT-X-DISCONTINUITY-SEQUENCE
#EXT-X-DISCONTINUITY-SEQUENCE:<number>
See Sections 6.2.1 and 6.2.2 for more information about setting the
value of the EXT-X-DISCONTINUITY-SEQUENCE tag.
4.3.3.4. EXT-X-ENDLIST
#EXT-X-ENDLIST
4.3.3.5. EXT-X-PLAYLIST-TYPE
#EXT-X-PLAYLIST-TYPE:<type-enum>
4.3.3.6. EXT-X-I-FRAMES-ONLY
#EXT-X-I-FRAMES-ONLY
4.3.4.1. EXT-X-MEDIA
#EXT-X-MEDIA:<attribute-list>
TYPE
GROUP-ID
LANGUAGE
ASSOC-LANGUAGE
NAME
DEFAULT
AUTOSELECT
FORCED
INSTREAM-ID
The values "CC1", "CC2", "CC3", and "CC4" identify a Line 21 Data
Services channel [CEA608]. The "SERVICE" values identify a
Digital Television Closed Captioning [CEA708] service block
number.
For all other TYPE values, the INSTREAM-ID MUST NOT be specified.
CHARACTERISTICS
CHANNELS
A set of one or more EXT-X-MEDIA tags with the same GROUP-ID value
and the same TYPE value defines a Group of Renditions. Each member
of the Group MUST be an alternative Rendition of the same content;
otherwise, playback errors can occur.
o All EXT-X-MEDIA tags in the same Group MUST have different NAME
attributes.
o A Group MUST NOT have more than one member with a DEFAULT
attribute of YES.
4.3.4.2. EXT-X-STREAM-INF
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
line is REQUIRED. Clients that do not support multiple video
Renditions SHOULD play this Rendition.
#EXT-X-STREAM-INF:<attribute-list>
<URI>
BANDWIDTH
CODECS
RESOLUTION
FRAME-RATE
HDCP-LEVEL
AUDIO
VIDEO
SUBTITLES
The URI attribute of the EXT-X-MEDIA tag MUST NOT be included if the
media type is CLOSED-CAPTIONS.
4.3.4.3. EXT-X-I-FRAME-STREAM-INF
#EXT-X-I-FRAME-STREAM-INF:<attribute-list>
URI
4.3.4.4. EXT-X-SESSION-DATA
#EXT-X-SESSION-DATA:<attribute-list>
DATA-ID
VALUE
URI
LANGUAGE
4.3.4.5. EXT-X-SESSION-KEY
#EXT-X-SESSION-KEY:<attribute-list>
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
METHOD attribute MUST NOT be NONE. If an EXT-X-SESSION-KEY is used,
the values of the METHOD, KEYFORMAT, and KEYFORMATVERSIONS attributes
MUST match any EXT-X-KEY with the same URI value.
These tags MUST NOT appear more than once in a Playlist. If a tag
appears more than once, clients MUST fail to parse the Playlist.
4.3.5.1. EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-INDEPENDENT-SEGMENTS
4.3.5.2. EXT-X-START
#EXT-X-START:<attribute-list>
TIME-OFFSET
If the Playlist does not contain the EXT-X-ENDLIST tag, the TIME-
OFFSET SHOULD NOT be within three target durations of the end of
the Playlist file.
PRECISE
5. Key Files
6.1. Introduction
This section describes how the server generates the Playlist and
Media Segments and how the client should download them for playback.
The server MUST divide the source media into individual Media
Segments whose duration is less than or equal to a constant target
duration. Segments that are longer than the planned target duration
can trigger playback stalls and other errors.
The server SHOULD attempt to divide the source media at points that
support effective decode of individual Media Segments, e.g., on
packet and key frame boundaries.
The server MUST create a URI for every Media Segment that enables its
clients to obtain the segment data. If a server supports partial
loading of resources (e.g., via HTTP Range requests), it MAY specify
segments as sub-ranges of larger resources using the EXT-X-BYTERANGE
tag.
Changes to the Playlist file MUST be made atomically from the point
of view of the clients, or playback errors MAY occur.
The server MUST NOT change the Media Playlist file, except to:
Playlist changes other than those allowed here can trigger playback
errors and inconsistent client behavior.
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
defines an informative mapping of the (wall-clock) date and time
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
purposes. If a server provides this mapping, it SHOULD apply an EXT-
X-PROGRAM-DATE-TIME tag to every segment that has an EXT-
X-DISCONTINUITY tag applied to it.
Media Segments MUST be removed from the Playlist file in the order
that they appear in the Playlist; otherwise, client playback can
malfunction.
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
duration is less than three times the target duration. Doing so can
trigger playback stalls.
When the server removes a Media Segment URI from the Playlist, the
corresponding Media Segment MUST remain available to clients for a
period of time equal to the duration of the segment plus the duration
of the longest Playlist file distributed by the server containing
that segment. Removing a Media Segment earlier than that can
interrupt in-progress playback.
The server MAY set the HTTP Expires header in the key response to
indicate the duration for which the key can be cached.
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
Section 4.3.2.4 SHALL be applied to individual Media Segments.
The server MUST NOT remove an EXT-X-KEY tag from the Playlist file if
it applies to any Media Segment in the Playlist file, or clients who
subsequently load that Playlist will be unable to decrypt those Media
Segments.
The server MUST meet the following constraints when producing Variant
Streams in order to allow clients to switch between them seamlessly:
o Each Media Playlist in each Variant Stream MUST have the same
target duration. The only exceptions are SUBTITLES Renditions and
Media Playlists containing an EXT-X-I-FRAMES-ONLY tag, which MAY
have different target durations if they have an EXT-X-PLAYLIST-
TYPE of VOD.
o Each Variant Stream MUST contain the same set of Date Ranges, each
one identified by an EXT-X-DATERANGE tag(s) with the same ID
attribute value and containing the same set of attribute/value
pairs.
How the client obtains the URI to the Playlist file is outside the
scope of this document; it is presumed to have done so.
The client obtains the Playlist file from the URI. If the Playlist
file so obtained is a Master Playlist, the client can select a
Variant Stream to load from the Master Playlist.
Clients MUST ensure that loaded Playlists comply with Section 4 and
that the EXT-X-VERSION tag, if present, specifies a protocol version
supported by the client; if either check fails, the client MUST NOT
attempt to use the Playlist, or unintended behavior could occur.
A client MUST NOT assume that segments with the same Media Sequence
Number in different Variant Streams or Renditions have the same
position in the presentation; Playlists MAY have independent Media
Sequence Numbers. Instead, a client MUST use the relative position
of each segment on the Playlist timeline and its Discontinuity
Sequence Number to locate corresponding segments.
The client SHALL choose which Media Segment to play first from the
Media Playlist when playback starts. If the EXT-X-ENDLIST tag is not
present and the client intends to play the media normally, the client
SHOULD NOT choose a segment that starts less than three target
durations from the end of the Playlist file. Doing so can trigger
playback stalls.
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
playback.
However, the client MUST NOT attempt to reload the Playlist file more
frequently than specified by this section, in order to limit the
collective load on the server.
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
was loaded, the client MUST wait for at least the target duration
before attempting to reload the Playlist file again, measured from
the last time the client began loading the Playlist file.
If the client reloads a Playlist file and finds that it has not
changed, then it MUST wait for a period of one-half the target
duration before retrying.
After reloading a Media Playlist, the client SHOULD verify that each
Media Segment in it has the same URI (and byte range, if specified)
as the Media Segment with the same Media Sequence Number in the
previous Media Playlist. It SHOULD halt playback if it does not, as
this normally indicates a server error.
In order to reduce server load, the client SHOULD NOT reload the
Playlist files of Variant Streams or alternate Renditions that are
not currently being played. If it decides to switch playback to a
different Variant Stream, it SHOULD stop reloading the Playlist of
the old Variant Stream and begin loading the Playlist of the new
Variant Stream. It can use the EXTINF durations and the constraints
in Section 6.2.4 to determine the approximate location of
corresponding media. Once media from the new Variant Stream has been
loaded, the timestamps in the Media Segments can be used to
synchronize the old and new timelines precisely.
The client MUST examine the Media Playlist file every time it is
loaded or reloaded to determine the next Media Segment to load, as
the set of available media MAY have changed.
The first segment to load is generally the segment that the client
has chosen to play first (see Section 6.3.3).
A client MUST NOT attempt to decrypt any segments whose EXT-X-KEY tag
has a METHOD attribute that it does not recognize.
The widened byte range can then be loaded and decrypted with AES-128
CBC using an arbitrary IV. The number of bytes added to the
beginning and the end of the original byte range are discarded from
the decrypted bytes; what remains is the decrypted I-frame.
o The EXT-X-MAP tag in a Media Playlist that does not contain EXT-
X-I-FRAMES-ONLY.
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
1, but playback on older clients may not be desirable. A server MAY
consider indicating an EXT-X-VERSION of 4 or higher in the Master
Playlist but is not required to do so.
8. Playlist Examples
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:3
#EXTINF:9.009,
http://media.example.com/first.ts
#EXTINF:9.009,
http://media.example.com/second.ts
#EXTINF:3.003,
http://media.example.com/third.ts
#EXT-X-ENDLIST
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:8
#EXT-X-MEDIA-SEQUENCE:2680
#EXTINF:7.975,
https://priv.example.com/fileSequence2680.ts
#EXTINF:7.941,
https://priv.example.com/fileSequence2681.ts
#EXTINF:7.975,
https://priv.example.com/fileSequence2682.ts
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:7794
#EXT-X-TARGETDURATION:15
#EXT-X-KEY:METHOD=AES-128,URI="https://priv.example.com/key.php?r=52"
#EXTINF:2.833,
http://media.example.com/fileSequence52-A.ts
#EXTINF:15.0,
http://media.example.com/fileSequence52-B.ts
#EXTINF:13.333,
http://media.example.com/fileSequence52-C.ts
#EXT-X-KEY:METHOD=AES-128,URI="https://priv.example.com/key.php?r=53"
#EXTINF:15.0,
http://media.example.com/fileSequence53-A.ts
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=1280000,AVERAGE-BANDWIDTH=1000000
http://example.com/low.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2560000,AVERAGE-BANDWIDTH=2000000
http://example.com/mid.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=7680000,AVERAGE-BANDWIDTH=6000000
http://example.com/hi.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=65000,CODECS="mp4a.40.5"
http://example.com/audio-only.m3u8
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=1280000
low/audio-video.m3u8
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=86000,URI="low/iframe.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=2560000
mid/audio-video.m3u8
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=150000,URI="mid/iframe.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=7680000
hi/audio-video.m3u8
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=550000,URI="hi/iframe.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=65000,CODECS="mp4a.40.5"
audio-only.m3u8
In this example, the CODECS attributes have been condensed for space.
A '\' is used to indicate that the tag continues on the following
line with whitespace removed:
#EXTM3U
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="English", \
DEFAULT=YES,AUTOSELECT=YES,LANGUAGE="en", \
URI="main/english-audio.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="Deutsch", \
DEFAULT=NO,AUTOSELECT=YES,LANGUAGE="de", \
URI="main/german-audio.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="Commentary", \
DEFAULT=NO,AUTOSELECT=NO,LANGUAGE="en", \
URI="commentary/audio-only.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=1280000,CODECS="...",AUDIO="aac"
low/video-only.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2560000,CODECS="...",AUDIO="aac"
mid/video-only.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=7680000,CODECS="...",AUDIO="aac"
hi/video-only.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=65000,CODECS="mp4a.40.5",AUDIO="aac"
main/english-audio.m3u8
In this example, the CODECS attributes have been condensed for space.
A '\' is used to indicate that the tag continues on the following
line with whitespace removed:
#EXTM3U
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="low",NAME="Main", \
DEFAULT=YES,URI="low/main/audio-video.m3u8"
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="low",NAME="Centerfield", \
DEFAULT=NO,URI="low/centerfield/audio-video.m3u8"
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="low",NAME="Dugout", \
DEFAULT=NO,URI="low/dugout/audio-video.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=1280000,CODECS="...",VIDEO="low"
low/main/audio-video.m3u8
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="mid",NAME="Main", \
DEFAULT=YES,URI="mid/main/audio-video.m3u8"
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="mid",NAME="Centerfield", \
DEFAULT=NO,URI="mid/centerfield/audio-video.m3u8"
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="mid",NAME="Dugout", \
DEFAULT=NO,URI="mid/dugout/audio-video.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=2560000,CODECS="...",VIDEO="mid"
mid/main/audio-video.m3u8
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="hi",NAME="Main", \
DEFAULT=YES,URI="hi/main/audio-video.m3u8"
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="hi",NAME="Centerfield", \
DEFAULT=NO,URI="hi/centerfield/audio-video.m3u8"
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="hi",NAME="Dugout", \
DEFAULT=NO,URI="hi/dugout/audio-video.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=7680000,CODECS="...",VIDEO="hi"
hi/main/audio-video.m3u8
#EXT-X-SESSION-DATA:DATA-ID="com.example.lyrics",URI="lyrics.json"
#EXT-X-SESSION-DATA:DATA-ID="com.example.title",LANGUAGE="en", \
VALUE="This is an example"
#EXT-X-SESSION-DATA:DATA-ID="com.example.title",LANGUAGE="es", \
VALUE="Este es un ejemplo"
CHARACTERISTICS=
"public.accessibility.transcribes-spoken-dialog,public.easy-to-read"
#EXTM3U
...
#EXT-X-DATERANGE:ID="splice-6FFFFFF0",START-DATE="2014-03-05T11:
15:00Z",PLANNED-DURATION=59.993,SCTE35-OUT=0xFC002F0000000000FF0
00014056FFFFFF000E011622DCAFF000052636200000000000A0008029896F50
000008700000000
#EXT-X-DATERANGE:ID="splice-6FFFFFF0",DURATION=59.993,SCTE35-IN=
0xFC002A0000000000FF00000F056FFFFFF000401162802E6100000000000A00
08029896F50000008700000000
...
9. IANA Considerations
Additional information:
Since the protocol generally uses HTTP to transfer data, most of the
same security considerations apply. See Section 15 of HTTP
[RFC7230].
Playlist files contain URIs, which clients will use to make network
requests of arbitrary entities. Clients SHOULD range-check responses
to prevent buffer overflows. See also the Security Considerations
section of "Uniform Resource Identifier (URI): Generic Syntax"
[RFC3986].
Apart from URL resolution, this format does not employ any form of
active content.
11. References
[COMMON_ENC]
International Organization for Standardization,
"Information technology -- MPEG systems technologies --
Part 7: Common encryption in ISO base media file format
files", ISO/IEC 23001-7:2016, February 2016,
<http://www.iso.org/iso/
catalogue_detail.htm?csnumber=68042>.
[ISO_13818]
International Organization for Standardization, "Generic
coding of moving pictures and associated audio
information", ISO/IEC International Standard 13818,
October 2007,
<http://www.iso.org/iso/catalogue_detail?csnumber=44169>.
[ISO_13818_3]
International Organization for Standardization, "ISO/IEC
International Standard 13818-3:1998; Generic coding of
moving pictures and associated audio information - Part 3:
Audio", April 1998,
<http://www.iso.org/iso/home/store/catalogue_tc/
catalogue_detail.htm?csnumber=26797>.
[ISO_13818_7]
International Organization for Standardization, "Generic
coding of moving pictures and associated audio information
- Part 7: Advanced Audio Coding (AAC)", ISO/IEC
International Standard 13818-3:2006, January 2006,
<http://www.iso.org/iso/home/store/catalogue_tc/
catalogue_detail.htm?csnumber=43345>.
[ISO_14496]
International Organization for Standardization,
"Information technology -- Coding of audio-visual objects
-- Part 3: Audio", ISO/IEC 14496-3:2009, 2009,
<http://www.iso.org/iso/catalogue_detail?csnumber=53943>.
[RFC5646] Phillips, A., Ed. and M. Davis, Ed., "Tags for Identifying
Languages", BCP 47, RFC 5646, DOI 10.17487/RFC5646,
September 2009, <https://www.rfc-editor.org/info/rfc5646>.
[RFC6381] Gellens, R., Singer, D., and P. Frojdh, "The 'Codecs' and
'Profiles' Parameters for "Bucket" Media Types", RFC 6381,
DOI 10.17487/RFC6381, August 2011,
<https://www.rfc-editor.org/info/rfc6381>.
[RFC7159] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data
Interchange Format", RFC 7159, DOI 10.17487/RFC7159, March
2014, <https://www.rfc-editor.org/info/rfc7159>.
[WebVTT] World Wide Web Consortium (W3C), "WebVTT: The Web Video
Text Tracks Format", Draft Community Group Report, June
2017, <http://dev.w3.org/html5/webvtt/>.
Contributors
Authors' Addresses
Email: http-live-streaming-review@group.apple.com
Email: bill.may@mlb.com