HLS (HTTP Live Streaming)

Related Post

> ストリーミング専用プロトコル > HLS (HTTP Live Streaming)

HTTP Live Streaming (also known as HLS) is an HTTP-based media streaming communications protocol implemented byApple Inc. as part of its QuickTime, Safari, OS X, and iOS software. It is similar to 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, it downloads an extended M3U playlist containing the metadata for the various sub-streams which are available.
HLS Live Stream Examplehttp://fish.schou.me
Since its requests use only standard HTTP transactions, HTTP Live Streaming is capable of traversing any firewall orproxy 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 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 sequentialinitialization 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.

1. 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:

Server

Codify and encapsulate the input video flow in a proper format for the delivery. Then, it is prepared for distribution by segmenting it into different files. In the process of intake, the video is coded and segmented to generate video fragments and index file.

  • Encoder: codify video files in264 format and audio in MP3, HE-AAC or AC-3. This is encapsulated by MPEG-2 Transport Stream to carry it
  • Segmenter: divides the MPEG-2 TS file into fragments of equal length, kept as.ts  It also creates an index file that contains references of the fragmented files, saved as .m3u8


Distributor

Formed by standard web Server, accepts requests from clients and delivers all the resources needed for streaming.

Client

Request and download all the files and resources, assembling them so that they can be presented to the user as a continuous flow video. The client software downloads first the index file through a URL and then the several media files available. The playback software assembles the sequence to allow continued display to the user.

2. Features

HTTP Live Streaming provides mechanisms to provide a scalable and adaptable to network, allowing playback quality in wireless networks with high bandwidth and low quality playback on 3G networks, where the bandwidth is reduced. HTTP Live Streaming also provides protection against errors, generating alternative different flows video to use them if there are any errors in segment.
HLS streams can carry generic ID3 data as a separate pid in the transport stream . ID3 metadata is specified by Apple in separate audio streams for the purposes of synchronisation with video. Timed ID3 metadata in the base streams can be used to carry generic timed metadata with the stream; for example Screen Systems have used ID3 information to reference the time that the frame on the client’s system was encoded, allowing code external to the player to act in sync with the video. The number of players able to export the ID3 information is growing, examples being hls.js, flashls (flash plugin which works with a number of flash players), and JWPlayer (paid version).

3. Scalability

To make the system scalable and adaptable to the bandwidth of the network, the video flow is coded in different qualities. Thus, depending on the bandwidth and transfer network speed, the video will play at different qualities.
To implement this, the system must encode the video in different qualities and generate an index file that contains the locations of the different quality levels.
The client software internally manages the different qualities, making requests to the highest possible quality within the bandwidth of the network. Thus always play the video the highest possible quality, viewing lower quality on 3G networks and highest quality in Wi-Fi broadband.
One issue that can arise by relying on the client-side system is that a user may experience different bitrates throughout the duration of playback. This can be avoided by delaying the responsiveness of the player to changes in client-side bandwidth.

4. Availability

To keep a stream available HLS includes features to recover from outages. To achieve this, multiple flows are listed in the index file for the same quality level. If the client can’t load a flow it tries the next, repeating until either a working flow is found or all flows fail.
This can be combined with scalability by listing multiple flows for each separate quality.

5. 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.

6. Server implementations

  • Adobe Media Serversupports HLS for iOS devices (HLS) and Protected HTTP Live Streaming (PHLS).
  • Akamaisupports HLS for live and on-demand streams.
  • Amazon CloudFrontsupports HLS for on-demand streams.
  • bitmovinprovides the cloud transcoding service bitcodin.com which supports HLS for on-demand and live streaming.
  • CDNetworkssupports HLS for live and on-demand streams.
  • Cisco Systems: Supports full end to end delivery for Live/TSTV/VOD/HLS and Cloud DVR services.
  • EdgeCast Networkssupports cross-device streaming using HLS.
  • Edgeware: Supports full end to end delivery for Live/TSTV/VOD/HLS.
  • Exterity: AvediaStream o7500 Origin Server supports HLS (HTTP Live Streaming)
  • Helix Universal Serverfrom RealNetworks supports iPhone OS 3.0 and later for live and on-demand HTTP Live or On-Demand streaming of H.264 and AAC content to iPhone, iPad and iPod.
  • IIS Media Servicesfrom Microsoft supports live and on-demand Smooth Streaming and HTTP Live Streaming.
  • Keepixo Genova Live does both transcoding to264 & HEVC and packaging to HLS, MPEG-DASH, MS Smooth Streaming
  • Level 3supports HLS live and on-demand streams.
  • Limelight Networkssupports HLS for some accounts.
  • Nginxwith the RTMP Module supports HLS in live mode.
  • Nimble Streamersupports HLS in live and VOD mode.
  • Tata CommunicationsCDN supports HLS for live and on-demand streams.
  • TVersitysupports HLS in conjunction with on-the-fly transcoding for playback of any video content on iOS devices.
  • Unified Originsupports HLS in live and VOD mode.
  • Unreal Media Serversupports low latency HLS as of version 9.5.
  • Ustreamsupports HLS delivery of live broadcasts. The ingested stream is re-transcoded if the original audio and video codec falls outside HLS requirements.
  • VLC Media Playersupports HLS for serving live and on-demand streams as of version 2.0
  • Wowza Streaming Enginefrom Wowza Media Systems supports HLS and encrypted HLS for live (with DVR) and on-demand streaming.

