HTTP Live Streaming


HTTP Live Streaming is an HTTP-based adaptive bitrate streaming communications protocol developed by Apple Inc. and released in 2009. Support for the protocol is widespread in media players, web browsers, mobile devices, and streaming media servers. As of 2019, an annual video industry survey has consistently found it to be the most popular streaming format.
HLS resembles MPEG-DASH in that it works by breaking the overall stream into a sequence of small HTTP-based file downloads, each downloading one short chunk of an overall potentially unbounded transport stream. A list of available streams, encoded at different bit rates, is sent to the client using an extended M3U playlist.
Based on 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 and delivered over widely available HTTP-based content delivery networks. The standard also includes a standard encryption mechanism and secure-key distribution using HTTPS, 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.
Apple has documented HTTP Live Streaming as an Internet Draft, the first stage in the process of publishing it as a Request for Comments. As of December 2015, the authors of that document have requested the RFC Independent Stream Editor to publish the document as an informational RFC outside of the IETF consensus process.
In August 2017, RFC8216 was published to describe version 7 of the protocol.

Architecture

HTTP Live Streaming uses a conventional web server to distribute audiovisual content and requires specific software. The service architecture comprises:
;Server
;Distributor
;Client

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.

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.

Low Latency HLS

Two unrelated HLS extensions with a "Low Latency" name and corresponding acronym exist:
The remainder of this section describes Apple's ALHLS. It reduces the glass-to-glass delay when streaming via HLS by reducing the time to start live stream playbacks and maintain that time during a live streaming event.
It works by adding partial media segment files into the mix, much like MPEG-CMAF's fMP4. Unlike CMAF, ALHLS also supports partial MPEG-2 TS transport files.
HTTP/2 is required to push the segments along with the playlist, reducing the overhead of establishing repeated HTTP/TCP connections.
Other features include:
Apple also added new tools: "tsrecompressor" produces and encodes a continuous low latency stream of audio and video. The "mediastreamsegmenter" tool is now available in a low latency version. It is a HLS segmenter which takes in an UDP/MPEG-TS stream from tsrecompressor and generates a media playlist, including the new tags above.
Support for low-latency HLS is available in tvOS 13 beta, but not iOS & iPadOS 13 beta.
On April 30, 2020, Apple added the low latency specifications to the second edition of the main HLS specification.

Dynamic ad insertion

Dynamic ad insertion is supported in the HLS using splice information based on SCTE-35 specification. The SCTE-35 splice message is inserted on the media playlist file using the EXT-X-DATERANGE tag. Each SCTE-35 splice_info_section is represented by an EXT-X-DATERANGE tag with a SCTE35-CMD attribute. A SCTE-35 splice out/in pair signaled by the splice_insert commands are represented by one or more EXT-X-DATERANGE tags carrying the same ID attribute. The SCTE-35 splice out command should have the SCTE35-OUT attribute and the splice in command should have the SCTE35-IN attribute.
Between the two EXT-X-DATERANGE tags that contain the SCTE35-OUT and SCTE35-IN attributes respectively there may be a sequence of media segment URIs. These media segments normally represent ad programs which can be replaced by the local or customized ad. The ad replacement does not require the replacement of the media files, only the URIs in the playlist need to be changed to point different ad programs. The ad replacement can be done on the origin server or on the client’s media playing device.

Server implementations

Notable server implementations supporting HTTP Live Streaming include:
HTTP Live Streaming is natively supported in the following operating systems:
ClientPlatformLive StreamingDRMAs of VersionEditor
Safari macOS, iOS6.0+

Has full HLS support.

Apple
Microsoft Edge Windows 10EdgeHTML 12+Microsoft
Google Chrome / ChromiumWindows, macOS, Linux, Android, iOS30+

Android and iOS have native OS support.

Other platforms require Media Source Extensions.

Google
Firefox Windows, macOS, Linux, Android, iOS50.0+ for Android and 57.0 for others, 59.0 has enhanced support for Android

Other platforms require Media Source Extensions.

Mozilla
QuickTime Player macOS10.0+

Has full HLS support.

Apple
iTunes Windows, macOS10.1+

Has full HLS support.

To play a HLS stream, go to File > Open Stream and replace "http://" with "itls://" or "itals://" in the stream URL.

Apple
StreamS HiFi Radio iOS, tvOS

iPhone, iPad, and AppleTV

7.3+

Plays Internet Radio Streams

HLS Audio - 100% Compliant
AAC-LC/HE-AAC/xHE-AAC 2.0 Stereo/5.1-7.1 Surround
ES - Elementary Stream ADTS
fMP4 - Fragmented ISO MP4
Displays Synchronous Realtime Metadata and Graphics

StreamS/Modulation Index LLC
VLC media player Windows, macOS, Linux, Android, iOS, Windows PhoneVLC 2.x has partial support up to HLS version 3.

VLC 3.0 has full HLS support.

VideoLAN
Media Player Classic Home Cinema WindowsGabest, Doom9 forum users
PotPlayer WindowsDaum Communications
MPlayer / SMPlayer / mpv Windows, macOS, Linux, BSDRicardo Villalba
GOM Player WindowsGretech
Cameleon Windows, macOSYatko
Audacious Windows, LinuxAudacious
Radio Tray LinuxCarlos Ribeiro
Kodi Windows, macOS, Linux, Android, iOS12.0 Alpha 5 and later
DRM support requires a monthly/nightly build
XBMC Foundation
MythTV Windows, macOS, Linux, FreeBSD0.26MythTV
JRiver Media Center Windows, macOSJRiver
XiiaLive Android, iOS3.0+
Plays internet radio streams.
Visual Blasters LLC
Tunein radio Android, iOS3.3+
Plays internet radio streams.
TuneIn
myTuner Radio Android, iOS, Windows Phone, Windows 8, macOSPlays internet radio streams.AppGeneration Software
Internet Radio Player AndroidPlays internet radio streams.MuserTech
GuguRadio iOSPlays internet radio streams.Leon Fan
AIMP Windows, Android4.10+
Plays internet radio streams.
Artem Izmaylov
Mini Stream Player AndroidJogiApp
MX Player AndroidJ2 Interactive
TV Streams macOS, iOS, tvOSv7.1Tiago Martinho
HP TouchpadWebOS3.0.5HP
Amino x4x STBAmino set-top boxes2.5.2 AminetAminocom.com
Dune HD TVDune HD set-top boxesTV Seriesdunehd.com
CTU Systems LtdCTU Systems Ltd Eludo Play Out SystemTV Seriesctusystems.com
nangu.TVMotorola set-top boxes2.0nangu.TV
Roku Digital Video PlayerRoku set-top boxesRoku OS / SDK 2.6Roku
Telebreeze PlayerHTML, Android, iOS, Windows, MacOS, Roku, MAG Infomir, Samsung Tizen, LG WebOS, Google Chromecast, tvOS, Amazon Fire TV, AndroidTVTelebreeze
bitdash HTML5 or Flash, Web and MobileVersion 3.0+bitmovin
3ivx Windows 8, Windows Phone 8 & Xbox One2.03ivx
THEOplayerHTML5, SDK THEO Technologies
Viblast Player HTML5, iOS, AndroidViblast Ltd
Flowplayer Adobe Flash, iOS, Android, HTML5 The Flash HLS plugin is available from GitHub.Flowplayer Ltd
JW Player Adobe Flash, iOS, Android, HTML5HLS is provided in all JW Player versions as of JW8 JW Player
Radiant Media Player Adobe Flash, HTML51.5.0Radiant Media Player
Yospace Adobe Flash2.1Yospace
Onlinelib Adobe Flash2.0Onlinelib.de
VODOBOX HLS Player Adobe Flash, HTML5, iOS, AndroidVodobox
NexPlayer HTML5, Android, iOS, Chromecast, Windows, Mac, Linux, Tizen, WebOSNexStreaming
ffplay/avplay FFmpeg/Libav
GPAC 0.5.0Telecom ParisTech inc.
QuickPlayer Android, iOS, Windows 7, 8, 8,1 and 10Squadeo
hls.js MSE BrowsersDaily Motion open source
hasplayer.js MSE Browsersopen source
Hola Player HTML5, Adobe Flash, iOS, AndroidAll versionsHola Ltd open source
Shaka Player HTML5 2.1Open Source
Fluid Player HTML5 2.2.0+Fluid Player OSS
Video.jsMSE Browsers. Flash with flashls source handler fallback.Open source

Servers

