Filename extension .m3u8 Initial release May 2009 | Developed by Apple Inc. Extended from extended M3U | |
![]() | ||
Internet media type application/vnd.apple.mpegurl |
HTTP Live Streaming (also known as HLS) is an HTTP-based media streaming communications protocol implemented by Apple Inc. as part of its QuickTime, Safari, OS X, and iOS software. It resembles MPEG-DASH in that it works by breaking the overall stream into a sequence of small HTTP-based file downloads, each download loading one short chunk of an overall potentially unbounded transport stream. As the stream is played, the client may select from a number of different alternate streams containing the same material encoded at a variety of data rates, allowing the streaming session to adapt to the available data rate. At the start of the streaming session, HLS downloads an extended M3U playlist containing the metadata for the various sub-streams which are available.
Contents
- Architecture
- Features
- Adaptability
- Availability
- Using fragmented MP4
- Server implementations
- Usage
- Supported players and servers
- References
Since its requests use only standard HTTP transactions, HTTP Live Streaming can traverse any firewall or proxy server that lets through standard HTTP traffic, unlike UDP-based protocols such as RTP. This also allows content to be offered from conventional HTTP servers as origin and delivered over widely available HTTP-based content delivery networks.
HLS also specifies a standard encryption mechanism using AES and a method of secure-key distribution using HTTPS with either a device-specific realm login or HTTP cookie which together provide a simple DRM system. Later versions of the protocol also provide for trick-mode fast-forward and rewind and for integration of subtitles. upLynk has also added the AES scrambling and base-64 encoding of the DRM content-key with a 128-bit device-specific key for registered commercial SWF applications together with a sequential initialization Vector for each chunk to its implementation of the standard.
Apple has documented HTTP Live Streaming as an Internet Draft (Individual Submission), the first stage in the process of submitting it to the IETF as an Informational Request for Comments. However, while Apple has submitted occasional minor updates to the draft, no additional steps appear to have been taken towards IETF standardization.
Architecture
HTTP Live Streaming uses a conventional web server to distribute audiovisual content and requires specific software to fit into the proper format transmission in real time. The service architecture comprises:
Features
HTTP Live Streaming provides mechanisms for players to adapt to unreliable network conditions without causing user-visible playback stalling. For example, on an unreliable wireless network, HLS allows the player to use a lower quality video, thus reducing bandwidth usage. HLS videos can be made highly available by providing multiple servers for the same video, allowing the player to swap seamlessly if one of the servers fails.
Adaptability
To enable a player to adapt to the bandwidth of the network, the original video is encoded in several distinct quality levels. The server serves an index, called a "master playlist", of these encodings, called "variant streams". The player can then choose between the variant streams during playback, changing back and forth seamlessly as network conditions change.
Availability
The master playlist can list duplicate variant streams that have the same level of quality but are hosted by different servers. This enables the player to swap to a different server for a given bitrate if one of the servers fails. This grants a degree of high availability to serving streams.
This can be combined with adaptability by listing multiple variant streams for each distinct quality level.
Using fragmented MP4
On WWDC2016 Apple announced the inclusion of byte-range addressing for fragmented MP4 files, or fMP4, allowing content to be played in HLS without the need to multiplex it into MPEG-2 Transport Stream. The industry considered this as a step towards compatibility between HLS and MPEG-DASH.
Server implementations
Usage
Supported players and servers
HTTP Live Streaming is natively supported in the following operating systems: Windows 10 (Microsoft Edge), OS X 10.6+ (Safari and QuickTime), iOS 3.0+ (Safari), and Android 4.1+ (Google Chrome).