Apple HTTP Live Streaming (Apple HLS) is a widely used adaptive HTTP streaming protocol available as IETF Internet Draft. It is mainly targeted towards mobile devices based on iOS such as iPhone, iPad or AppleTV, as well as at OS X desktop computers. Apple’s Internet browser Safari also accepts HLS streams as the source of the HTML5 <Video> tag, unfortunately this only works on Apple systems as well. The lack of broad native platform support is one of the main disadvantages of Apple HLS nowadays, but there are many companies working hard on implementing clients as well as integrating HLS into other platforms and streaming servers. In contrast to the other (MPEG-DASH , Smooth Streaming), Apple HLS was especially designed for mobile environments and can request several segments together to make effective use of the Internet connection. This means that it could request more than one media segment by one HTTP 1.1 GET request, which is comparable to the pipelining feature of HTTP 1.1 and therefore eliminates unnecessary RTTs of several segment requests. These features definitely lead to a more efficient use of the connection.
Apple HLS File Formats
Apple HTTP Live Streaming (Apple HLS) uses M3U8 playlists as a manifest file for their content files, which is an extension of the M3U format used for MP3 playlists. HLS is the only system that uses MPEG-2 Transport Stream (MP2TS) which adds a significant overhead in relation to the audio/video data, instead of MP4 or another ISO Base Media File Format based container. MPEG-2 TS consists of packets with 188 bytes in size, where each packet has headers with a varying size of 4 to 12 bytes. Therefore, the overhead caused by these headers increases proportionally with the segment size, which means that relative overhead does not tend to zero with increasing bitrates. Moreover, each MPEG-2 TS stream consists of several other data beside audio and video, such as Program Association Tables that introduce additional overhead. Additionally, audio and video streams are encapsulated in Packetized Elementary Streams (PES) which introduces an extra overhead per audio sample or video frame.
Manifest – M3U8
Apple HTTP Live Streaming (HLS) uses an M3U8 playlist as its manifest, which is a little bit different to the other approaches, e.g., MPEG-DASH or Microsoft Smooth Streaming that use an XML based manifest. VOD content with one quality can be described through the basic playlist feature, which means that the individual segments URLs are available in the main M3U8. If you want to offer multiple qualities as intended with adaptive multimedia streaming, you will have to use the variant playlist. Typically, a variant of a stream is the quality of the stream in a specific bitrate and/or resolution. Variant playlists are structured in the following in that there is one root M3U8 that references other M3U8s that describe the individual variants (qualities). The root M3U8 will then contain several EXT-X-STREAM-INF tags that indicate that the following URL is referencing another M3U8 playlist. Additionally, the EXT-X-STREAM-INF tag could contain several attributes such as bandwidth, codec, etc. Advertisements are supported in HLS through the EXT-X-DISCONTINUITY tag. This tag indicates a discontinuity in the media stream between the actual media segment and the one that follows. Furthermore, a basic encryption method is also available that allows AES-128 encryption of the media segments. The key server can be signaled in the M3U8 with the EXT-X-KEY tag and the URI attribute.
Generate your own Apple HTTP Live Streaming (Apple HLS) Content
The get started link below offers you a free trial with Bitmovin. With our Cloud Encoding Service and HTML5 Adaptive Streaming Player, you can get up and running with your first Apple HLS in a matter of minutes. Try it now!
Further Readings: