HTTP Live Streaming

HTTP Live Streaming playlist
Filename extension .m3u8
Internet media type application/vnd.apple.mpegurl[1]
Developed by Apple Inc.
Initial release May 2009
Extended from extended M3U

HTTP Live Streaming (also known as HLS) is an HTTP-based media streaming communications protocol implemented by Apple Inc. as part of its QuickTime, Safari, OS X, and iOS software. Client implementations are also available in Microsoft Edge, Firefox and some versions of Google Chrome. Support is widespread in streaming media servers.

HLS resembles 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. A list of available streams, encoded at different bit rates, is sent to the client using an extended M3U playlist.[2]

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.[3] The standard also includes a standard encryption mechanism[4] 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 (Individual Submission), the first stage in the process of publishing it as a Request for Comments (RFC). As of December 2015, the authors of that document have requested the RFC Independent Stream Editor (ISE) to publish the document as an informational (non-standard) RFC outside of the IETF consensus process.[5] August 2017, RFC8216 was published to describe version 7 of the protocol.[6]

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 encoded and segmented to generate video fragments and index file.
  • Encoder: codify video files in H.264 format and audio in AAC, MP3, AC-3 or EC-3.[7] 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 files. It also creates an index file that contains references of the fragmented files, saved as .m3u8.
Distributor
Formed by a standard web server, accepts requests from clients and delivers all the resources (.m3u8 playlist file and .ts segment files) 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.

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.

Availability

The master playlist can list duplicate variant streams that have the same level of quality but are hosted by different servers. This enables the player to swap to a different server for a given bitrate if one of the servers fails. This grants a degree of high availability to serving streams.

This can be combined with adaptability by listing multiple variant streams for each distinct quality level.

movieStream = fs.createReadStream(pathToFile);
 movieStream.on('open', function () {
     res.writeHead(206, {
         "Content-Range": "bytes " + start + "-" + end + "/" + total,
         "Accept-Ranges": "bytes",
         "Content-Length": chunksize,
         "Content-Type": "video/mp4"
     });
     // This just pipes the read stream to the response object (which goes 
     //to the client)
     movieStream.pipe(res);
 });
 
 movieStream.on('error', function (err) {
     res.end(err);
 });

Using fragmented MP4

On WWDC2016 Apple announced[8] 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.[9][10]

Server implementations

  • Adobe Media Server supports HLS for iOS devices (HLS) and Protected HTTP Live Streaming (PHLS).
  • Akamai supports HLS for live and on-demand streams.
  • Amazon CloudFront supports HLS for on-demand streams.
  • bitmovin provides the cloud transcoding service bitcodin.com, which supports HLS for on-demand and live streaming.
  • CDNetworks supports HLS for live and on-demand streams.
  • Cisco Systems: Supports full end to end delivery for Live/TSTV/VOD/HLS and Cloud DVR services.
  • Cloudflare supports HLS for live and on-demand streams.
  • EdgeCast Networks supports cross-device streaming using HLS.
  • Edgeware: Supports full end to end delivery for Live/TSTV/VOD/HLS.
  • 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.
  • IIS Media Services from Microsoft supports live and on-demand Smooth Streaming and HTTP Live Streaming.
  • Level 3 supports HLS live and on-demand streams.
  • Limelight Networks supports HLS for some accounts.[11]
  • Nginx with the nginx-rtmp-module supports HLS in live mode. Commercial version Nginx Plus also supports HLS/HDS VOD.
  • Nimble Streamer supports HLS in live and VOD mode.
  • Tata Communications CDN supports HLS for live and on-demand streams.
  • TVersity supports HLS in conjunction with on-the-fly transcoding for playback of any video content on iOS devices.
  • Unified Origin supports HLS in live and VOD mode.
  • Unreal Media Server supports low latency HLS as of version 9.5.
  • Ustream supports HLS delivery of live broadcasts. The ingested stream is re-transcoded if the original audio and video codec falls outside HLS requirements.
  • VLC Media Player supports HLS for serving live and on-demand streams as of version 2.0.
  • Wowza Streaming Engine from Wowza Media Systems supports HLS and encrypted HLS for live (with DVR) and on-demand streaming.

Usage

  • Adobe Systems demonstrated 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.
  • Google added HTTP Live Streaming support in Android 3.0 (Honeycomb).[12]
  • 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 and Open Source Media Framework 2.0.
  • HP added HTTP Live Streaming support in webOS 3.0.5.[13]
  • Microsoft added support for HTTP Live Streaming in EdgeHTML rendering engine in Windows 10 in 2015[14].
  • Microsoft added support for HTTP Live Streaming in IIS Media Services 4.0.[15]
  • Yospace added HTTP Live Streaming support in Yospace HLS Player and SDK for flash version 1.0.
  • Sling Media added HTTP Live Streaming support to its Slingboxes and its SlingPlayer apps.[16]
  • In 2014/15, the BBC introduced HLS-AAC streams for its live internet radio and on-demand audio services, and supports those streams with its iPlayer Radio clients.[17]
  • hls.js implements HLS in MSE compatible browsers; ability to read ID3 from video pid.[18][19]
  • hasplayer.js implements HLS in MSE compatible browsers.[20]

Supported players and servers

HTTP Live Streaming is natively supported in the following operating systems: Windows 10 (Microsoft Edge), OS X 10.6+ (Safari and QuickTime), iOS 3.0+ (Safari), and Android 4.1+[21] (Google Chrome).

Clients

ProductPlatformLive StreamingDRMAs of VersionEditor
Safari (web browser)macOS, iOSYesYes6.0+
Has full HLS support.
Apple
Microsoft Edge (web browser)Windows 10YesYesMicrosoft
Google Chrome (web browser)Windows, macOS, Android, iOSNative support on mobile only.
With Media Source Extensions on desktop.
Yes30+
Supported on Android and iOS. Unsupported on desktop OSes.
Google
Firefox (web browser)Windows, macOS, Android, iOSNative support on mobile only.
With Media Source Extensions on desktop.
Yes50.0+ for Android[22] and 57.0 for others,[23] 59.0 has enhanced support for Android[24]Mozilla
QuickTime Player (media player)macOSYesYes10.0+
Has full HLS support.
Apple
iTunes (music player)Windows, macOSYesYes10.1+[25]
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, macOS, Linux, Android, iOS, Windows PhoneYesUnknownVLC 2.x[26] has partial support up to HLS version 3 (otherwise will load as M3U playlist, individual chunks sequence).[27]
VLC 3.0 has full HLS support.
VideoLAN
Media Player Classic Home Cinema (media player)WindowsYesYesGabest, Doom9 forum users
PotPlayer (media player)WindowsYesYesDaum Communications
MPlayer / SMPlayer / mpv (media player)Windows, macOS, LinuxYesYesRicardo Villalba
GOM Player (media player)WindowsYesYesGretech
Cameleon (live video streaming software)Windows, macOSYesUnknownYatko
Audacious (software) (music player)Windows, LinuxYesYesAudacious
Radio Tray (radio player)LinuxYesYesCarlos Ribeiro
Kodi (software) (home entertainment application)Windows, macOS, Linux, Android, iOSYesPartial12.0 Alpha 5 and later
DRM support requires a monthly/nightly build
XBMC Foundation
MythTV (home entertainment application)Windows, macOS, Linux, FreeBSDYesYes0.26MythTV
JRiver Media Center (home entertainment application)Windows, macOSYesYesJRiver
XiiaLive (radio player)Android, iOSYesYes3.0+
Plays internet radio streams (audio only).
Visual Blasters LLC
Tunein radio (radio player)Android, iOSYesYes3.3+
Plays internet radio streams (audio only).
TuneIn
myTuner Radio (radio player)Android, iOS, Windows Phone, Windows 8, macOSYesYesPlays internet radio streams (audio only).AppGeneration Software
Internet Radio Player (radio player)AndroidYesYesPlays internet radio streams (audio only).MuserTech
GuguRadio (radio player)iOSYesYesPlays internet radio streams (audio only).Leon Fan
AIMP (media player)Windows, AndroidYesUnknown4.10+ (build 1827)
Plays internet radio streams (audio only).
Artem Izmaylov
Mini Stream Player (media player)AndroidYesYesJogiApp
MX Player (media player)AndroidYesYesJ2 Interactive
TV Streams (media player)macOS, iOS, tvOSYesYesv7.1Tiago Martinho
HP TouchpadWebOSYesYes3.0.5HP
Amino x4x STBAmino set-top boxesYesYes2.5.2 AminetAminocom.com
Dune HD TVDune HD set-top boxesYesYesTV Seriesdunehd.com
CTU Systems LtdCTU Systems Ltd Eludo Play Out SystemYesYesTV Seriesctusystems.com
nangu.TVMotorola set-top boxesYesYes2.0nangu.TV
Roku Digital Video PlayerRoku set-top boxesYesYesRoku OS / SDK 2.6Roku
Telebreeze PlayerHTML, Android, iOS, Windows, MacOS, Roku, MAG Infomir, Samsung Tizen, LG WebOS, Google Chromecast, tvOS, Amazon Fire TV, AndroidTVYesYesTelebreeze
bitdash (SDK)HTML5 or Flash, Web and MobileYesYesVersion 3.0+bitmovin
3ivx (SDK)Windows 8, Windows Phone 8[28] & Xbox One[29]YesYes2.03ivx
THEOplayer (SDK)[30]HTML5YesYesOpenTelly
Viblast Player (SDK)HTML5, iOS, AndroidYesPartialViblast Ltd
Flowplayer (SDK)Adobe Flash, iOS, Android, HTML5 (hlsjs plugin)YesYesThe Flash HLS plugin is available from GitHub.Flowplayer Ltd
JW Player (SDK)Adobe Flash, iOS, Android, HTML5YesYesHLS is provided in all JW Player versions as of JW8 (latest)JW Player
Radiant Media Player (SDK)Adobe Flash, HTML5YesYes1.5.0[31]Radiant Media Player
Yospace (SDK)Adobe FlashYesYes2.1Yospace
Onlinelib (SDK)Adobe FlashYesYes2.0Onlinelib.de
VODOBOX HLS Player (online service)Adobe Flash, HTML5, iOS, AndroidYesYesVodobox
NexPlayer (SDK)iOS, Android, Windows PhoneYesYesNexStreaming
ffplay/avplay (multimedia framework)YesPartialFFmpeg/Libav
GPAC (multimedia framework)YesNo0.5.0Telecom ParisTech inc.
QuickPlayer (SDK)Android, iOS, Windows 7, 8, 8,1 and 10YesYesSquadeo
hls.js (MSE)MSE BrowsersYesUnknownDaily Motion open source[18][19]
hasplayer.js (MSE)MSE BrowsersYesUnknownopen source[20]
Hola Player (video player)HTML5, Adobe Flash, iOS, AndroidYesYesAll versionsHola Ltd open source[32]
Shaka Player (SDK)HTML5 (MSE Browsers)Coming soonPartial2.1Open Source[33][34]
Fluid Player (Video Player)HTML5 (MSE Browsers)YesYes2.2.0+Fluid Player OSS[35][36][37]

Servers