7. Usage

  • Adobe Systemsdemonstrated an update to its Adobe Flash Media Server product supporting HTTP Live Streaming at the NAB Show in April 2011
  • Apple Inc. used this on September 1, 2010 to stream its iPod Keynote event live over the internet, and on October 20, 2010 to stream its ‘Back to the Mac’ Keynote event live over the internet.
  • Googleadded HTTP Live Streaming support in Android Honeycomb and later.
  • Helix Universal Server from RealNetworks supports iPhone OS 3.0 and later for live and on-demand HTTP Live or On-Demand streaming of H.264 and AAC content to iPhone, iPad and iPod initial release April 2010, latest release November 2012
  • flashls is an open-source Adobe Flash/Adobe AIR plugin that provides HTTP Live Streaming support for Chromeless Flash/Air Player, Flowplayer, Video.js, mediaelement.js andOpen Source Media Framework 0
  • HPadded HTTP Live Streaming support in webOS 0.5.
  • Microsoft added support for HTTP Live Streaming in EdgeHTML rendering engine in Windows 10 in 2015
  • Microsoft added support for HTTP Live Streaming in IIS Media Services 4.0.
  • Yospaceadded HTTP Live Streaming support in Yospace HLS Player and SDK for flash version 1.0
  • Sling Mediaadded HTTP Live Streaming support to its Slingboxes and its SlingPlayer apps
  • In 2014/15, theBBC introduced HLS-AAC streams for its live internet radio and on-demand audio services, and supports those streams with its iPlayer Radio
  • js implements HLS in MSE compatible browsers; ability to read ID3 from video pid
  • js implements HLS in MSE compatible browsers

 

8. Clients

