Article

About the EXT-X-VERSION tag

Find the protocol version that corresponds with the HLS features your app supports.

Overview

The EXT-X-VERSION tag indicates the compatibility version of the Playlist file. This file, its associated media, and its server must comply with all provisions of the IETF Internet-Draft of "HTTP Live Streaming 2nd Edition" (or earlier specifications) describing the protocol version indicated by the tag value. A Playlist file that doesn't contain an EXT-X-VERSION tag must comply with version 1 of this protocol. Support for M3U8 Playlists was introduced with iOS 3.0, Mac OS X 10.6, and Safari 4.

Table 1

Protocol versions and features

EXT-X-VERSION

Features and usage notes

2

IV attribute of the EXT-X-KEY tag

3

Floating-point EXTINF duration values

4

EXT-X-BYTERANGE, EXT-X-I-FRAME-STREAM-INF, EXT-X-I-FRAMES-ONLY, EXT-X-MEDIA, the AUDIO and VIDEO attributes of the EXT-X-STREAM-INF tag

5

KEYFORMAT and KEYFORMATVERSIONS attributes of the EXT-X-KEY tag. The EXT-X-MAP tag. SUBTITLES media type. SAMPLE-AES encryption method EXT-X-KEY

6

CLOSED-CAPTIONS media type. Allow EXT-X-MAP for subtitle playlists

7

EXT-X-SESSION-DATA, EXT-X-SESSION-KEY, EXT-X-DATERANGE, 'SERVICEn' values of INSTREAM-ID, AVERAGE-BANDWIDTH, FRAME-RATE, CHANNELS, and HDCP-LEVEL attributes.

8

EXT-X-GAP, EXT-X-DEFINE, Variable Substitution, VIDEO-RANGE attribute.

The following features aren't backward compatible. Older clients may fail to play the content if you use these features but don't specify the protocol version where they were introduced:

  • You must use at least protocol version 2 if you have IV in EXT-X-KEY.

  • You must use at least protocol version 3 if you have floating point EXTINF duration values.

  • You must use at least protocol version 4 if you have EXT-X-BYTERANGE or EXT-X-IFRAME-ONLY.

  • You must use at least protocol version 5 if you specify the SAMPLE-AES encryption method in EXT-X-KEY, or if you have KEYFORMAT and KEYFORMATVERSIONS attributes in EXT-X-KEY, or if you have EXT-X-MAP.

  • You must use at least protocol version 6 if you have EXT-X-MAP in a Media Playlist that does not contain EXT-X-I-FRAMES-ONLY.

  • You must use at least protocol version 7 if you specify "SERVICE" values for the INSTREAM-ID attribute of EXT-X-MEDIA.

  • You must use at least protocol version 8 if you use variable substitution.

The following tables list the versions of specifications where specific features are described, along with the corresponding iOS release that supports those features.

Table 2

Version and features described in the draft-pantos-http-live-streaming spec

Spec

iOS Version

Notes

00, 01

3.0

Protocol version 1. Initial version.

02

3.1

Added EXT-X-DISCONTINUITY. Changed Content-Type. Added redundant streams.

03, 04

3.2

Protocol version 2. Added EXT-X-VERSION. Added IV attribute to EXT-X-KEY; RESOLUTION attribute to EXT-X-STREAM-INF. Corrected CODECS attribute values.

4.0

Added timed metadata APIs, custom protocols for keys.

05

4.2

Protocol version 3. Added EXTINF floating point durations. Support for CEA-608 Closed captions.

4.3

Added AccessLog & ErrorLog objects to APIs.

06

4.3.2

Added EXT-X-PLAYLIST-TYPE.

07, 08

5.0

Protocol version 4. Added EXT-X-I-FRAMES-ONLY; EXT-S-I-FRAME-STREAM-INF; EXT-X-MEDIA; EXT-X-BYTERANGE. Added AUDIO and VIDEO attributes to EXT-X-STREAM-INF.

09, 10, 11

6.0

Protocol version 5. Added EXT-X-MAP. Added KEYFORMAT and KEYFORMATVERSIONS attributes to EXT-X-KEY; SUBTITLES attribute to EXT-X-STREAM-INF; FORCED and CHARACTERISTICS attributes to EXT-X-MEDIA. Added SUBTITLES value to TYPE attribute of EXT-X-MEDIA; SAMPLE-AES value to METHOD attribute of EXT-X-KEY. Added X-TIMESTAMP-MAP to WebVTT. Added AC-3 support.

12

7.0

Protocol version 6. Added EXT-X-DISCONTINUITY-SEQUENCE; EXT-X-START. Added ASSOC-LANGUAGE and INSTREAM-ID attributes to EXT-X-MEDIA; CLOSED-CAPTIONS attribute to EXT-X-STREAM-INF. Removed PROGRAM-ID attribute of EXT-X-STREAM-INF and EXT-X-I-FRAME-STREAM-INF. Added CLOSED-CAPTIONS value to TYPE attribute of EXT-X-MEDIA. Allow EXT-X-MAP to be used in subtitle playlists.

13

7.1

Added EXT-X-INDEPENDENT-SEGMENTS.

14, 15, 16

8.0

Protocol version 7. Major re-write of spec. Added EXT-X-SESSION-DATA. Removed EXT-X-ALLOW-CACHE. Added AVERAGE-BANDWIDTH attribute to EXT-X-STREAM-INF and EXT-X-I-FRAME-STREAM-INF. Added 'SERVICEn' values to INSTREAM-ID attribute of EXT-X-MEDIA. Added support for Enhanced AC-3. Support for CEA-708 Closed captions.

17, 18

9.0

Added EXT-X-SESSION-KEY. Added FRAME-RATE to EXT-X-STREAM-INF and EXT-X-IFRAME-STREAM-INF. New peak bit-rate calculation.

19

9.3

Added EXT-X-DATERANGE.

20

10.0

Added CHANNELS attribute to EXT-X-MEDIA; HDCP-LEVEL attribute to EXT-X-STREAM-INF and EXT-X-I-FRAME-STREAM-INF. Added fMP4 support.

21, 22, 23

10.3.1

Clarified AUTOSELECT=YES uniqueness. Added mention of CMAF.

Table 3

Version and features described in RFC 8216

Spec

iOS Version

Notes

10.3.1

Wording changes and clarifications.

Table 4

Version and features described in draft-pantos-hls-rfc8216bis

Spec

iOS Version

Notes

00

11.0

Protocol version 8. Added EXT-X-GAP; EXT-X-DEFINE and Variable Substitution. Added VIDEO-RANGE attribute to EXT-X-STREAM-INF and EXT-X-I-FRAME-STREAM-INF. Added TYPE-1 value to HDCP-LEVEL attribute. Support for IMSC1 subtitles.

01

11.0

Clarified the X-TIMESTAMP-MAP for non-MPEG-2 content. Added semantic change for EXT-X-TARGETDURATION tag. Updated the JSON RFC format requirement.

02

12.0

Added second CHANNELS parameter. Added unrecognized CHANNELS parameters guidance.

See Also

Stream Creation

Example Playlists for HTTP Live Streaming

View and compare playlists for different HLS applications.