HTTP Live Streaming (also known as HLS) is an HTTP based adaptive streaming protocol created by Apple as part of their QuickTime X and iPhone software systems. It works by breaking the stream into a sequence of small HTTP-based file downloads, each download loading one short chunk of an overall transport stream. As the stream is played, the client may select from a number of different alternate chunks containing the same content 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, it downloads an extended M3U playlist containing the metadata for the various sub-streams which are available.
The protocol is in the first stage of being submitted to the IETF as a proposed Internet Standard.
HLS is widely supported in streaming servers from vendors like Adobe, Microsoft, RealNetworks, and Wowza, as well as real time transmuxing functions in distribution platforms like those from Akamai. The popularity of iOS devices and this distribution-related technology support has also led to increased support on the player side, most notably from Google in Android 3.0.
Since its requests use only standard HTTP transactions, HTTP Live Streaming is capable of traversing any firewall or proxy server that lets through standard HTTP traffic, unlike UDP-based protocols such as RTP.
Is HLS the same as HTTP Progressive Download?
- No. HTTP Progressive Download simply enables playback of a full video file to start prior to completing the full download of that file. This is done primarily by placing the video’s atom (e.g. “table of contents”) at the beginning of the file.
- HTTP Progressive Download is a very common technique used to emulate a streaming experience today. However, in many ways it is inferior to true adaptive streaming.
- The quality of the file is pre-determined. A user watching from a mobile connection on a 3 inch screen will have the same video as a user watching from a cable modem connection on a 1080p TV at home. The player is unable to dynamically adjust based on the user’s network and screen conditions.
- Security is limited. If a user has access to the URL, they can download and share the entire file. HLS can be implemented to include dynamically changing security tokens with each 10-second clip.