Product Platform Live Streaming DRM As of Version Editor
Safari
(web browser)
OS X, iOS Yes Yes 6.0+
Has full HLS support.
Apple
Google Chrome
(web browser)
Windows, OS X, Android, iOS Partial Yes 30+
Supported on Android and iOS. Unsupported on desktop OSes.
Google
Microsoft Edge
(web browser)
Windows 10 Yes Yes Microsoft
QuickTime Player
(media player)
OS X Yes Yes 10.0+
Has full HLS support.
Apple
iTunes
(music player)
Windows, OS X Yes Yes 10.1+
Has full HLS support. To play a HLS stream, go to File > Open Stream and replace “http://” with “itls://” (for video streams) or “itals://” (for audio streams) in the stream URL.
Apple
VLC media player
(media player)
Windows, OS X, Linux, Android, iOS, Windows Phone Partial No 2.0
Has partial HLS support. VLC may load the playlist as individual chunks instead of a gapless live stream for some server configurations. This causes a slight pause or missing audio between each file segment.
VideoLAN
Media Player Classic Home Cinema
(media player)
Windows Yes Yes Gabest, Doom9forum users
PotPlayer
(media player)
Windows Yes Yes Daum Communications
MPlayer /SMPlayer / mpv
(media player)
Windows, Linux Yes Yes Ricardo Villalba
GOM Player
(media player)
Windows Yes Yes Gretech
Audacious (software)
(music player)
Windows, Linux Yes Yes Audacious
Radio Tray
(radio player)
Linux Yes Yes Carlos Ribeiro
Kodi (software)
(home entertainment application)
Windows, OS X, Linux, Android, iOS Yes Partial 12.0 Alpha 5 and later
DRM support requires a monthly/nightly build
XBMC Foundation
MythTV
(home entertainment application)
Windows, OS X, Linux, FreeBSD Yes Yes 0.26 MythTV
JRiver Media Center
(home entertainment application)
Windows, OS X Yes Yes JRiver
XiiaLive
(radio player)
Android, iOS Yes Yes 3.0+
Plays internet radio streams (audio only).
Visual Blasters LLC
Tunein radio
(radio player)
Android, iOS Yes Yes 3.3+
Plays internet radio streams (audio only).
TuneIn
myTuner Radio
(radio player)
Android, iOS, Windows Phone, Windows 8, OS X Yes Yes AppGeneration Software
Internet Radio Player
(radio player)
Android Yes Yes MuserTech
GuguRadio
(radio player)
iOS Yes Yes Leon Fan
MX Player
(media player)
Android, iOS Yes Yes J2 Interactive
RockPlayer
(media player)
Android, iOS Yes Yes Shanghai ChangeTech Co. Ltd.
DicePlayer
(media player)
Android 2.2+ Yes Yes Diceplayer 1.0+ INISOFT
HP Touchpad WebOS Yes Yes 3.0.5 HP
Amino x4x STB Amino set-top boxes Yes Yes 2.5.2 Aminet Aminocom.com
Dune HD TV Dune HD set-top boxes Yes Yes TV Series dunehd.com
nangu.TV Motorola set-top boxes Yes Yes 2.0 nangu.TV
Roku Digital Video Player Roku set-top boxes Yes Yes Roku OS / SDK 2.6 Roku
Telebreeze Player
(online service)
HTML, Android, iOS, Windows, MacOS, Roku STB, MAG250, Samsung SmartTV, LG SmartTV, T503, Enigma Yes Yes 3.2 Telebreeze
bitdash
(SDK)
HTML5 or Flash, Web and Mobile Yes Yes Version 3.0+ bitmovin
3ivx
(SDK)
Windows 8, Windows Phone 8& Xbox One Yes Yes 2.0 3ivx
THEOplayer
(SDK)
HTML5 Yes Yes OpenTelly
Viblast Player
(SDK)
HTML5, iOS, Android Yes Partial Viblast Ltd
Flowplayer
(SDK)
Adobe Flash, iOS, Android Yes Yes The Flash HLS plugin is available from GitHub. Flowplayer Ltd
JW Player
(SDK)
Adobe Flash, iOS, Android Yes Yes A Premium or Enterprise license is required for HLS support. JW Player
Radiant Media Player
(SDK)
Adobe Flash, HTML5 Yes Yes 1.5.0 Radiant Media Player
Yospace
(SDK)
Adobe Flash Yes Yes 2.1 Yospace
Onlinelib
(SDK)
Adobe Flash Yes Yes 2.0 Onlinelib.de
VODOBOX HLS Player
(online service)
Adobe Flash, HTML5, iOS, Android Yes Yes Vodobox
NexPlayer
(SDK)
iOS, Android, Windows Phone Yes Yes NexStreaming
ffplay/avplay
(multimedia framework)
Yes Partial FFmpeg/Libav
GPAC
(multimedia framework)
Yes No 0.5.0 Telecom ParisTech inc.
QuickPlayer
(SDK)
Android, iOS, Windows 7, 8, 8,1 and 10 Yes Yes Squadeo
hls.js
(MSE)
MSE Browsers Yes Unknown Daily Motion open source
hasplayer.js
(MSE)
MSE Browsers Yes Unknown open source
Hola Player
(video player)
HTML5, Adobe Flash, iOS, Android Yes Yes All versions Hola Ltd open source

9. Servers