ProductTechnologyAs Of VersionEditor FreeNotes
ANEVIA Genova Live Bundled software for transcoding to H.264 & HEVC, and packaging to HLS, MPEG-DASH, MS Smooth Streaming ANEVIA No
bitcodinSaaSbitmovin No[38]
VLC1.2 Yes
Video CloudSaaSBrightcove No[39]
IIS Media Services4.0[15]Microsoft No
Antik Media StreamerIngest 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.0Antik technology No
Adobe Media ServerLive and VOD streaming as origin and edge server5.0Adobe No
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 (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.5EvoStream No
MythTV0.25MythTV Yes
MACNETIX VOD-Server3.0MACNETIX No
Anevia NEA Live ServersTranscapsulation: from one input, several outputs
(HLS, MS Smooth Streaming, ADS Flash, MPEG DASH)
Anevia No
Packet Ship OverView:Origin ServerCapture from IPTV multicast and chunking to HLS for multi-bandwidth live streams, with AES encryption2.1Packet Ship No
nangu.TV Streamerson-the-fly adaptation: content is stored once enabling several outputs
(HLS, MS Smooth Streaming, ADS Flash, MPEG DASH)
nangu.TV No
TVersity Media Server1.9TVersity NoPro Edition only
Helix Universal ServerLive + VOD HLS with Verimatrix DRM integration, ABR, Multi-Resolution, AES encryption15.0+RealNetworks NoHigh performance HLS (12,000+ concurrent devices)
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 RTSP2.0+Wowza Media Systems No
Unified Streaming PlatformMuxes media content from one unified source to multiple outputs (Smooth Streaming, HDS, HLS and MPEG DASH)Unified Streaming No
VODOBOX Live ServerOutputs 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.0Vodobox YesSupports 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 ServerFlixwagon No
StreamCoder Live EncoderRealtime video encoder (inputs : DVB/IP stream or video signal). Supports multi-bitrates and multi-languagesEktacom No
Apache HTTP ServerApache Software Foundation Yes
Unreal Media Server9.5Unreal Streaming Technologies NoLatency 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 HLS1.0.0-xWMSPanel No
Nginx-rtmp-moduleFree module for nginx server with support of HLS live streaming. Compliant with iOS and Android.0.9.xRoman Arutyunyan Yes
Nginx PlusVOD HLS as originNGINX, Inc. No
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. NoSupporting a magnitude of features with full HTTP support.
VBrick Distributed Media Engine ("DME")2.0VBrick Systems, Inc. NoLive 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 (MPEG-TS)
Output Streams: HLS, HTTP, UDP
Preprocessing: Resize, Deinterlace, Frame Rate Conversion, Audio Resampling, Logo Rendering
Telebreeze No
LEADTOOLS Media Streaming Server SDKConverts files on the fly to Adobe HDS, Apple HLS, MPEG-DASH, Microsoft Smooth Streaming, RTSP.19.0LEAD Technologies No
MC-ROUTEMultifunctional software for live stream routing and protocol conversion4.4Teracue NoSupported protocols: TS over UDP, RTP, TCP, HLS, HTTP, RTSP/RTP
Direkt routerLive hardware decoder with SDI, NDI out and transcoding4.1Intinor NoSupported protocols in: TS over UDP, RTP, TCP, HLS, HTTP, RTMP out: UDP, RTP, TCP, RTMP

Live Encoders

ProductTechnologyAs Of VersionEditor FreeNotes
ENC-400 SeriesLive hardware encoder with SDI or HDMI1.0TeracueNoSupported protocols: TS over UDP,RTP, TCP, RTP/RTSP, RTMP push, HLS
WELLAV NB100 Live Streamcast with SDI or HDMI, CVBS 1.0 Wellav Technologies No Supported protocols: TS UDP,RTP, RTP/RTSP, RTMP, HLS;
ZyPerMX4Live hardware encoder with 4 HDMI inputs1.0ZeeVeeNoSupported protocols: TS over UDP,RTP, H.264/MPEG-4 AVC, HLS

VOD encoders

ProductTechnologyAs Of VersionEditor FreeNotes
VODOBOX HLS EncoderConverts video files into pre-encoded HLS Adaptive bitrate streaming, ready to be hosted and broadcast through Apache HTTP server / Microsoft IIS / Nginx Web servers. Supports AVC H.264 / HEVC H.265 / MPEG-TS / Fragmented MP4 / Alternate Audio / Alternate Subtitles.1.0Vodobox YesTranscodes 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 NVENC technologies.
MediaGoom HLS Packager[40]Convert mp4 files encoded with multibitrate to HLS chunks.0.1MediagoomYesSupport both Linux and Windows.

See also

References

  1. Pantos, R.P. (April 2016). "HTTP Live Streaming draft-pantos-http-live-streaming-19". Network Working Group: 1.
  2. Jordan, Larry (10 June 2013). "The Basics of HTTP Live Streaming". Larry's Blog. Larry Jordan & Associates. Retrieved 18 June 2013.
  3. MPEG-DASH vs. Apple HLS vs. Smooth Streaming vs. Adobe HDS
  4. Pantos, R. (30 September 2011). "HTTP Live Streaming". Internet Engineering Task Force. Retrieved 18 June 2013.
  5. "History for draft-pantos-http-live-streaming". Retrieved 2017-04-17. Stream changed to ISE from None
  6. Pantos, R., Ed., and W. May. "HTTP Live Streaming". Retrieved 2017-09-05.
  7. Roger, Pantos,; William, May,. "HTTP Live Streaming". tools.ietf.org. Retrieved 2017-01-23.
  8. https://developer.apple.com/videos/play/wwdc2016/504/ What's New in HTTP Live Streaming
  9. http://www.streamingmedia.com/Articles/ReadArticle.aspx?ArticleID=111796 HLS Now Supports Fragmented MP4, Making it Compatible With DASH
  10. https://bitmovin.com/hls-news-wwdc-2016/ WWDC16: HLS supports Fragmented MP4 – and gets MPEG-DASH compatible!
  11. "Limelight Orchestrate Video Support". Limelight Networks. Retrieved 14 November 2013.
  12. "Android 3.0 Platform Highlights".
  13. "webOS 3.0.5 Updates".
  14. Simplified Adaptive Video Streaming: Announcing support for HLS and DASH in Windows 10
  15. 1 2 "First Look: Microsoft IIS Media Services 4". StreamingMedia.com. Retrieved 30 July 2011.
  16. Blogcritics, November 26, 2010. iPad App Review: SlingPlayer (Retrieved April 14, 2014)
  17. Scott, Andrew (27 Feb 2015). "Audio Factory: an overview". Internet Blog. BBC. the only on-demand assets will be AAC HLS. ... We are still talking to manufacturers and many are confident that they will be able to provide their users with access to all 57 of our HLS AAC streams at 320kb/s within a few weeks or months.
  18. 1 2
  19. 1 2 hls.js demo page Archived 2015-11-20 at the Wayback Machine.
  20. 1 2 https://github.com/Orange-OpenSource/hasplayer.js/tree/master
  21. Supported Media Formats | Android Developers
  22. Release Notes Firefox 50.0 for Android Release
  23. DASH playback of AV1 video in Firefox
  24. Release Notes Firefox 59.0beta for Android Release
  25. Hints of 'iTunes Live Stream' Service Found in iTunes 10.1 - Mac Rumors
  26. https://trac.videolan.org/vlc/ticket/2943 VLC Ticket #2943 (Support for HTTP Live Streaming as a client)
  27. https://forum.videolan.org/viewtopic.php?t=113275
  28. http://www.3ivx.com/technology/windows/metro/http_live_streaming.html
  29. http://www.3ivx.com/xbox/
  30. THEOplayer | HLS Support
  31. Radiant Media Player version history
  32. https://holacdn.com/player
  33. Shaka Player GitHub Repo
  34. Shaka Player Demo
  35. Fluid Player Website
  36. Fluid Player Documentation
  37. Fluid Player GitHub Repository
  38. StreamingMedia Review bitcodin
  39. Brightcove Delivering HLS Video
  40. "MediaGoom. Essential Web Streaming".
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.