HTTP Live Streaming (HLS) is an HTTP-based streaming protocol defined by Apple, and supported natively by iOS, macOS, and some other platforms. This protocol works by breaking the stream into chunks (usually around 10 seconds) that are downloaded individually by the player. This makes the HLS protocol particularly well suited for mobile applications, as it is more robust in the face of varying network conditions (such as moving between cellular data sources, or when the device switches from wifi to cellular or vice-versa), and therefore less likely to cause re-connects. It is also more efficient from a power usage point of view.
This streaming specification does not document the HLS protocol itself. The official documentation is available here:
http://tools.ietf.org/html/draft-pantos-http-live-streaming.
As most HLS players rely on the OS's native media player, and thus do not receive the additional metadata (i.e. cue points) that are part of the stream, HLS players will usually implement Sideband Metadata as well. See “Sideband Metadata” for additional information.
When streaming over the HLS protocol, additional cue points (of type hls) will be sent to identify individual HLS segments. Refer to the Triton Digital STWCue Metadata Dictionary for details.
Adaptive Streaming
HLS streams can also be configured for adaptive streaming, which offers several variants of the same audio with different encoding settings. Players can switch between these alternate streams depending on network conditions (e.g., switch to a lower bitrate when the network isn't fast enough) or other conditions (e.g., user-controlled "low bandwidth" option, etc.).
Adaptive streams can be identified by the contents of the <media-format> element of the Provisioning Response. When alternate streams are available, they can be identified as follows:
- The trackScheme attribute of the <media-format> element will be audio-adaptive
- Multiple <audio> elements are used to describe the alternative streams
In most cases, the player does not need to do anything special to support adaptive streams.