Product Technology As Of Version Editor Free Notes
Keepixo Genova Live Bundled software for transcoding to H.264 & HEVC, and packaging to HLS, MPEG-DASH, MS Smooth Streaming Keepixo No
bitcodin SaaS bitmovin No
VLC 1.2 Yes
Unicorn Once SaaS Unicorn Media No
IIS Media Services 4.0 Microsoft No
Antik Media Streamer Ingest Module (UDP/HTTP Transport Stream, Backup Stream with auto-switching, stream status monitoring and logging), Stream replication UDP/HTTP, HLS streaming, Video archive with snapshots, Server-side Timeshift, Timezone Shifting with multi-timezones, Stream Encryption using AES and key-rotation (with Antik Key Server) 3.0 Antik technology No
Adobe Media Server Live and VOD streaming as origin and edge server 5.0 Adobe No
Evostream Media Server Cross-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 (HLS) for streaming to iPhones, iPads and Androids, HTTP Dynamic Streaming (HDS) for Adobe Air, Microsoft Smooth Streaming (MSS) for Microsoft devices, RTSP with RTP or MPEG-TS, MPEG-TS (unicast/multicast), compatible Live Encoding, strong security for your content ( Verimatrix DRM, HLS AES encryption, Stream Aliasing, Watermarking), built-in clustering mechanism and more. 1.6.5 EvoStream No
MythTV 0.25 MythTV Yes
MACNETIX VOD-Server 3.0 MACNETIX No
Anevia ViaMotion Servers Transcapsulation: from one input, several outputs
(HLS, MS Smooth Streaming, ADS Flash, MPEG DASH)
Anevia No
Packet Ship OverView:Origin Server Capture from IPTV multicast and chunking to HLS for multi-bandwidth live streams, with AES encryption 2.1 Packet Ship No
nangu.TV Streamers on-the-fly adaptation: content is stored once enabling several outputs
(HLS, MS Smooth Streaming, ADS Flash, MPEG DASH)
nangu.TV No
TVersity Media Server 1.9 TVersity No Pro Edition only
Helix Universal Server Live + VOD HLS with Verimatrix DRM integration, ABR, Multi-Resolution, AES encryption 15.0+ RealNetworks No High performance HLS (12,000+ concurrent devices)
Wowza Streaming Engine Live 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 2.0+ Wowza Media Systems No
Unified Streaming Platform Muxes media content from one unified source to multiple outputs (Smooth Streaming, HDS, HLS and MPEG DASH) Unified Streaming No
VODOBOX Live Server Outputs HTTP Live Streaming with Adaptive bitrate streaming (up to 6 simultaneous qualities).
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 (NetBios / Samba)
Hostings : internal HTTP Web server and/or external Web servers (ex: Apache HTTP server,Microsoft IIS, Nginx, etc.)
1.0 Vodobox Yes Supports input live streams from DVB-T devices, satellite receivers (Dreambox), IP streams (RTSP, RTMP, MMS, HTTP), Microsoft DirectShow drivers (video capture cards, live production software, camera). Encoder is compliant with Intel Quick Sync Video and Nvidia NVENC hardware acceleration.
Flixwagon Platform Video Server Flixwagon No
StreamCoder Live Encoder Realtime video encoder (inputs : DVB/IP stream or video signal). Supports multi-bitrates and multi-languages Ektacom No
Apache HTTP Server Apache Software Foundation Yes
Unreal Media Server 9.5 Unreal Streaming Technologies No Latency of live streams can be as low as 2.5 seconds over the Internet
Nimble Streamer RTMP / RTSP / Icecast / MPEG-TS to ABR HLS. MP4 / MP3 to VOD HLS 1.0.0-x WMSPanel No
Nginx-rtmp-module Free module for nginx server with support of HLS live streaming. Compliant with iOS and Android. 0.9.x Roman Arutyunyan Yes
Nginx Plus VOD HLS as origin NGINX, Inc. No
Flussonic Media Server Multi-platform support for HTTP, RTSP, RTMP, Time Shifting, DVR Functions with Unlimited Rewind Capabilities HLS streaming specific to iOS platform support. 3.0+ Flussonic, LLC. No Supporting a magnitude of features with full HTTP support.
VBrick Distributed Media Engine (“DME”) 2.0 VBrick Systems, Inc. No 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 Server HLS, MPEG-TS, RTMP, TimeShift, VoD, DVR, Hardware Acceleration 2.0 Telebreeze No
LEADTOOLS Media Streaming Server SDK Converts files on the fly to Adobe HDS, Apple HLS, MPEG-DASH, Microsoft Smooth Streaming, RTSP. 19.0 LEAD Technologies No

10. VOD encoders

Product Technology As Of Version Editor Free Notes
VODOBOX HLS Encoder Converts video files into pre-encoded HLS Adaptive bitrate streaming, ready to be hosted and broadcast through Apache HTTP server / Microsoft IIS / NginxWeb servers. Supports AVC H.264 / HEVC H.265 / Alternate Audio / Alternate Subtitles. 1.0 Vodobox Yes Transcode classic video files (avi, mp4, m2ts, mkv, …) into HLS streams with multi-qualities for VOD or replay usage. Hardware encoding can be accelerated by Intel Quick Sync Video and Nvidia NVENCtechnologies.