[go: nahoru, domu]

Jump to content

HTTP Live Streaming: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Undid revision 854815961 by 172.249.149.129 (talk) Why?
 
(234 intermediate revisions by more than 100 users not shown)
Line 1: Line 1:
{{Short description|HTTP-based media streaming communications protocol}}
{{Infobox file format
{{Infobox file format
| name = HTTP Live Streaming playlist
| name = HTTP Live Streaming
| icon =
| icon =
| screenshot =
| screenshot =
| caption =
| caption =
| extension = <code>.m3u8</code>
| mime = application/vnd.apple.mpegurl or audio/mpegurl<ref name="RFC 8216">{{cite IETF |title= HTTP Live Streaming |rfc=8216 |sectionname=Playlists |section=4 |page=9 |last=Pantos |first=R. |last2=May |first2=W. |year=2017 |publisher=[[Internet Engineering Task Force|IETF]] |access-date=Jan 15, 2020 |doi=10.17487/RFC8216 |issn=2070-1721 }}</ref>
| extension = <tt>.m3u8</tt>
| magic =
| mime = application/vnd.apple.mpegurl<ref name="hls_draft_19">{{cite journal | url= http://tools.ietf.org/html/draft-pantos-http-live-streaming-19 | title= HTTP Live Streaming draft-pantos-http-live-streaming-19 | author= Pantos, R.P. | journal= Network Working Group | date= April 2016 | issue= | pages= 1}}</ref>
| magic =
| developer = Apple Inc.
| developer = Apple Inc.
| type =
|type=| released = May 2009
| released = May 2009
| standard =
| standard = {{IETF RFC|8216}}
| url =
| url =
| logo =
| logo =
| type code = .m3u8
| type code =
| uniform type =
| uniform type =
| owner =
| latest release version =
| owner =
| latest release version =
| latest release date =
| latest release date =
| genre = [[Playlist]]
| container for =
| genre = [[Playlist]]
| container for =
| contained by =
| extended from = [[M3U#Extended M3U|extended M3U]]
| contained by =
| extended from = [[M3U#Extended M3U|extended M3U]]
| extended to = .m3u8
| extended to =
}}
}}
'''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 (web browser)|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.
'''HTTP Live Streaming''' (also known as '''HLS''') 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|2022}}, an annual video industry survey has consistently found it to be the most popular streaming format.<ref>{{cite web |last1=Lederer |first1=Stefan |title=2022 Video Developer Report |url=https://bitmovin.com/wp-content/uploads/2022/12/bitmovin-6th-video-developer-report-2022-2023.pdf |website=Bitmovin |access-date=25 October 2023 |language=en}}</ref>


HLS resembles [[Dynamic Adaptive Streaming over HTTP|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|extended M3U playlist]].<ref>{{cite web|url= https://larryjordan.com/articles/basics-of-http-live-streaming|title= The Basics of HTTP Live Streaming|last= Jordan|first= Larry|date= 10 June 2013|work= Larry's Blog|publisher= Larry Jordan & Associates|accessdate= 18 June 2013}}</ref>
HLS resembles [[Dynamic Adaptive Streaming over HTTP|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|extended M3U playlist]].<ref>{{cite web|url= https://larryjordan.com/articles/basics-of-http-live-streaming|title= The Basics of HTTP Live Streaming|last= Jordan|first= Larry|date= 10 June 2013|work= Larry's Blog|publisher= Larry Jordan & Associates|access-date= 18 June 2013}}</ref>


Based on standard HTTP transactions, HTTP Live Streaming can traverse any [[Firewall (computing)|firewall]] or [[proxy server]] that lets through standard HTTP traffic, unlike UDP-based protocols such as [[Real-time Transport Protocol|RTP]]. This also allows content to be offered from conventional HTTP servers and delivered over widely available HTTP-based [[content delivery network]]s.<ref>[http://www.bitcodin.com/blog/2015/03/mpeg-dash-vs-apple-hls-vs-microsoft-smooth-streaming-vs-adobe-hds/ MPEG-DASH vs. Apple HLS vs. Smooth Streaming vs. Adobe HDS]</ref> The standard also includes a standard encryption mechanism<ref>{{cite web|url= http://tools.ietf.org/html/draft-pantos-http-live-streaming-07|title= HTTP Live Streaming|last= Pantos|first= R.|date= 30 September 2011|publisher= Internet Engineering Task Force|accessdate= 18 June 2013}}</ref> and secure-key distribution using [[HTTPS]], which together provide a simple [[Digital Rights Management|DRM]] system. Later versions of the protocol also provide for [[trick mode |trick-mode]] fast-forward and rewind and for integration of subtitles.
Based on standard HTTP transactions, HTTP Live Streaming can traverse any [[Firewall (computing)|firewall]] or [[proxy server]] that lets through standard HTTP traffic, unlike UDP-based protocols such as [[Real-time Transport Protocol|RTP]]. This also allows content to be offered from conventional HTTP servers and delivered over widely available HTTP-based [[content delivery network]]s.<ref>{{cite web |date=March 29, 2015 |title=MPEG-DASH vs. Apple HLS vs. Smooth Streaming vs. Adobe HDS |url=https://bitmovin.com/mpeg-dash-vs-apple-hls-vs-microsoft-smooth-streaming-vs-adobe-hds/ |website=Bitmovin}}</ref><ref>{{Cite book |last1=Chen |first1=Songqing |last2=Shen |first2=Bo |last3=Tan |first3=Wai-tian |last4=Wee |first4=Susie |last5=Zhang |first5=Xiaodong |title=2006 IEEE International Conference on Multimedia and Expo |chapter=A Case for Internet Streaming via Web Servers |date=2006-07-09 |chapter-url=https://ieeexplore.ieee.org/document/4037057 |pages=2145–2148 |doi=10.1109/ICME.2006.262660 |isbn=9781424403677 |issn=1945-7871 |eissn=1945-788X |s2cid=9202042 }}</ref><ref>{{Cite journal |last1=Songqing Chen |last2=Bo Shen |last3=Wee |first3=S. |last4=Xiaodong Zhang |date=2007-07-23 |title=SProxy: A Caching Infrastructure to Support Internet Streaming |url=https://ieeexplore.ieee.org/document/4276704 |journal=IEEE Transactions on Multimedia |volume=9 |issue=5 |pages=1062–1072 |doi=10.1109/TMM.2007.898943 |s2cid=870854 |issn=1520-9210|citeseerx=10.1.1.74.4838 }}</ref> The standard also includes a standard encryption mechanism<ref>{{cite web|url= http://tools.ietf.org/html/draft-pantos-http-live-streaming-07|title= HTTP Live Streaming|last= Pantos|first= R.|date= 30 September 2011|publisher= Internet Engineering Task Force|access-date= 18 June 2013}}</ref> and secure-key distribution using [[HTTPS]], which together provide a simple [[Digital Rights Management|DRM]] system. Later versions of the protocol also provide for [[trick mode|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.<ref>
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.<ref>
{{cite web
{{cite web
|url= https://datatracker.ietf.org/doc/draft-pantos-http-live-streaming/history/
|url= https://datatracker.ietf.org/doc/draft-pantos-http-live-streaming/history/
|title= History for draft-pantos-http-live-streaming
|title= History for draft-pantos-http-live-streaming
|accessdate= 2017-04-17
|access-date= 2017-04-17
|quote= Stream changed to ISE from None
|quote= Stream changed to ISE from None
}}
}}
</ref>
</ref>
August 2017, RFC8216 was published to describe version 7 of the protocol.<ref>
In August 2017, {{IETF RFC |8216 |link=no}} was published to describe version 7 of the protocol.<ref>
{{cite web
{{cite IETF
|rfc=8216
|url= https://www.rfc-editor.org/info/rfc8216
|date=August 2017
|title= HTTP Live Streaming
|title= HTTP Live Streaming
|accessdate= 2017-09-05
|access-date= 2017-09-05
|first1=Roger|last1=Pantos
|authors=Pantos, R., Ed., and W. May
|first2=William|last2=May
}}
}}
</ref>
</ref>
Line 48: Line 52:
==Architecture==
==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:
HTTP Live Streaming uses a conventional [[web server]], that implements support for HTTP Live Streaming (HLS), to distribute audiovisual content and requires specific software, such as [[OBS Studio|OBS]] to fit the content into a proper format ([[codec]]) for transmission in real time over a [[computer network|network]].
The service architecture comprises:


;Server
;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.
: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/MPEG-4 AVC|H.264]] format and audio in [[Advanced Audio Coding|AAC]], [[MP3]], [[Dolby AC-3|AC-3]] or [[Dolby Digital Plus|EC-3]].<ref>{{Cite web|url=https://tools.ietf.org/html/draft-pantos-http-live-streaming-20#section-3.4|title=HTTP Live Streaming|last=Roger|first=Pantos,|last2=William|first2=May,|website=tools.ietf.org|language=en|access-date=2017-01-23}}</ref> This is encapsulated by [[MPEG transport stream|MPEG-2 Transport Stream]] to carry it.
:* Encoder: codify video files in [[H.264/MPEG-4 AVC|H.264]] format and audio in [[Advanced Audio Coding|AAC]], [[MP3]], [[Dolby AC-3|AC-3]] or [[Dolby Digital Plus|EC-3]].<ref>{{Cite web|url=https://tools.ietf.org/html/draft-pantos-http-live-streaming-20#section-3.4|title=HTTP Live Streaming|last1=Roger|first1=Pantos|last2=William|first2=May|website=tools.ietf.org|language=en|access-date=2017-01-23}}</ref> This is encapsulated by [[MPEG transport stream|MPEG-2 Transport Stream]] or [[MP4|MPEG-4_Part_14]] to carry it.
:* Segmenter: divides the MPEG-2 TS file into fragments of equal length, kept as <tt>.ts</tt> files. It also creates an index file that contains references of the fragmented files, saved as [[M3U|.m3u8]].
:* Segmenter: divides the stream into fragments of equal length. It also creates an index file that contains references of the fragmented files, saved as [[M3U|.m3u8]].
;Distributor
;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 media|streaming]].
: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 media|streaming]].
Line 63: Line 68:


===Adaptability===
===Adaptability===
To enable a player to adapt to the bandwidth of the network, the original video is encoded in several distinct [[Video quality|quality levels]]. The server serves an index, called a "master playlist", of these [[Video encoding|encodings]], called "variant streams". The player can then choose between the variant streams during playback, changing back and forth seamlessly as network conditions change.
To enable a player to adapt to the bandwidth of the network, the original video is encoded in several distinct [[Video quality|quality levels]]. The server serves an index, called a ''master playlist'', of these [[Video encoding|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===
===Using fragmented MP4===
At WWDC 2016 Apple announced<ref>{{cite AV media|url=https://developer.apple.com/videos/play/wwdc2016/504/|title=What's New in HTTP Live Streaming|website=Apple Developer}}</ref> the inclusion of byte-range addressing for fragmented [[MP4]] files, or fMP4, allowing content to be played via HLS without the need to multiplex it into [[MPEG transport stream|MPEG-2 Transport Stream]]. The industry considered this as a step towards compatibility between HLS and [[MPEG-DASH]].<ref>{{cite web|url=https://www.streamingmedia.com/Articles/ReadArticle.aspx?ArticleID=111796|title=HLS Now Supports Fragmented MP4, Making it Compatible With DASH|website=StreamingMedia.com|date=16 June 2016|first=Tim|last=Siglin}}</ref><ref>{{cite web|url=https://bitmovin.com/hls-news-wwdc-2016/|title=WWDC16: HLS supports Fragmented MP4 – and gets MPEG-DASH compatible!|first=Reinhard|last=Grandl|date=15 June 2016|website=Bitmovin.com}}</ref>
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.


===Low Latency HLS===
This can be combined with adaptability by listing multiple variant streams for each distinct quality level.
Two unrelated HLS extensions with a ''Low Latency'' name and corresponding acronym exist:
{{syntaxhighlight|lang=javascript|code=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);
});
}}


* Apple Low Latency HLS (ALHLS) which was announced by Apple at WWDC2019<ref>{{cite AV media|url=https://developer.apple.com/videos/play/wwdc2019/502/|title=Low-Latency HLS|website=Apple Developer}}</ref>
===Using fragmented MP4===
* Community LHLS (LHLS) which predated Apple's publication and is allegedly simpler<ref name="CLHLS">{{cite web|url=https://mux.com/blog/the-community-gave-us-low-latency-live-streaming-then-apple-took-it-away/|access-date=2019-06-17|date=2019-06-14|title=The community gave us low-latency live streaming. Then Apple took it away.}}</ref>
On WWDC2016 Apple announced<ref>https://developer.apple.com/videos/play/wwdc2016/504/ What's New in HTTP Live Streaming</ref> 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 transport stream|MPEG-2 Transport Stream]]. The industry considered this as a step towards compatibility between HLS and [[MPEG-DASH]].<ref>http://www.streamingmedia.com/Articles/ReadArticle.aspx?ArticleID=111796 HLS Now Supports Fragmented MP4, Making it Compatible With DASH</ref><ref>https://bitmovin.com/hls-news-wwdc-2016/ WWDC16: HLS supports Fragmented MP4 – and gets MPEG-DASH compatible!</ref>

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. A partial media segment is a standard segment (e.g. 6 seconds) split into equal segments of less than a second (e.g. 200 milliseconds). The standard first segment is replaced by the series of partial segments. Subsequent segments are of the standard size.<ref>{{Cite web |title=Apple Developer Documentation |url=https://developer.apple.com/documentation/http_live_streaming/enabling_low-latency_http_live_streaming_hls |access-date=2022-08-10 |website=developer.apple.com}}</ref>
HTTP/2 is required to push the segments along with the playlist, reducing the overhead of establishing repeated HTTP/TCP connections.

Other features include:
* Playlist Delta Updates: only sending what changed between playlist, which typically fit in single MTU making it more efficient to load the playlists which, with large DVR windows, can be quite large.
* Blocking of playlist reload: when requesting live media playlists, wait until the first segment is also ready, and return both at same time (saving additional HTTP/TCP requests)
* Rendition Reports: add metadata to other media renditions to make switching between ABR faster
*New tags added:&nbsp;EXT-X-SERVER-CONTROL /&nbsp;EXT-X-PART / EXT-X-SKIP /&nbsp;EXT-X-RENDITION-REPORT
*URL QUERY_STRING ?_HLS callbacks added

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 an HLS segmenter that takes in a 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, and iOS & iPadOS 14.<ref>{{Cite web|title=Low-Latency Everywhere: How to implement LL-HLS across platforms|url= https://www.theoplayer.com/blog/low-latency-everywhere-implementing-ll-hls-across-platforms|last=Speelmans|first=Pieter-Jan|date=2020-12-09|website=Theo|language=en|access-date=2021-03-11}}</ref>
On April 30, 2020, Apple added the low latency specifications to the second edition of the main HLS specification.<ref>{{Cite web|title=HTTP Live Streaming 2nd Edition|url=https://tools.ietf.org/html/draft-pantos-hls-rfc8216bis-07.html|last=Pantos|first=Roger|date=2020-04-30|website=IETF|language=en|access-date=2020-04-30}}</ref>

===Dynamic ad insertion===
Dynamic ad insertion is supported in 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==
==Server implementations==

Notable server implementations supporting HTTP Live Streaming include:
* [[Adobe Flash Media Server|Adobe Media Server]] supports HLS for iOS devices (HLS) and Protected HTTP Live Streaming (PHLS).
* [[Adobe Flash Media Server|Adobe Media Server]] supports HLS for iOS devices (HLS) and Protected HTTP Live Streaming (PHLS).
* [[Akamai Technologies|Akamai]] supports HLS for live and on-demand streams.
* [[Akamai Technologies|Akamai]] supports HLS for live and on-demand streams.
* AT&T supports HLS in all formats live or on-demand.
* [[Axis Communications|Axis Communication]] IP cameras supports HLS via [https://www.camstreamer.com CamStreamer] App ACAP
* [[Instart]] supports HLS for on-demand streams.
* [[Amazon CloudFront]] supports HLS for 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.
* [[Bitmovin]] supports HLS for on-demand and live streaming.
* [[CDNetworks]] supports HLS for live and on-demand streams.
* [[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.
* [[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.
* [[Cloudflare]] supports HLS for live and on-demand streams.
* [[EdgeCast Networks]] supports cross-device streaming using HLS.
* [[EdgeCast Networks]] supports cross-device streaming using HLS.
* [[Fastly]] supports HLS for live and on-demand streams.<ref>{{Cite web|title=Video CDN {{!}} Video Streaming {{!}} Stream Delivery {{!}} Fastly|url=https://www.fastly.com/products/media-and-streaming|access-date=2020-10-01|website=www.fastly.com|language=en}}</ref>
* [[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.
* [[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.
* [[Internet Information Services|IIS Media Services]] from [[Microsoft]] supports live and on-demand [[Smooth Streaming]] and HTTP Live Streaming.
* [[Internet Information Services|IIS Media Services]] from [[Microsoft]] supports live and on-demand [[Smooth Streaming]] and HTTP Live Streaming.
* [[Level 3 Communications|Level 3]] supports HLS live and on-demand streams.
* [[Level 3 Communications|Level 3]] supports HLS live and on-demand streams.
* [[Limelight Networks]] supports HLS for some accounts.<ref>{{cite web|url=http://support.video.limelight.com/support/docs/encoding_guide/|title=Limelight Orchestrate Video Support|publisher=Limelight Networks|accessdate=14 November 2013}}</ref>
* [[Limelight Networks]] supports HLS for some accounts.<ref>{{cite web|url=http://support.video.limelight.com/support/docs/encoding_guide/|title=Encoding Guide|website=Limelight Orchestrate Video Support|publisher=Limelight Networks|access-date=14 November 2013|archive-url=https://web.archive.org/web/20130801214950/http://support.video.limelight.com/support/docs/encoding_guide/|archive-date=2013-08-01}}</ref>
* [[Nginx]] with the nginx-rtmp-module supports HLS in live mode. Commercial version Nginx Plus also supports HLS/HDS VOD.
* [[Nginx]] with the nginx-rtmp-module supports HLS in live mode. Commercial version Nginx Plus, which includes ''ngx_http_hls_module'' module, also supports HLS/HDS VOD.<ref>{{Cite web|url=https://nginx.org/en/docs/http/ngx_http_hls_module.html|title=Module ngx_http_hls_module|website=nginx.org}}</ref>
* [[Nimble Streamer]] supports HLS in live and VOD mode.
* [[Nimble Streamer]] supports HLS in live and VOD mode, Apple Low Latency HLS spec is also supported.
* [[Node.js]] with the hls-server package supports hls encoding to live mode and local files conversion.<ref>{{cite web|url=https://www.npmjs.com/package/hls-server|title=hls-server|date=12 February 2018 |publisher=npm}}</ref>
*[[Storm Streaming Server]] supports HLS as backup mode for its Media Source Extensions player<ref>{{Cite web|title=Storm Streaming|url=https://www.stormstreaming.com/|access-date=2021-07-30|website=Storm Streaming|language=en|quote=Output devices: HLS, MPEG-DASH, WebSocket, RTMP}}</ref>
* [[Tata Communications]] [[Content delivery network|CDN]] supports HLS for live and on-demand streams.
* [[Tata Communications]] [[Content delivery network|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.
* [[TVersity]] supports HLS in conjunction with on-the-fly transcoding for playback of any video content on iOS devices.
* [[Unreal Media Server]] supports low latency HLS as of version 9.5.<ref>{{Cite web|title=Unreal Media Server|url=http://umediaserver.net/umediaserver/index.html|access-date=2021-07-30|website=umediaserver.net|quote=Unreal Media Server supports ingesting live streams from wide range of live software and hardware encoders that send streams over WebRTC, RTMP, RTSP, MPEG2-TS, HLS,}}</ref>
* [[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.
* [[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.
* [[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.
* [[Wowza Streaming Engine]] from ''Wowza Media Systems'' supports HLS and encrypted HLS for live (with DVR), on-demand streaming and Apple Low Latency HLS spec.


==Usage==
==Usage==
* [[Google]] added HTTP Live Streaming support in [[Android (operating system)|Android]] 3.0 (Honeycomb).<ref>{{cite web|title=Android 3.0 Platform Highlights|website=Android Developers|url=http://developer.android.com/sdk/android-3.0-highlights.html|archive-url=https://web.archive.org/web/20110128074424/http://developer.android.com/sdk/android-3.0-highlights.html|archive-date=2011-01-28}}</ref>
* [[Adobe Systems]] demonstrated an update to its Adobe Flash Media Server product supporting HTTP Live Streaming at the [[NAB Show]] in April 2011.
* [[Hewlett-Packard|HP]] added HTTP Live Streaming support in [[Webos|webOS]] 3.0.5.<ref>{{cite web|title=webOS 3.0.5 Updates|url=http://kb.hpwebos.com/wps/portal/kb/na/touchpad/touchpad/wifi/solutions/article/18666_en.html|archive-url=https://web.archive.org/web/20120122051734/http://kb.hpwebos.com/wps/portal/kb/na/touchpad/touchpad/wifi/solutions/article/18666_en.html|archive-date=2012-01-22}}</ref>
* 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.
* Microsoft added support for HTTP Live Streaming in EdgeHTML rendering engine in Windows 10 in 2015.<ref>{{cite web|url=https://blogs.msdn.com/b/ie/archive/2015/01/29/simplified-adaptive-video-streaming-announcing-support-for-hls-and-dash-in-windows-10.aspx|title=Simplified Adaptive Video Streaming: Announcing support for HLS and DASH in Windows 10|date=29 January 2015|website=Internet Explorer Team Blog}}</ref>
* [[Google]] added HTTP Live Streaming support in [[Android (operating system)|Android]] 3.0 (Honeycomb).<ref>{{cite web|title=Android 3.0 Platform Highlights|url=http://developer.android.com/sdk/android-3.0-highlights.html}}</ref>
* Microsoft added support for HTTP Live Streaming in IIS Media Services 4.0.<ref name="IISMS4">{{cite web|title=First Look: Microsoft IIS Media Services 4|url=https://www.streamingmedia.com/Articles/ReadArticle.aspx?ArticleID=71108&PageNum=1|date=1 November 2010|first=Tim|last=Siglin|website=StreamingMedia.com|access-date=30 July 2011}}</ref>
* 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.
* [[Yospace]] added HTTP Live Streaming support in Yospace HLS Player and SDK for flash version 1.0.{{citation needed|date=March 2019}}
* [[Sling Media]] added HTTP Live Streaming support to its [[Slingbox]]es and its SlingPlayer apps.<ref>{{cite web|website=Blogcritics|date=November 26, 2010|url=https://blogcritics.org/ipad-app-review-slingplayer/|title=iPad App Review: SlingPlayer|first=David|last=Chan|access-date=April 14, 2014|archive-url=https://web.archive.org/web/20140415025424/https://blogcritics.org/ipad-app-review-slingplayer/|archive-date=April 15, 2014}}</ref>
* [[Hewlett-Packard|HP]] added HTTP Live Streaming support in [[Webos|webOS]] 3.0.5.<ref>{{cite web|title=webOS 3.0.5 Updates|url=http://kb.hpwebos.com/wps/portal/kb/na/touchpad/touchpad/wifi/solutions/article/18666_en.html}}</ref>
* 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.<ref>{{Cite web|url=https://www.bbc.co.uk/blogs/internet/entries/234a65f0-89c1-489c-b6e9-55d2de932e53|last=Scott|first=Andrew|title=Audio Factory: an overview|date=27 Feb 2015|publisher=BBC|work=Internet Blog|quote=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 320&nbsp;kb/s within a few weeks or months.}}</ref>
* Microsoft added support for HTTP Live Streaming in EdgeHTML rendering engine in Windows 10 in 2015<ref>[http://blogs.msdn.com/b/ie/archive/2015/01/29/simplified-adaptive-video-streaming-announcing-support-for-hls-and-dash-in-windows-10.aspx Simplified Adaptive Video Streaming: Announcing support for HLS and DASH in Windows 10]</ref>.
* [[Twitch (service)|Twitch]] uses HTTP Live Streaming (HLS) to transmit and scale the live streaming to many concurrent viewers, also supporting multiple variants (e.g., 1080p, 720p, etc.).<ref>{{cite web|url=https://blog.twitch.tv/en/2017/10/10/live-video-transmuxing-transcoding-f-fmpeg-vs-twitch-transcoder-part-i-489c1c125f28|title=Live video transmuxing/transcoding: FFmpeg vs TwitchTranscoder, Part 1|first=Yueshi|last=Shen|year=2017}}</ref>
* Microsoft added support for HTTP Live Streaming in IIS Media Services 4.0.<ref name="IISMS4">{{cite web|title=First Look: Microsoft IIS Media Services 4|url=http://www.streamingmedia.com/Articles/ReadArticle.aspx?ArticleID=71108&PageNum=1|publisher=StreamingMedia.com|accessdate=30 July 2011}}</ref>
* [[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 [[Slingbox]]es and its SlingPlayer apps.<ref>Blogcritics, November 26, 2010. [http://blogcritics.org/ipad-app-review-slingplayer/ iPad App Review: SlingPlayer] (Retrieved April 14, 2014)</ref>
*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.<ref>{{Cite web|url=http://www.bbc.co.uk/blogs/internet/entries/234a65f0-89c1-489c-b6e9-55d2de932e53|last=Scott|first=Andrew|title=Audio Factory: an overview|date=27 Feb 2015|publisher=BBC|work=Internet Blog|quote=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.}}</ref>
* hls.js implements HLS in MSE compatible browsers; ability to read ID3 from video pid.<ref name="engineering.dailymotion.com">[http://engineering.dailymotion.com/introducing-hls-js/]</ref><ref name="hls.js demo page">[https://dailymotion.github.io/hls.js/demo/ hls.js demo page] {{webarchive|url=https://web.archive.org/web/20151120210027/http://dailymotion.github.io/hls.js/demo/ |date=2015-11-20 }}</ref>
* hasplayer.js implements HLS in MSE compatible browsers.<ref name="github.com">https://github.com/Orange-OpenSource/hasplayer.js/tree/master</ref>


== Supported players and servers ==
== Supported players and servers ==
{{Expand list|date=March 2015}}
{{Incomplete list|date=March 2015}}


HTTP Live Streaming is natively supported in the following operating systems: [[Windows 10]] ([[Microsoft Edge]]), [[OS X]] 10.6+ ([[Safari (web browser)|Safari]] and [[QuickTime]]), [[iOS]] 3.0+ ([[Safari (web browser)|Safari]]), and [[Android (operating system)|Android]] 4.1+<ref>[http://developer.android.com/guide/appendix/media-formats.html Supported Media Formats | Android Developers]</ref> ([[Google Chrome]]).
HTTP Live Streaming is natively supported in the following operating systems:
*[[Windows 10]] version 1507 to 2004 ([[Microsoft Edge]] Legacy) (no longer supported)
*[[Windows 11]] [[Media Player (Windows 11)|Media Player]]
*[[macOS]] 10.6+ ([[Safari (web browser)|Safari]] and [[QuickTime]])
*[[iOS]] 3.0+ ([[Safari (web browser)|Safari]])
*[[Android (operating system)|Android]] 4.1+<ref>{{cite web|url=http://developer.android.com/guide/appendix/media-formats.html|title=Supported media formats|website=Android Developers}}</ref> ([[Google Chrome]])


[[Windows 10]] used to have native support for HTTP Live Streaming in [[EdgeHTML]], a proprietary browser engine that was used in Microsoft Edge (now referred to as Edge Legacy) before the transition to the Chromium-based [[Blink (browser engine)|Blink]] browser engine. Edge Legacy was included in Windows 10 up till version 2004. It was replaced by Edge Chromium in version 20H2. Along with [[Windows 11]], Microsoft released an updated [[Media Player (Windows 11)|Media Player]] that supports HLS natively.
=== Clients ===


=== Clients ===
{{See also|HTML audio|HTML video}}
{| class="wikitable sortable"
{| class="wikitable sortable"
|-
|-
! Product !! Platform !! Live Streaming !! DRM !! As of Version !! Editor
! Client !! Platform !! Live Streaming !! DRM !! As of Version !! Editor
|-
| [[Safari (web browser)]] || macOS, iOS || {{yes}} || {{yes}} || 6.0+ <p> Has full HLS support.</p> || Apple
|-
| [[Microsoft Edge]] (web browser) || Windows 10 || {{partial|Native support on Edge Legacy.<p>Support via [[Media Source Extensions]] on Edge Chromium.</p>}} || {{yes}} || Supported natively on Edge Legacy's engine EdgeHTML from version 12 to 18. <p> No native support on Edge Chromium from version 79 to present.<ref>{{Cite web|url=https://caniuse.com/http-live-streaming|title=HTTP Live Streaming (HLS) &#124; Can I use... Support tables for HTML5, CSS3, etc|website=caniuse.com}}</ref> || Microsoft
|-
|-
| [[Safari (web browser)]] || macOS, iOS || {{yes}} || {{yes}} || 6.0+ <br> Has full HLS support. || Apple
| [[Google Chrome]] (web browser) / [[Chromium (web browser)|Chromium]] || Windows, macOS, Linux, Android, iOS || {{partial|OS-dependent support on Android/iOS.<p>Support via [[Media Source Extensions]] on other OS.</p>}} || {{yes}} || 30+ <p> Android and iOS have OS-dependent native support.</p> <p> Other platforms require Media Source Extensions. </p>|| Google
|-
|-
| [[Firefox]] (web browser) || Windows, macOS, Linux, Android, iOS || {{partial|OS-dependent support on Android/iOS.<p>Support via [[Media Source Extensions]] on other OS.</p>}} || {{yes}} || 50.0+ for Android<ref>{{cite web|url=https://www.mozilla.org/en-US/firefox/android/50.0/releasenotes/|title=Firefox for Android 50.0, See All New Features, Updates and Fixes|website=Mozilla}}</ref> and 57.0 for others,<ref>{{cite web|url=https://hacks.mozilla.org/2017/11/dash-playback-of-av1-video/|title=DASH playback of AV1 video in Firefox|website=Mozilla Hacks – the Web developer blog|first1=Ralph|last1=Giles|first2=Martin |last2=Smole|date=28 November 2017}}</ref> 59.0 has enhanced support for Android<ref>{{cite web|url=https://www.mozilla.org/en-US/firefox/android/59.0beta/releasenotes/|title=Firefox for Android Beta 59.0beta, See All New Features, Updates and Fixes|website=Mozilla}}</ref> <p> Other platforms require Media Source Extensions.</p> || Mozilla
| [[Microsoft Edge]] (web browser) || Windows 10 || {{yes}} || {{yes}} || || Microsoft
|-
|-
| [[Google Chrome]] (web browser) || Windows, macOS, Android, iOS || {{partial|Native support on mobile only.<br>With [[Media Source Extensions]] on desktop.}} || {{yes}} || 30+ <br> Supported on Android and iOS. Unsupported on desktop OSes. || Google
| [[QuickTime Player]] (media player) || macOS || {{yes}} || {{yes}} || 10.0+ <p> Has full HLS support. </p>|| Apple
|-
|-
| [[iTunes]] (music player) || Windows, macOS || {{yes}} || {{yes}} || 10.1+<ref>{{cite web|url=https://www.macrumors.com/2010/11/15/hints-of-itunes-live-stream-service-found-in-itunes-10-1/|title=Hints of 'iTunes Live Stream' Service Found in iTunes 10.1|website=MacRumors|date=15 November 2010|first=Eric|last=Slivka}}</ref> <p> Has full HLS support. </p><p> 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.</p> || Apple
| [[Firefox]] (web browser) || Windows, macOS, Android, iOS || {{partial|Native support on mobile only.<br>With [[Media Source Extensions]] on desktop.}} || {{yes}} || 50.0+ for Android<ref>[https://www.mozilla.org/en-US/firefox/android/50.0/releasenotes/ Release Notes Firefox 50.0 for Android Release ]</ref> and 57.0 for others,<ref>[https://hacks.mozilla.org/2017/11/dash-playback-of-av1-video/ DASH playback of AV1 video in Firefox]</ref> 59.0 has enhanced support for Android<ref>[https://www.mozilla.org/en-US/firefox/android/59.0beta/releasenotes/ Release Notes Firefox 59.0beta for Android Release ]</ref> || Mozilla
|-
|-
| [[QuickTime Player]] (media player) || macOS || {{yes}} || {{yes}} || 10.0+ <br> Has full HLS support. || Apple
| [[Windows Media Player (2022)]] (media player) || Windows 10, Windows 11 || {{yes}} || {{yes}} || Does not include the original Win32 version of [[Windows Media Player]]. || Microsoft
|-
|-
| StreamS HiFi Radio (radio player) || iOS, tvOS <p>iPhone, iPad, and AppleTV </p> || {{yes}} || {{yes}} || 7.3+ <p> Plays Internet Radio Streams </p><p> HLS Audio - 100% Compliant <br> AAC-LC/HE-AAC/xHE-AAC 2.0 Stereo/5.1-7.1 Surround <br> ES - Elementary Stream ADTS <br> fMP4 - Fragmented ISO MP4 <br> Displays Synchronous Realtime Metadata and Graphics </p> || StreamS/Modulation Index LLC
| [[iTunes]] (music player) || Windows, macOS || {{yes}} || {{yes}} || 10.1+<ref>[http://www.macrumors.com/2010/11/15/hints-of-itunes-live-stream-service-found-in-itunes-10-1/ Hints of 'iTunes Live Stream' Service Found in iTunes 10.1 - Mac Rumors]</ref> <br> 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 Phone || {{yes}} || {{unknown}} || VLC 2.x<ref>https://trac.videolan.org/vlc/ticket/2943 VLC Ticket #2943 (Support for HTTP Live Streaming as a client)</ref> has partial support up to HLS version 3 (otherwise will load as M3U playlist, individual chunks sequence).<ref>https://forum.videolan.org/viewtopic.php?t=113275</ref><br/>VLC 3.0 has full HLS support. || [[VideoLAN]]
| [[VLC media player]] (media player) || Windows, macOS, Linux, Android, iOS, Windows Phone || {{yes}} || {{unknown}} || VLC 2.x<ref>{{cite web|url=https://trac.videolan.org/vlc/ticket/2943|title=#2943 (Support for HTTP Live Streaming as a client)|website=VLC bug tracker|date=9 July 2009 }}</ref> has partial support up to HLS version 3 (otherwise will load as M3U playlist, individual chunks sequence).<ref>{{cite web|url=https://forum.videolan.org/viewtopic.php?t=113275|title=Playing HLS streaming video with VLC player - The VideoLAN Forums|website=forum.videolan.org}}</ref><p>VLC 3.0 has full HLS support.</p> || [[VideoLAN]]
|-
|-
| [[Media Player Classic Home Cinema]] (media player) || Windows || {{yes}} || {{yes}} || || Gabest, [[Doom9]] forum users
| [[Media Player Classic Home Cinema]] (media player) || Windows || {{yes}} || {{yes}} || || Gabest, [[Doom9]] forum users
Line 158: Line 180:
| [[PotPlayer]] (media player) || Windows || {{yes}} || {{yes}} || || [[Daum Communications]]
| [[PotPlayer]] (media player) || Windows || {{yes}} || {{yes}} || || [[Daum Communications]]
|-
|-
| [[MPlayer]] / [[SMPlayer]] / [[mpv (media player)]] || Windows, macOS, Linux || {{yes}} || {{yes}} || || Ricardo Villalba
| [[MPlayer]] / [[SMPlayer]] / [[mpv (media player)]] || Windows, macOS, Linux, BSD || {{yes}} || {{yes}} || || Ricardo Villalba
|-
|-
| [[GOM Player]] (media player) || Windows || {{yes}} || {{yes}} || || Gretech
| [[GOM Player]] (media player) || Windows || {{yes}} || {{yes}} || || Gretech
|-
|-
| [[Cameleon (software)|Cameleon]] (live video streaming software) || Windows, macOS || {{yes}} || {{unknown}} || || Yatko
| Cameleon (live video streaming software) || Windows, macOS || {{yes}} || {{unknown}} || || Yatko
|-
|-
| [[Audacious (software)]] (music player) || Windows, Linux || {{yes}} || {{yes}} || || Audacious
| [[Audacious (software)]] (music player) || Windows, Linux || {{yes}} || {{yes}} || || Audacious
Line 174: Line 196:
| [[JRiver Media Center]] (home entertainment application) || Windows, macOS || {{yes}} || {{yes}} || || JRiver
| [[JRiver Media Center]] (home entertainment application) || Windows, macOS || {{yes}} || {{yes}} || || JRiver
|-
|-
| XiiaLive (radio player) || Android, iOS || {{yes}} || {{yes}} || 3.0+ <br> Plays internet radio streams (audio only). || Visual Blasters LLC
| XiiaLive (radio player) || Android, iOS || {{yes}} || {{yes}} || 3.0+ <br /> Plays internet radio streams (audio only). || Visual Blasters LLC
|-
|-
| [[Tunein radio]] (radio player) || Android, iOS || {{yes}} || {{yes}} || 3.3+ <br> Plays internet radio streams (audio only). || TuneIn
| [[Tunein radio]] (radio player) || Android, iOS || {{yes}} || {{yes}} || 3.3+ <br /> Plays internet radio streams (audio only). || TuneIn
|-
|-
| [[myTuner Radio]] (radio player) || Android, iOS, Windows Phone, Windows 8, macOS || {{yes}} || {{yes}} || Plays internet radio streams (audio only). || AppGeneration Software
| [[myTuner Radio]] (radio player) || Android, iOS, Windows Phone, Windows 8, macOS || {{yes}} || {{yes}} || Plays internet radio streams (audio only). || AppGeneration Software
Line 183: Line 205:
|-
|-
| GuguRadio (radio player) || iOS || {{yes}} || {{yes}} || Plays internet radio streams (audio only). || Leon Fan
| GuguRadio (radio player) || iOS || {{yes}} || {{yes}} || Plays internet radio streams (audio only). || Leon Fan
|-
| [[AIMP]] (media player) || Windows, Android || {{yes}} || {{unknown}} || 4.10+ (build 1827)<br/>Plays internet radio streams (audio only). || Artem Izmaylov
|-
|-
| Mini Stream Player (media player) || Android || {{yes}} || {{yes}} || || JogiApp
| Mini Stream Player (media player) || Android || {{yes}} || {{yes}} || || JogiApp
Line 194: Line 218:
| Amino x4x STB || Amino set-top boxes || {{yes}} || {{yes}} || 2.5.2 Aminet || [[Aminocom.com]]
| 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]]
| Dune HD TV || Dune HD set-top boxes || {{yes}} || {{yes}} ||TV series|| [[dunehd.com]]
|-
|-
| CTU Systems Ltd || CTU Systems Ltd Eludo Play Out System || {{yes}} || {{yes}} ||TV Series|| [[ctusystems.com]]
| CTU Systems Ltd || CTU Systems Ltd Eludo Play Out System || {{yes}} || {{yes}} ||TV series|| [[ctusystems.com]]
|-
|-
| nangu.TV || Motorola set-top boxes || {{yes}} || {{yes}} || 2.0 || [[nangu.TV]]
| 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]]
| Roku Digital Video Player || Roku set-top boxes || {{yes}} || {{yes}} || [[Roku OS]] / SDK 2.6 || [[Roku]]
|-
|-
| Telebreeze Player || HTML, Android, iOS, Windows, MacOS, Roku, MAG Infomir, Samsung Tizen, LG WebOS, Google Chromecast, tvOS, Amazon Fire TV, AndroidTV || {{yes}} || {{yes}} || || Telebreeze
| Telebreeze Player || HTML, Android, iOS, Windows, MacOS, Roku, MAG Infomir, Samsung Tizen, LG WebOS, Google Chromecast, tvOS, Amazon Fire TV, AndroidTV || {{yes}} || {{yes}} || || Telebreeze
Line 206: Line 230:
| bitdash (SDK) || HTML5 or Flash, Web and Mobile || {{yes}} || {{yes}} || Version 3.0+ || [[bitmovin]]
| bitdash (SDK) || HTML5 or Flash, Web and Mobile || {{yes}} || {{yes}} || Version 3.0+ || [[bitmovin]]
|-
|-
| 3ivx (SDK) || Windows 8, Windows Phone 8<ref name="3ivx HLS Source for Windows 8 Modern UI (Metro) and Windows Phone 8 Apps">http://www.3ivx.com/technology/windows/metro/http_live_streaming.html</ref> & Xbox One<ref name="3ivx HLS Adapter for Xbox One">http://www.3ivx.com/xbox/</ref> || {{yes}} || {{yes}} || 2.0|| [[3ivx]]
| 3ivx (SDK) || Windows 8, Windows Phone 8<ref name="3ivx HLS Source for Windows 8 Modern UI (Metro) and Windows Phone 8 Apps">{{cite web|url=http://www.3ivx.com/technology/windows/metro/http_live_streaming.html|title=Windows 8 - HTTP Live Streaming|website=www.3ivx.com}}</ref> & Xbox One<ref name="3ivx HLS Adapter for Xbox One">{{cite web|url=http://www.3ivx.com/xbox/|title=3ivx - Xbox Live Developer Partner Program - Component Provider|website=www.3ivx.com}}</ref> || {{yes}} || {{yes}} || 2.0|| [[3ivx]]
|-
|-
| THEOplayer (SDK)<ref>[https://www.theoplayer.com/documentation/hls.html THEOplayer | HLS Support]</ref> || HTML5 || {{yes}} || {{yes}} || || OpenTelly
| THEOplayer<ref>{{cite web|url=https://www.theoplayer.com/documentation/hls.html|title=HTML5 Video Player THEOplayer|first=THEO Technologies|last=NV|website=www.theoplayer.com}}</ref> || HTML5, SDK (Android, iOS, Android TV, tvOS, Chromecast, WebOS, FireTV, Tizen) || {{yes}} || {{yes}} || || THEO Technologies
|-
|-
| Viblast Player (SDK) || HTML5, iOS, Android || {{yes}} || {{partial}} || || Viblast Ltd
| Viblast Player (SDK) || HTML5, iOS, Android || {{yes}} || {{partial}} || || Viblast Ltd
Line 214: Line 238:
| Flowplayer (SDK) || Adobe Flash, iOS, Android, HTML5 (hlsjs plugin) || {{yes}} || {{yes}} || The Flash HLS plugin is available from GitHub. || Flowplayer Ltd
| Flowplayer (SDK) || Adobe Flash, iOS, Android, HTML5 (hlsjs plugin) || {{yes}} || {{yes}} || The Flash HLS plugin is available from GitHub. || Flowplayer Ltd
|-
|-
| [[JW Player]] (SDK) || Adobe Flash, iOS, Android || {{yes}} || {{yes}} || HLS is provided in all JW Player versions as of JW8 (latest) || JW Player
| [[JW Player]] (SDK) || Adobe Flash, iOS, Android, HTML5 || {{yes}} || {{yes}} || HLS is provided in all JW Player versions as of JW8 (latest) || JW Player
|-
|-
| Radiant Media Player (SDK) || Adobe Flash, HTML5 || {{yes}} || {{yes}} || 1.5.0<ref>[https://www.radiantmediaplayer.com/version-history.html Radiant Media Player version history]</ref> || Radiant Media Player
| Radiant Media Player (SDK) || Adobe Flash, HTML5 || {{yes}} || {{yes}} || 1.5.0<ref>{{cite web|url=https://www.radiantmediaplayer.com/version-history.html|title=Version History - Radiant Media Player|first=Radiant Media|last=Player|website=www.radiantmediaplayer.com}}</ref> || Radiant Media Player
|-
|-
| Yospace (SDK) || Adobe Flash || {{yes}} || {{yes}} || 2.1 || [[Yospace]]
| Yospace (SDK) || Adobe Flash || {{yes}} || {{yes}} || 2.1 || [[Yospace]]
Line 224: Line 248:
| VODOBOX HLS Player (online service) || Adobe Flash, HTML5, iOS, Android || {{yes}} || {{yes}} || || Vodobox
| VODOBOX HLS Player (online service) || Adobe Flash, HTML5, iOS, Android || {{yes}} || {{yes}} || || Vodobox
|-
|-
| [[NexStreaming|NexPlayer (SDK)]] || iOS, Android, Windows Phone || {{yes}} || {{yes}} || || [[NexStreaming]]
| NexPlayer (SDK) || HTML5 (MSE Browsers), Android (mobile, TV, STB), iOS, Chromecast, Windows, Mac, Linux, Tizen, WebOS || {{yes}} || {{yes}} || || NexStreaming
|-
|-
| ffplay/avplay (multimedia framework) || || {{yes}} || {{partial}} || || [[FFmpeg]]/[[Libav]]
| ffplay/avplay (multimedia framework) || || {{yes}} || {{partial}} || || [[FFmpeg]]/[[Libav]]
Line 232: Line 256:
|QuickPlayer (SDK) || Android, iOS, Windows 7, 8, 8,1 and 10 || {{yes}} || {{yes}} || || Squadeo
|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<ref name="engineering.dailymotion.com"/><ref name="hls.js demo page"/>
| hls.js (MSE) || MSE Browsers || {{yes}} || {{unknown}} || || [[Dailymotion]] open source<ref>{{cite web|url=http://engineering.dailymotion.com/introducing-hls-js/|title=dailymotion – Medium|website=Medium}}</ref><ref>{{Cite web|url=https://dailymotion.github.io/hls.js/demo/|archiveurl=https://web.archive.org/web/20151120210027/http://dailymotion.github.io/hls.js/demo/|url-status=dead|title=hls.js demo page|archivedate=November 20, 2015}}</ref>
|-
|-
| hasplayer.js (MSE) || MSE Browsers || {{yes}} || {{unknown}} || || open source<ref name="github.com"/>
| hasplayer.js (MSE) || MSE Browsers || {{yes}} || {{unknown}} || || open source<ref>{{cite web|url=https://github.com/Orange-OpenSource/hasplayer.js/tree/master|title=Orange-OpenSource/hasplayer.js|website=GitHub}}</ref>
|-
|-
| Hola Player (video player) || HTML5, Adobe Flash, iOS, Android || {{yes}} || {{yes}} || All versions || Hola Ltd open source<ref>https://holacdn.com/player</ref>
| Hola Player (video player) || HTML5, Adobe Flash, iOS, Android || {{yes}} || {{yes}} || All versions || Hola Ltd open source<ref>{{cite web|url=https://holacdn.com/player|title=Spark|website=Spark}}</ref>
|-
|-
| Shaka Player (SDK) || HTML5 (MSE Browsers) || {{Coming Soon}} || {{Partial}} || 2.1 || Open Source<ref>[https://github.com/google/shaka-player Shaka Player GitHub Repo]</ref><ref>[https://shaka-player-demo.appspot.com/demo/ Shaka Player Demo]</ref>
| Shaka Player (SDK) || HTML5 (MSE Browsers) || {{Coming Soon}} || {{Partial}} || 2.1 || Open Source<ref>{{cite web|url=https://github.com/google/shaka-player|title=google/shaka-player|website=GitHub}}</ref><ref>{{cite web|url=https://shaka-player-demo.appspot.com/demo/|title=Shaka Player Demo|website=shaka-player-demo.appspot.com}}</ref>
|-
| Fluid Player (Video Player) || HTML5 (MSE Browsers) || {{yes}} || {{yes}} || 2.2.0+ || Fluid Player OSS<ref>{{cite web|url=https://www.fluidplayer.com|title=Fluid Player - HTML5 video player|website=www.fluidplayer.com}}</ref><ref>{{cite web|url=https://docs.fluidplayer.com|title=Fluid Player Documentation|website=docs.fluidplayer.com}}</ref><ref>{{cite web|url=https://github.com/fluid-player/fluid-player|title=fluid-player/fluid-player|website=GitHub}}</ref>
|-
|Video.js
|MSE Browsers. Flash with flashls source handler fallback.|| {{yes}} || {{yes}}
|
|Open source
|-
|[[foobar2000]] (audio player) || Windows || {{yes}} || {{unknown}} || 1.6.1 || Peter Pawłowski
|-
|QMPlay2 (media player) || Windows, macOS, Linux || {{yes}} || {{unknown}} || It has [[VU meter]]s and a [[spectrum analyzer]] || Open source<ref>{{Cite web|url=https://github.com/zaps166/QMPlay2|title=QMPlay2 - Qt Media Player 2|date=October 22, 2023|via=GitHub}}</ref>
|-
|-
| Fluid Player (Video Player) || HTML5 (MSE Browsers) || {{yes}} || {{yes}} || 2.2.0+ || Fluid Player OSS<ref>[https://www.fluidplayer.com Fluid Player Website]</ref><ref>[https://docs.fluidplayer.com Fluid Player Documentation]</ref><ref>[https://github.com/fluid-player/fluid-player Fluid Player GitHub Repository]</ref>
|-
|}
|}


=== Servers ===
=== Servers ===


{| class="wikitable"
{| class="wikitable sortable"
|-
|-
! Product !! Technology !! As Of Version !! Editor
! Product !! Technology !! As Of Version !! Editor
Line 254: Line 287:
|Bundled software for transcoding to [[H.264/MPEG-4 AVC|H.264]] & [[High Efficiency Video Coding|HEVC]], and packaging to HLS, [[MPEG-DASH]], [[Microsoft Smooth Streaming Protocol|MS Smooth Streaming]]
|Bundled software for transcoding to [[H.264/MPEG-4 AVC|H.264]] & [[High Efficiency Video Coding|HEVC]], and packaging to HLS, [[MPEG-DASH]], [[Microsoft Smooth Streaming Protocol|MS Smooth Streaming]]
|
|
|Anevia
|ANEVIA
|{{no}}
|{{no}}
|
|
|-
| AvProxy || Light software for live streaming<br />Input and output streams : HTTP(S), HLS(S)/AES-128, UDP, RTP, MPTS demux <br />
||2.19<ref name="avproxy">{{cite web|url=https://github.com/marakew/AvProxy|title=marakew/AvProxy|website=GitHub}}</ref>
||
|{{yes}}
| Proprietary but free for use
|-
|-
| bitcodin || || SaaS || [[bitmovin]]
| bitcodin || || SaaS || [[bitmovin]]
|{{no}}||<ref name="bitcodin-fast">[http://www.streamingmediaglobal.com/Articles/Editorial/Featured-Articles/Review-Bitcodin-a-Cloud-Video-Encoding-Service-From-Bitmovin-104546.aspx StreamingMedia Review bitcodin]</ref>
|{{no}}||<ref name="bitcodin-fast">{{cite web|url=http://www.streamingmediaglobal.com/Articles/Editorial/Featured-Articles/Review-Bitcodin-a-Cloud-Video-Encoding-Service-From-Bitmovin-104546.aspx|title=Review: Bitcodin, a Cloud Video Encoding Service From Bitmovin|website=www.StreamingMediaGlobal.com|date=2015|first=Jan|last=Ozer}}</ref>
|-
|-
| VLC || || 1.2 ||
| VLC || || 1.2 ||
|{{yes}}||
|{{yes}}||
|-
|-
| Once || || SaaS || Brightcove
| Video Cloud || || SaaS || [[Brightcove]]
|{{No}}||<ref name="delivering-hls-video">{{cite web|url=https://player.support.brightcove.com/playback/delivering-hls-video.html|title=Delivering HLS Video - Brightcove Learning|website=support.brightcove.com}}</ref>
|{{No}}||
|-
|-
| IIS Media Services || || 4.0<ref name="IISMS4" /> || Microsoft
| IIS Media Services || || 4.0<ref name="IISMS4" /> || Microsoft
|{{No}}||
|{{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
| 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, time zone shifting with multiple time zones, Stream Encryption using AES and key-rotation (with Antik Key Server) || 3.0 || Antik technology
|{{no}}||
|{{no}}||
|-
|-
Line 285: Line 324:
|{{no}}||
|{{no}}||
|-
|-
| Anevia NEA Live Servers || Transcapsulation: from one input, several outputs<br>(HLS, [[Adaptive bit rate#Microsoft Smooth Streaming|MS Smooth Streaming]], [[Adaptive bit rate#Adobe Dynamic Streaming for Flash|ADS Flash]], [[Dynamic Adaptive Streaming over HTTP|MPEG DASH]]) || || Anevia
| Anevia NEA Live Servers || Transcapsulation: from one input, several outputs<br />(HLS, [[Adaptive bit rate#Microsoft Smooth Streaming|MS Smooth Streaming]], [[Adaptive bit rate#Adobe Dynamic Streaming for Flash|ADS Flash]], [[Dynamic Adaptive Streaming over HTTP|MPEG DASH]]) || || Anevia
|{{no}}||
|{{no}}||
|-
|-
Line 291: Line 330:
|{{no}}||
|{{no}}||
|-
|-
| nangu.TV Streamers || on-the-fly adaptation: content is stored once enabling several outputs<br>(HLS, [[Adaptive bit rate#Microsoft Smooth Streaming|MS Smooth Streaming]], [[Adaptive bit rate#Adobe Dynamic Streaming for Flash|ADS Flash]], [[Dynamic Adaptive Streaming over HTTP|MPEG DASH]]) || || [[nangu.TV]]
| nangu.TV Streamers || on-the-fly adaptation: content is stored once enabling several outputs<br />(HLS, [[Adaptive bit rate#Microsoft Smooth Streaming|MS Smooth Streaming]], [[Adaptive bit rate#Adobe Dynamic Streaming for Flash|ADS Flash]], [[Dynamic Adaptive Streaming over HTTP|MPEG DASH]]) || || [[nangu.TV]]
|{{no}}||
|{{no}}||
|-
|-
Line 300: Line 339:
|{{no}}|| High performance HLS (12,000+ concurrent devices)
|{{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
| [[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. Supports Apple Low Latency HLS. || 2.0+ || Wowza Media Systems
|{{no}}||
|{{no}}||
|-
|-
| [[Unified Streaming Platform]] || Muxes media content from one unified source to multiple outputs (Smooth Streaming, HDS, HLS and MPEG DASH) || || [[Unified Streaming]]
| Unified Streaming Platform || Muxes media content from one unified source to multiple outputs (Smooth Streaming, HDS, HLS and MPEG DASH) || || Unified Streaming
|{{no}}||
|{{no}}||
|-
|-
Line 312: Line 351:
|{{no}}||
|{{no}}||
|-
|-
| StreamCoder Live Encoder || Realtime video encoder (inputs : DVB/IP stream or video signal). Supports multi-bitrates and multi-languages || || Ektacom
| StreamCoder Live Encoder || Realtime video encoder (inputs : DVB/IP stream or video signal). Supports multi-bitrates and multi-languages || || Ektacom
|{{no}}||
|{{no}}||
|-
|-
Line 321: Line 360:
|{{no}}|| Latency of live streams can be as low as 2.5 seconds over the Internet
|{{no}}|| Latency of live streams can be as low as 2.5 seconds over the Internet
|-
|-
| [[Nimble Streamer]] || RTMP / RTSP / Icecast / [[MPEG transport stream|MPEG-TS]] to ABR HLS. MP4 / MP3 to VOD HLS || 1.0.0-x || WMSPanel
| [[Nimble Streamer]] || RTMP / RTSP / Icecast / [[MPEG transport stream|MPEG-TS]] to ABR HLS. MP4 / MP3 to VOD HLS. Apple Low Latency HLS spec is supported. || 1.0.0-x || WMSPanel
|{{no}}||
|{{no}}||
|-
|-
Line 344: Line 383:
| MC-ROUTE || Multifunctional software for live stream routing and protocol conversion || 4.4 || [[Teracue]]
| MC-ROUTE || Multifunctional software for live stream routing and protocol conversion || 4.4 || [[Teracue]]
|{{no}}|| Supported protocols: TS over UDP, RTP, TCP, HLS, HTTP, RTSP/RTP
|{{no}}|| Supported protocols: TS over UDP, RTP, TCP, HLS, HTTP, RTSP/RTP
|-
| Direkt router || Live hardware decoder with SDI, NDI out and transcoding || 4.1 || [[Intinor]]
|{{no}}|| Supported protocols in: TS over UDP, RTP, TCP, HLS, HTTP, RTMP out: UDP, RTP, TCP, RTMP
|-
|Elecard CodecWorks
|Professional 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.6
|Elecard|Elecard
|{{no}}
|Supported protocols: TS over UDP/RTP/SRT, RTMP Output, HLS, MPEG-DASH output, UDP/RTP/SRT, NDI
|-
|TAC - Teracue Application Cloud
|Professional stream routing and real-time encoding/transcoding platform supporting various audio and video codedc and streaming protocols
|1.0
|Teracue|Teracue
|{{no}}
|Supported protocols IN and OUT: UDP, RTP, RTSP, RTMP, TCP (Client/Server), HLS, HTTP, FEC, SRT
Supported prptpcols IN only: SDVoE and NDI
|-
|[[Peertube]]
|A free and open-source, decentralized, ActivityPub federated video platform using HLS peer-to-peer technology to reduce load on individual servers when viewing videos.
|1.3.0
|
|{{yes}}
|Videos are made available via HTTP to download, but playback favors a peer-to-peer playback using HLS and WebTorrent.
|}
|}


Line 355: Line 419:
| ENC-400 Series || Live hardware encoder with SDI or HDMI || 1.0 || Teracue ||{{no}}|| Supported protocols: TS over UDP,RTP, TCP, RTP/RTSP, RTMP push, HLS
| ENC-400 Series || Live hardware encoder with SDI or HDMI || 1.0 || Teracue ||{{no}}|| Supported 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;
|WELLAV NB100
|-
|Live Streamcast with SDI or HDMI, CVBS
| ZyPerMX4 || Live hardware encoder with 4 HDMI inputs || 2.14 || ZeeVee ||{{no}}|| Supported protocols: TS over UDP,RTP, H.264/MPEG-4 AVC, HLS, RTMP, RTSP
|1.0
|-
|Wellav Technologies
| ZyPerMX2 || Live hardware encoder with 2 HDMI inputs || 2.14 || ZeeVee ||{{no}}|| Supported protocols: TS over UDP,RTP, H.264/MPEG-4 AVC, HLS, RTMP, RTSP
|{{no}}
|-
|Supported protocols: TS UDP,RTP, RTP/RTSP, RTMP, HLS;
| Elecard CodecWorks || Live software encoder with up to 8 SDI/HDMI or NDI inputs || 4.6 ||Elecard||{{no}} || Supported protocols: TS UDP,RTP,SRT, RTMP push, HLS, Mpeg-DASH
|-
|-
| ZyPerMX4 || Live hardware encoder with 4 HDMI inputs || 1.0 || ZeeVee ||{{no}}|| Supported protocols: TS over UDP,RTP, H.264/MPEG-4 AVC, HLS
| StreamS Live Encoder || Live software/hardware audio encoder with professional interface options || 3.0 || StreamS ||{{no}}|| Supported protocols: HLS/DASH ES, fMP4, FTP, FTPS, HTTP, HTTPS, DAV, DAVS, Akamai, Amazon S3, Microsoft BLOB, Google Cloud <br> AAC-LC/HE-AAC/xHE-AAC - Synchronous Realtime Now Playing and Control Metadata and Graphics
|}
|}



Latest revision as of 08:13, 10 May 2024

HTTP Live Streaming
Filename extension
.m3u8
Internet media type
application/vnd.apple.mpegurl or audio/mpegurl[1]
Type code.m3u8
Developed byApple Inc.
Initial releaseMay 2009
Extended fromextended M3U
Extended to.m3u8
StandardRFC 8216

HTTP Live Streaming (also known as HLS) 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 2022, an annual video industry survey has consistently found it to be the most popular streaming format.[2]

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.[3]

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.[4][5][6] The standard also includes a standard encryption mechanism[7] 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.[8] In August 2017, RFC 8216 was published to describe version 7 of the protocol.[9]

Architecture[edit]

HTTP Live Streaming uses a conventional web server, that implements support for HTTP Live Streaming (HLS), to distribute audiovisual content and requires specific software, such as OBS to fit the content into a proper format (codec) for transmission in real time over a network. 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.
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[edit]

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[edit]

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[edit]

At WWDC 2016 Apple announced[11] the inclusion of byte-range addressing for fragmented MP4 files, or fMP4, allowing content to be played via 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.[12][13]

Low Latency HLS[edit]

Two unrelated HLS extensions with a Low Latency name and corresponding acronym exist:

  • Apple Low Latency HLS (ALHLS) which was announced by Apple at WWDC2019[14]
  • Community LHLS (LHLS) which predated Apple's publication and is allegedly simpler[15]

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. A partial media segment is a standard segment (e.g. 6 seconds) split into equal segments of less than a second (e.g. 200 milliseconds). The standard first segment is replaced by the series of partial segments. Subsequent segments are of the standard size.[16] HTTP/2 is required to push the segments along with the playlist, reducing the overhead of establishing repeated HTTP/TCP connections.

Other features include:

  • Playlist Delta Updates: only sending what changed between playlist, which typically fit in single MTU making it more efficient to load the playlists which, with large DVR windows, can be quite large.
  • Blocking of playlist reload: when requesting live media playlists, wait until the first segment is also ready, and return both at same time (saving additional HTTP/TCP requests)
  • Rendition Reports: add metadata to other media renditions to make switching between ABR faster
  • New tags added: EXT-X-SERVER-CONTROL / EXT-X-PART / EXT-X-SKIP / EXT-X-RENDITION-REPORT
  • URL QUERY_STRING ?_HLS callbacks added

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 an HLS segmenter that takes in a 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, and iOS & iPadOS 14.[17] On April 30, 2020, Apple added the low latency specifications to the second edition of the main HLS specification.[18]

Dynamic ad insertion[edit]

Dynamic ad insertion is supported in 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[edit]

Notable server implementations supporting HTTP Live Streaming include:

  • Adobe Media Server supports HLS for iOS devices (HLS) and Protected HTTP Live Streaming (PHLS).
  • Akamai supports HLS for live and on-demand streams.
  • AT&T supports HLS in all formats live or on-demand.
  • Axis Communication IP cameras supports HLS via CamStreamer App ACAP
  • Instart supports HLS for on-demand streams.
  • Amazon CloudFront supports HLS for on-demand streams.
  • Bitmovin 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.
  • Fastly supports HLS for live and on-demand streams.[19]
  • 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.[20]
  • Nginx with the nginx-rtmp-module supports HLS in live mode. Commercial version Nginx Plus, which includes ngx_http_hls_module module, also supports HLS/HDS VOD.[21]
  • Nimble Streamer supports HLS in live and VOD mode, Apple Low Latency HLS spec is also supported.
  • Node.js with the hls-server package supports hls encoding to live mode and local files conversion.[22]
  • Storm Streaming Server supports HLS as backup mode for its Media Source Extensions player[23]
  • 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.
  • Unreal Media Server supports low latency HLS as of version 9.5.[24]
  • 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), on-demand streaming and Apple Low Latency HLS spec.

Usage[edit]

  • Google added HTTP Live Streaming support in Android 3.0 (Honeycomb).[25]
  • HP added HTTP Live Streaming support in webOS 3.0.5.[26]
  • Microsoft added support for HTTP Live Streaming in EdgeHTML rendering engine in Windows 10 in 2015.[27]
  • Microsoft added support for HTTP Live Streaming in IIS Media Services 4.0.[28]
  • Yospace added HTTP Live Streaming support in Yospace HLS Player and SDK for flash version 1.0.[citation needed]
  • Sling Media added HTTP Live Streaming support to its Slingboxes and its SlingPlayer apps.[29]
  • 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.[30]
  • Twitch uses HTTP Live Streaming (HLS) to transmit and scale the live streaming to many concurrent viewers, also supporting multiple variants (e.g., 1080p, 720p, etc.).[31]

Supported players and servers[edit]

HTTP Live Streaming is natively supported in the following operating systems:

Windows 10 used to have native support for HTTP Live Streaming in EdgeHTML, a proprietary browser engine that was used in Microsoft Edge (now referred to as Edge Legacy) before the transition to the Chromium-based Blink browser engine. Edge Legacy was included in Windows 10 up till version 2004. It was replaced by Edge Chromium in version 20H2. Along with Windows 11, Microsoft released an updated Media Player that supports HLS natively.

Clients[edit]

Client Platform Live Streaming DRM As of Version Editor
Safari (web browser) macOS, iOS Yes Yes 6.0+

Has full HLS support.

Apple
Microsoft Edge (web browser) Windows 10 Native support on Edge Legacy.

Support via Media Source Extensions on Edge Chromium.

Yes Supported natively on Edge Legacy's engine EdgeHTML from version 12 to 18.

No native support on Edge Chromium from version 79 to present.[33]

Microsoft
Google Chrome (web browser) / Chromium Windows, macOS, Linux, Android, iOS OS-dependent support on Android/iOS.

Support via Media Source Extensions on other OS.

Yes 30+

Android and iOS have OS-dependent native support.

Other platforms require Media Source Extensions.

Google
Firefox (web browser) Windows, macOS, Linux, Android, iOS OS-dependent support on Android/iOS.

Support via Media Source Extensions on other OS.

Yes 50.0+ for Android[34] and 57.0 for others,[35] 59.0 has enhanced support for Android[36]

Other platforms require Media Source Extensions.

Mozilla
QuickTime Player (media player) macOS Yes Yes 10.0+

Has full HLS support.

Apple
iTunes (music player) Windows, macOS Yes Yes 10.1+[37]

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
Windows Media Player (2022) (media player) Windows 10, Windows 11 Yes Yes Does not include the original Win32 version of Windows Media Player. Microsoft
StreamS HiFi Radio (radio player) iOS, tvOS

iPhone, iPad, and AppleTV

Yes Yes 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 (media player) Windows, macOS, Linux, Android, iOS, Windows Phone Yes Un­known VLC 2.x[38] has partial support up to HLS version 3 (otherwise will load as M3U playlist, individual chunks sequence).[39]

VLC 3.0 has full HLS support.

VideoLAN
Media Player Classic Home Cinema (media player) Windows Yes Yes Gabest, Doom9 forum users
PotPlayer (media player) Windows Yes Yes Daum Communications
MPlayer / SMPlayer / mpv (media player) Windows, macOS, Linux, BSD Yes Yes Ricardo Villalba
GOM Player (media player) Windows Yes Yes Gretech
Cameleon (live video streaming software) Windows, macOS Yes Un­known Yatko
Audacious (software) (music player) Windows, Linux Yes Yes Audacious
Radio Tray (radio player) Linux Yes Yes Carlos Ribeiro
Kodi (software) (home entertainment application) Windows, macOS, 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, macOS, Linux, FreeBSD Yes Yes 0.26 MythTV
JRiver Media Center (home entertainment application) Windows, macOS 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, macOS Yes Yes Plays internet radio streams (audio only). AppGeneration Software
Internet Radio Player (radio player) Android Yes Yes Plays internet radio streams (audio only). MuserTech
GuguRadio (radio player) iOS Yes Yes Plays internet radio streams (audio only). Leon Fan
AIMP (media player) Windows, Android Yes Un­known 4.10+ (build 1827)
Plays internet radio streams (audio only).
Artem Izmaylov
Mini Stream Player (media player) Android Yes Yes JogiApp
MX Player (media player) Android Yes Yes J2 Interactive
TV Streams (media player) macOS, iOS, tvOS Yes Yes v7.1 Tiago Martinho
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
CTU Systems Ltd CTU Systems Ltd Eludo Play Out System Yes Yes TV series ctusystems.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 HTML, Android, iOS, Windows, MacOS, Roku, MAG Infomir, Samsung Tizen, LG WebOS, Google Chromecast, tvOS, Amazon Fire TV, AndroidTV Yes Yes Telebreeze
bitdash (SDK) HTML5 or Flash, Web and Mobile Yes Yes Version 3.0+ bitmovin
3ivx (SDK) Windows 8, Windows Phone 8[40] & Xbox One[41] Yes Yes 2.0 3ivx
THEOplayer[42] HTML5, SDK (Android, iOS, Android TV, tvOS, Chromecast, WebOS, FireTV, Tizen) Yes Yes THEO Technologies
Viblast Player (SDK) HTML5, iOS, Android Yes Partial Viblast Ltd
Flowplayer (SDK) Adobe Flash, iOS, Android, HTML5 (hlsjs plugin) Yes Yes The Flash HLS plugin is available from GitHub. Flowplayer Ltd
JW Player (SDK) Adobe Flash, iOS, Android, HTML5 Yes Yes HLS is provided in all JW Player versions as of JW8 (latest) JW Player
Radiant Media Player (SDK) Adobe Flash, HTML5 Yes Yes 1.5.0[43] 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) HTML5 (MSE Browsers), Android (mobile, TV, STB), iOS, Chromecast, Windows, Mac, Linux, Tizen, WebOS 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 Un­known Dailymotion open source[44][45]
hasplayer.js (MSE) MSE Browsers Yes Un­known open source[46]
Hola Player (video player) HTML5, Adobe Flash, iOS, Android Yes Yes All versions Hola Ltd open source[47]
Shaka Player (SDK) HTML5 (MSE Browsers) Coming soon Partial 2.1 Open Source[48][49]
Fluid Player (Video Player) HTML5 (MSE Browsers) Yes Yes 2.2.0+ Fluid Player OSS[50][51][52]
Video.js MSE Browsers. Flash with flashls source handler fallback. Yes Yes Open source
foobar2000 (audio player) Windows Yes Un­known 1.6.1 Peter Pawłowski
QMPlay2 (media player) Windows, macOS, Linux Yes Un­known It has VU meters and a spectrum analyzer Open source[53]

Servers[edit]

Product Technology As Of Version Editor Free Notes
ANEVIA Genova Live Bundled software for transcoding to H.264 & HEVC, and packaging to HLS, MPEG-DASH, MS Smooth Streaming Anevia No
AvProxy Light software for live streaming
Input and output streams : HTTP(S), HLS(S)/AES-128, UDP, RTP, MPTS demux
2.19[54] Yes Proprietary but free for use
bitcodin SaaS bitmovin No [55]
VLC 1.2 Yes
Video Cloud SaaS Brightcove No [56]
IIS Media Services 4.0[28] 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, time zone shifting with multiple time zones, 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 NEA Live 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. Supports Apple Low Latency HLS. 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. Apple Low Latency HLS spec is supported. 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, DASH, 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 Input 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 SDK Converts files on the fly to Adobe HDS, Apple HLS, MPEG-DASH, Microsoft Smooth Streaming, RTSP. 19.0 LEAD Technologies No
MC-ROUTE Multifunctional software for live stream routing and protocol conversion 4.4 Teracue No Supported protocols: TS over UDP, RTP, TCP, HLS, HTTP, RTSP/RTP
Direkt router Live hardware decoder with SDI, NDI out and transcoding 4.1 Intinor No Supported protocols in: TS over UDP, RTP, TCP, HLS, HTTP, RTMP out: UDP, RTP, TCP, RTMP
Elecard CodecWorks Professional 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.6 Elecard No Supported protocols: TS over UDP/RTP/SRT, RTMP Output, HLS, MPEG-DASH output, UDP/RTP/SRT, NDI
TAC - Teracue Application Cloud Professional stream routing and real-time encoding/transcoding platform supporting various audio and video codedc and streaming protocols 1.0 Teracue No Supported protocols IN and OUT: UDP, RTP, RTSP, RTMP, TCP (Client/Server), HLS, HTTP, FEC, SRT

Supported prptpcols IN only: SDVoE and NDI

Peertube A free and open-source, decentralized, ActivityPub federated video platform using HLS peer-to-peer technology to reduce load on individual servers when viewing videos. 1.3.0 Yes Videos are made available via HTTP to download, but playback favors a peer-to-peer playback using HLS and WebTorrent.

Live Encoders[edit]

Product Technology As Of Version Editor Free Notes
ENC-400 Series Live hardware encoder with SDI or HDMI 1.0 Teracue No Supported 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;
ZyPerMX4 Live hardware encoder with 4 HDMI inputs 2.14 ZeeVee No Supported protocols: TS over UDP,RTP, H.264/MPEG-4 AVC, HLS, RTMP, RTSP
ZyPerMX2 Live hardware encoder with 2 HDMI inputs 2.14 ZeeVee No Supported protocols: TS over UDP,RTP, H.264/MPEG-4 AVC, HLS, RTMP, RTSP
Elecard CodecWorks Live software encoder with up to 8 SDI/HDMI or NDI inputs 4.6 Elecard No Supported protocols: TS UDP,RTP,SRT, RTMP push, HLS, Mpeg-DASH
StreamS Live Encoder Live software/hardware audio encoder with professional interface options 3.0 StreamS No Supported protocols: HLS/DASH ES, fMP4, FTP, FTPS, HTTP, HTTPS, DAV, DAVS, Akamai, Amazon S3, Microsoft BLOB, Google Cloud
AAC-LC/HE-AAC/xHE-AAC - Synchronous Realtime Now Playing and Control Metadata and Graphics

VOD encoders[edit]

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 / Nginx Web servers. Supports AVC H.264 / HEVC H.265 / MPEG-TS / Fragmented MP4 / Alternate Audio / Alternate Subtitles. 1.0 Vodobox Yes Transcodes 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[57] Convert mp4 files encoded with multibitrate to HLS chunks. 0.1 Mediagoom Yes Support both Linux and Windows.

See also[edit]

References[edit]

  1. ^ Pantos, R.; May, W. (2017). "Playlists". HTTP Live Streaming. IETF. p. 9. sec. 4. doi:10.17487/RFC8216. ISSN 2070-1721. RFC 8216. Retrieved Jan 15, 2020.
  2. ^ Lederer, Stefan. "2022 Video Developer Report" (PDF). Bitmovin. Retrieved 25 October 2023.
  3. ^ Jordan, Larry (10 June 2013). "The Basics of HTTP Live Streaming". Larry's Blog. Larry Jordan & Associates. Retrieved 18 June 2013.
  4. ^ "MPEG-DASH vs. Apple HLS vs. Smooth Streaming vs. Adobe HDS". Bitmovin. March 29, 2015.
  5. ^ Chen, Songqing; Shen, Bo; Tan, Wai-tian; Wee, Susie; Zhang, Xiaodong (2006-07-09). "A Case for Internet Streaming via Web Servers". 2006 IEEE International Conference on Multimedia and Expo. pp. 2145–2148. doi:10.1109/ICME.2006.262660. eISSN 1945-788X. ISBN 9781424403677. ISSN 1945-7871. S2CID 9202042.
  6. ^ Songqing Chen; Bo Shen; Wee, S.; Xiaodong Zhang (2007-07-23). "SProxy: A Caching Infrastructure to Support Internet Streaming". IEEE Transactions on Multimedia. 9 (5): 1062–1072. CiteSeerX 10.1.1.74.4838. doi:10.1109/TMM.2007.898943. ISSN 1520-9210. S2CID 870854.
  7. ^ Pantos, R. (30 September 2011). "HTTP Live Streaming". Internet Engineering Task Force. Retrieved 18 June 2013.
  8. ^ "History for draft-pantos-http-live-streaming". Retrieved 2017-04-17. Stream changed to ISE from None
  9. ^ Pantos, Roger; May, William (August 2017). HTTP Live Streaming. doi:10.17487/RFC8216. RFC 8216. Retrieved 2017-09-05.
  10. ^ Roger, Pantos; William, May. "HTTP Live Streaming". tools.ietf.org. Retrieved 2017-01-23.
  11. ^ What's New in HTTP Live Streaming. Apple Developer.
  12. ^ Siglin, Tim (16 June 2016). "HLS Now Supports Fragmented MP4, Making it Compatible With DASH". StreamingMedia.com.
  13. ^ Grandl, Reinhard (15 June 2016). "WWDC16: HLS supports Fragmented MP4 – and gets MPEG-DASH compatible!". Bitmovin.com.
  14. ^ Low-Latency HLS. Apple Developer.
  15. ^ "The community gave us low-latency live streaming. Then Apple took it away". 2019-06-14. Retrieved 2019-06-17.
  16. ^ "Apple Developer Documentation". developer.apple.com. Retrieved 2022-08-10.
  17. ^ Speelmans, Pieter-Jan (2020-12-09). "Low-Latency Everywhere: How to implement LL-HLS across platforms". Theo. Retrieved 2021-03-11.
  18. ^ Pantos, Roger (2020-04-30). "HTTP Live Streaming 2nd Edition". IETF. Retrieved 2020-04-30.
  19. ^ "Video CDN | Video Streaming | Stream Delivery | Fastly". www.fastly.com. Retrieved 2020-10-01.
  20. ^ "Encoding Guide". Limelight Orchestrate Video Support. Limelight Networks. Archived from the original on 2013-08-01. Retrieved 14 November 2013.
  21. ^ "Module ngx_http_hls_module". nginx.org.
  22. ^ "hls-server". npm. 12 February 2018.
  23. ^ "Storm Streaming". Storm Streaming. Retrieved 2021-07-30. Output devices: HLS, MPEG-DASH, WebSocket, RTMP
  24. ^ "Unreal Media Server". umediaserver.net. Retrieved 2021-07-30. Unreal Media Server supports ingesting live streams from wide range of live software and hardware encoders that send streams over WebRTC, RTMP, RTSP, MPEG2-TS, HLS,
  25. ^ "Android 3.0 Platform Highlights". Android Developers. Archived from the original on 2011-01-28.
  26. ^ "webOS 3.0.5 Updates". Archived from the original on 2012-01-22.
  27. ^ "Simplified Adaptive Video Streaming: Announcing support for HLS and DASH in Windows 10". Internet Explorer Team Blog. 29 January 2015.
  28. ^ a b Siglin, Tim (1 November 2010). "First Look: Microsoft IIS Media Services 4". StreamingMedia.com. Retrieved 30 July 2011.
  29. ^ Chan, David (November 26, 2010). "iPad App Review: SlingPlayer". Blogcritics. Archived from the original on April 15, 2014. Retrieved April 14, 2014.
  30. ^ 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 320 kb/s within a few weeks or months.
  31. ^ Shen, Yueshi (2017). "Live video transmuxing/transcoding: FFmpeg vs TwitchTranscoder, Part 1".
  32. ^ "Supported media formats". Android Developers.
  33. ^ "HTTP Live Streaming (HLS) | Can I use... Support tables for HTML5, CSS3, etc". caniuse.com.
  34. ^ "Firefox for Android 50.0, See All New Features, Updates and Fixes". Mozilla.
  35. ^ Giles, Ralph; Smole, Martin (28 November 2017). "DASH playback of AV1 video in Firefox". Mozilla Hacks – the Web developer blog.
  36. ^ "Firefox for Android Beta 59.0beta, See All New Features, Updates and Fixes". Mozilla.
  37. ^ Slivka, Eric (15 November 2010). "Hints of 'iTunes Live Stream' Service Found in iTunes 10.1". MacRumors.
  38. ^ "#2943 (Support for HTTP Live Streaming as a client)". VLC bug tracker. 9 July 2009.
  39. ^ "Playing HLS streaming video with VLC player - The VideoLAN Forums". forum.videolan.org.
  40. ^ "Windows 8 - HTTP Live Streaming". www.3ivx.com.
  41. ^ "3ivx - Xbox Live Developer Partner Program - Component Provider". www.3ivx.com.
  42. ^ NV, THEO Technologies. "HTML5 Video Player – THEOplayer". www.theoplayer.com.
  43. ^ Player, Radiant Media. "Version History - Radiant Media Player". www.radiantmediaplayer.com.
  44. ^ "dailymotion – Medium". Medium.
  45. ^ "hls.js demo page". Archived from the original on November 20, 2015.
  46. ^ "Orange-OpenSource/hasplayer.js". GitHub.
  47. ^ "Spark". Spark.
  48. ^ "google/shaka-player". GitHub.
  49. ^ "Shaka Player Demo". shaka-player-demo.appspot.com.
  50. ^ "Fluid Player - HTML5 video player". www.fluidplayer.com.
  51. ^ "Fluid Player Documentation". docs.fluidplayer.com.
  52. ^ "fluid-player/fluid-player". GitHub.
  53. ^ "QMPlay2 - Qt Media Player 2". October 22, 2023 – via GitHub.
  54. ^ "marakew/AvProxy". GitHub.
  55. ^ Ozer, Jan (2015). "Review: Bitcodin, a Cloud Video Encoding Service From Bitmovin". www.StreamingMediaGlobal.com.
  56. ^ "Delivering HLS Video - Brightcove Learning". support.brightcove.com.
  57. ^ "MediaGoom. Essential Web Streaming".