ProductTechnologyAs Of VersionEditorFreeNotes
ANEVIA Genova LiveBundled software for transcoding to H.264 & HEVC, and packaging to HLS, MPEG-DASH, MS Smooth StreamingAnevia
AvProxyLight software for live streaming
Input and output streams : HTTP, HLS/AES-128, UDP, RTP, MPTS demux
2.19Proprietary but free for use
bitcodinSaaSbitmovin
VLC1.2
Video CloudSaaSBrightcove
IIS Media Services4.0Microsoft
Antik Media StreamerIngest Module, Stream replication UDP/HTTP, HLS streaming, Video archive with snapshots, Server-side Timeshift, time zone shifting with multiple time zones, Stream Encryption using AES and key-rotation 3.0Antik technology
Adobe Media ServerLive and VOD streaming as origin and edge server5.0Adobe
Evostream Media ServerCross-platform including embedded systems such as encoders, IP cameras, DVRs, and more. Supports: Adobe Flash RTMP, RTMPS, LiveFLV, full transcoder for creating lower bitrate streams, HTTP Live Streaming for streaming to iPhones, iPads and Androids, HTTP Dynamic Streaming for Adobe Air, Microsoft Smooth Streaming for Microsoft devices, RTSP with RTP or MPEG-TS, MPEG-TS, compatible Live Encoding, strong security for your content, built-in clustering mechanism and more.1.6.5EvoStream
MythTV0.25MythTV
MACNETIX VOD-Server3.0MACNETIX
Anevia NEA Live ServersTranscapsulation: from one input, several outputs
Anevia
Packet Ship OverView:Origin ServerCapture from IPTV multicast and chunking to HLS for multi-bandwidth live streams, with AES encryption2.1Packet Ship
nangu.TV Streamerson-the-fly adaptation: content is stored once enabling several outputs
nangu.TV
TVersity Media Server1.9TVersityPro Edition only
Helix Universal ServerLive + VOD HLS with Verimatrix DRM integration, ABR, Multi-Resolution, AES encryption15.0+RealNetworksHigh performance HLS
Wowza Streaming EngineLive and VOD streaming as origin and edge server with DVR, DRM Integration and Transcoding for adaptive delivery. Outputs to MPEG-DASH, HLS, HDS, Smooth Streaming, RTMP, and RTSP. Supports Apple Low Latency HLS.2.0+Wowza Media Systems
Unified Streaming PlatformMuxes media content from one unified source to multiple outputs Unified Streaming
VODOBOX Live ServerOutputs HTTP Live Streaming with Adaptive bitrate streaming.
Video codecs : AVC H.264 / HEVC H.265
Audio codecs : MP3 / AAC
Transport layers : HTTP / FTP / Amazon AWS S3 / Microsoft Azure Web Storage / writing to disk
Hostings : internal HTTP Web server and/or external Web servers
1.0VodoboxSupports input live streams from DVB-T devices, satellite receivers, IP streams, Microsoft DirectShow drivers. Encoder is compliant with Intel Quick Sync Video and Nvidia NVENC hardware acceleration.
Flixwagon Platform Video ServerFlixwagon
StreamCoder Live EncoderRealtime video encoder. Supports multi-bitrates and multi-languagesEktacom
Apache HTTP ServerApache Software Foundation
Unreal Media Server9.5Unreal Streaming TechnologiesLatency of live streams can be as low as 2.5 seconds over the Internet
Nimble StreamerRTMP / RTSP / Icecast / MPEG-TS to ABR HLS. MP4 / MP3 to VOD HLS. Apple Low Latency HLS spec is supported.1.0.0-xWMSPanel
Nginx-rtmp-moduleFree module for nginx server with support of HLS live streaming. Compliant with iOS and Android.0.9.xRoman Arutyunyan
Nginx PlusVOD HLS as originNGINX, Inc.
Flussonic Media ServerMulti-platform support for HTTP, RTSP, RTMP, DASH, Time Shifting, DVR Functions with Unlimited Rewind Capabilities HLS streaming specific to iOS platform support.3.0+Flussonic, LLC.Supporting a magnitude of features with full HTTP support.
VBrick Distributed Media Engine 2.0VBrick Systems, Inc.Live and stored HLS. Live can be transmuxed from several input mux including RTP, RTMP, and MPEG-TS using H.264 encoding
Telebreeze Coder / Media ServerInput streams / interfaces: UDP, TCP, RTP, HLS, HTTP, RTMP
Output Streams: HLS, HTTP, UDP
Preprocessing: Resize, Deinterlace, Frame Rate Conversion, Audio Resampling, Logo Rendering
Telebreeze
LEADTOOLS Media Streaming Server SDKConverts files on the fly to Adobe HDS, Apple HLS, MPEG-DASH, Microsoft Smooth Streaming, RTSP.19.0LEAD Technologies
MC-ROUTEMultifunctional software for live stream routing and protocol conversion4.4TeracueSupported protocols: TS over UDP, RTP, TCP, HLS, HTTP, RTSP/RTP
Direkt routerLive hardware decoder with SDI, NDI out and transcoding4.1IntinorSupported protocols in: TS over UDP, RTP, TCP, HLS, HTTP, RTMP out: UDP, RTP, TCP, RTMP
Elecard CodecWorksProfessional platform for real-time encoding and transcoding into HEVC/H.265, AVC/H.264 and MPEG-2 video supporting adaptive bitrate streaming via HLS and MPEG-DASH protocols.4.6ElecardSupported protocols: TS over UDP/RTP/SRT, RTMP Output, HLS, MPEG-DASH output, UDP/RTP/SRT, NDI

Live Encoders

VOD encoders