HTTP Live Streaming: Difference between revisions
No edit summary |
Provided example is a link to external website, not playlist example. |
||
Line 25: | Line 25: | ||
'''HTTP Live Streaming''' (also known as '''HLS''') is an [[HTTP]]-based [[media streaming]] [[protocol (computing)|communications protocol]] implemented by [[Apple Inc.]] as part of their [[QuickTime]], [[Safari (web browser)|Safari]], [[OS X]], and [[iOS]] software. It works by breaking the overall stream into a sequence of small HTTP-based file downloads, each download loading one short chunk of an overall potentially unbounded transport stream. As the stream is played, the client may select from a number of different alternate streams containing the same material encoded at a variety of data rates, allowing the streaming session to adapt to the available data rate. At the start of the streaming session, it downloads an [[M3U#Extended M3U|extended M3U]] [[playlist]] containing the metadata for the various sub-streams which are available.<ref>{{cite web|url=http://www.larryjordan.biz/app_bin/wordpress/archives/2369|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> |
'''HTTP Live Streaming''' (also known as '''HLS''') is an [[HTTP]]-based [[media streaming]] [[protocol (computing)|communications protocol]] implemented by [[Apple Inc.]] as part of their [[QuickTime]], [[Safari (web browser)|Safari]], [[OS X]], and [[iOS]] software. It works by breaking the overall stream into a sequence of small HTTP-based file downloads, each download loading one short chunk of an overall potentially unbounded transport stream. As the stream is played, the client may select from a number of different alternate streams containing the same material encoded at a variety of data rates, allowing the streaming session to adapt to the available data rate. At the start of the streaming session, it downloads an [[M3U#Extended M3U|extended M3U]] [[playlist]] containing the metadata for the various sub-streams which are available.<ref>{{cite web|url=http://www.larryjordan.biz/app_bin/wordpress/archives/2369|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> |
||
[[File:Schou FishCam.jpeg|thumb|right|alt=An example HLS live feed from a camera pointed at a fish tank with multiple stream encoding qualities|HLS Live Stream Example: Schou FishCam http://fish.schou.me]] |
|||
Since its requests use only standard HTTP transactions, HTTP Live Streaming is capable of traversing 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 delivered over widely available [[Content delivery network|CDN]]s. |
Since its requests use only standard HTTP transactions, HTTP Live Streaming is capable of traversing 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 delivered over widely available [[Content delivery network|CDN]]s. |
||
Line 240: | Line 239: | ||
* [http://www.gravlab.com/2013/09/23/adaptive-bitrate-calculate-clients-bandwidth-hls-hds-know-chunk-deliver/ Adaptive Bit Rate and HTTP Live - how does the server know how to calculate bandwidth and deliver the right stream?] |
* [http://www.gravlab.com/2013/09/23/adaptive-bitrate-calculate-clients-bandwidth-hls-hds-know-chunk-deliver/ Adaptive Bit Rate and HTTP Live - how does the server know how to calculate bandwidth and deliver the right stream?] |
||
* [http://tools.ietf.org/html/draft-pantos-http-live-streaming Internet-Draft: HTTP Live Streaming: draft-pantos-http-live-streaming] |
* [http://tools.ietf.org/html/draft-pantos-http-live-streaming Internet-Draft: HTTP Live Streaming: draft-pantos-http-live-streaming] |
||
[[Category:Hypertext Transfer Protocol]] |
[[Category:Hypertext Transfer Protocol]] |
Revision as of 10:03, 30 December 2014
Filename extension |
.m3u8 |
---|---|
Internet media type |
application/vnd.apple.mpegurl[1] |
Developed by | Apple Inc. |
Initial release | April 2014 |
Type of format | Playlist |
Extended from | extended M3U |
Standard | draft 13 |
HTTP Live Streaming (also known as HLS) is an HTTP-based media streaming communications protocol implemented by Apple Inc. as part of their QuickTime, Safari, OS X, and iOS software. It works by breaking the overall stream into a sequence of small HTTP-based file downloads, each download loading one short chunk of an overall potentially unbounded transport stream. As the stream is played, the client may select from a number of different alternate streams containing the same material encoded at a variety of data rates, allowing the streaming session to adapt to the available data rate. At the start of the streaming session, it downloads an extended M3U playlist containing the metadata for the various sub-streams which are available.[2]
Since its requests use only standard HTTP transactions, HTTP Live Streaming is capable of traversing any firewall or proxy server that lets through standard HTTP traffic, unlike UDP-based protocols such as RTP. This also allows content to be delivered over widely available CDNs.
HLS also specifies a standard encryption mechanism[3] using AES and a method of secure key distribution using HTTPS with either a device specific realm login or HTTP cookie which together provide a simple DRM system. Later versions of the protocol also provide for trick mode fast-forward and rewind and integration of subtitles. upLynk has also added the AES scrambling and base-64 encoding of the DRM content key with a 128-bit device specific key for registered commercial SWF applications together with a sequential initialization Vector for each chunk to their implementation of the standard.[4]
Apple has documented HTTP Live Streaming as an Internet Draft (Individual Submission), the first stage in the process of submitting it to the IETF as an Informational Request for Comments. However, while Apple has submitted occasional minor updates to the draft, no additional steps appear to have been taken towards IETF standardization.[5]
Architecture
Http Live Streaming uses a conventional web Server to distribute audiovisual content and requires specific software to fit into the proper format transmission in real time.
The service architecture comprises:
Server
Codify and encapsulates the input video flow in a proper format for the delivery. Then it’s prepared for distribution by segmenting it into different files.
Distributor
Formed by standard web Server, accepts requests from clients and delivery all the resources needed for streaming.
Client
Demand and download all the files and resources, assembling them so that they can be presented to the user as a continuous flow video.
Server components
In the process of intake, the video is coded and segmented to generate video fragments and index file.
- Encoder: codify video files in H.264 format and audio in MP3 or HE-AAC. This is encapsulated by MPEG-2 Transport Stream to carry it
- Segmenter: divides the MPEG-2 TS file into fragments of equal length, kept as .ts files. It also creates an index file that contains references of the fragmented files, saved as .m3u8
Client software
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 the continue display to the user. Used different software for desktop computers and phones:
- iPhone iTunes 3.0 or later for iPhone, iPod Touch and iPad.
- QuickTime X for desktop computers.
Scalability and Error protection
HTTP Live Streaming provides mechanisms to provide a scalable and adaptable to network, allowing playback quality in wireless networks with high bandwidth and low quality playback on 3G networks, where the bandwidth is reduced. HTTP Live Streaming also provides protection against errors, generating alternative different flows video to use them if there are any errors in segment.
Scalability
To make the system scalable and adaptable to the bandwidth of the network,video flow is coded in different qualities. Thus, depending on the bandwidth and transfer network speed will play the video with varying quality.
To implement this system must encode the video in different qualities and generate an index file that contains the locations of the different quality levels.
The client software internally manages the different qualities, making requests to the highest possible quality within the bandwidth of the network. Thus always play the video the highest possible quality, viewing lower quality on 3G networks and highest quality in Wi-Fi broadband.
Protection against errors
Protection against errors works like scalability. In this case is generated a different flows with the same quality video and locations are listed in the index file.
The management of all files is done from the client, so that if it fails the first flow, use the next and successively.
HTTP Live Streaming also allows you to combine the protection of errors and scalability. In this case generates an index file that contains for each bandwidth the alternative flows of the videos.
Server implementations
- Adobe Media Server supports HLS for iOS devices (HLS) and Protected HTTP Live Streaming (PHLS).
- Akamai supports HLS for live and on-demand streams.
- Amazon CloudFront supports HLS for on-demand streams.
- Cisco Systems: Supports full end to end delivery for Live/TSTV/VOD/HLS and Cloud DVR services.
- EdgeCast Networks supports cross-device streaming using HLS.
- Helix Universal Server from RealNetworks supports iPhone OS 3.0 and later for live and on-demand HTTP Live or On-Demand streaming of H.264 and AAC content to iPhone, iPad and iPod.
- IIS Media Services from Microsoft supports live and on-demand Smooth Streaming and HTTP Live Streaming.
- Level 3 supports HLS live and on-demand streams.
- Limelight Networks supports HLS for some accounts.[6]
- Nginx with the RTMP Module supports HLS in live mode.
- VODOBOX Live Server supports HLS live streams (Adaptive Bitrate Streaming) and HEVC H265 video compression.
- 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.
- VLC Media Player supports HLS for serving live and on-demand streams as of version 2.0[7]
- Wowza Streaming Engine from Wowza Media Systems supports HLS and encrypted HLS for live (with DVR) and on-demand streaming.
- Anymix Media Server form Anymixmedia.com supports RTMP streams.
Usage
- Adobe Systems demonstrated an update to its Adobe Flash Media Server product supporting HTTP Live Streaming at the NAB Show in April 2011
- Apple Inc. used this on September 1, 2010 to stream their iPod Keynote event live over the internet, and on October 20, 2010 to stream their 'Back to the Mac' Keynote event live over the internet.
- Google added HTTP Live Streaming support in Android Honeycomb and later.[8]
- 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 [9]
- HP added HTTP Live Streaming support in webOS 3.0.5.[10]
- Microsoft added support for HTTP Live Streaming in IIS Media Services 4.0.[11]
- Wowza Media Systems released Wowza Media Server 2.0 with full support for HTTP Live Streaming on December 9, 2009[12]
- Yospace added HTTP Live Streaming support in Yospace HLS Player and SDK for flash version 1.0[13]
- Sling Media added HTTP Live Streaming support to its Slingboxes and its SlingPlayer apps[14]
Supported players and servers
Clients
Product | Live Streaming | DRM | As of Version | Vendor |
---|---|---|---|---|
THEOplayer(HLS in HTML5) | Yes | Partial | OpenTelly | |
Amino x4x STB | Yes | Yes | 2.5.2 Aminet | Aminocom.com |
Android | Yes | Yes | Browser: 3.0-4.0.x Media Player: 3.0+ |
|
3ivx HLS Player SDK for Windows 8, Windows Phone 8 [15] & Xbox One [16] | Yes | Yes | 2.0 | 3ivx |
iOS | Yes | Yes | 3.0+ | Apple |
QuickTime Player | Yes | Yes | 10+ | Apple |
ffplay/avplay | Yes | Partial | FFmpeg/Libav | |
WebOS (HP Touchpad) | Yes | Yes | 3.0.5 | HP |
DicePlayer (Android 2.2+) | Yes | Yes | Diceplayer 1.0+ | INISOFT |
MythTV | Yes | Yes | 0.26 | MythTV |
nangu.TV on Motorola STB | Yes | Yes | 2.0 | nangu.TV |
HLS Streaming Player and SDK for Flash [13] | Yes | Yes | 2.1 | Yospace |
HLS Streaming Player and SDK for Flash [17] | Yes | Yes | 2.0 | Onlinelib.de |
Roku Digital Video Player | Yes | Yes | Roku OS / SDK 2.6 | Roku |
GPAC (cross-platform media player) | Yes | No | 0.5.0 | Telecom ParisTech inc. |
VODOBOX HLS Player (free online player for iOS, Android, Flash) | Yes | Yes | VODOBOX | |
VLC media player | Yes | No | 2.0[18] | VideoLAN |
XBMC Media Center (cross-platform media player) | Yes | Partial | 12.0 Alpha 5 and later DRM support requires a monthly/nightly build |
XBMC Foundation |
NexPlayer SDK (OTT multiscreen player)[19] | Yes | Yes | NexStreaming |
Servers
Product | Technology | As Of Version | Vendor | Notes |
---|---|---|---|---|
VLC | 1.2 | |||
Unicorn Once | SaaS | Unicorn Media | ||
IIS Media Services | 4.0[11] | Microsoft | ||
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 | |
Adobe Media Server | Live and VOD streaming as origin and edge server | 5.0 | Adobe | |
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 | |
MythTV | 0.25 | MythTV | ||
MACNETIX VOD-Server | 3.0 | MACNETIX | ||
Anevia ViaMotion Servers | Transcapsulation: from one input, several outputs (HLS, MS Smooth Streaming, ADS Flash, MPEG DASH) |
Anevia | ||
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 | |
nangu.TV Streamers | on-the-fly adaptation: content is stored once enabling several outputs (HLS, MS Smooth Streaming, ADS Flash, MPEG DASH) |
nangu.TV | ||
TVersity Media Server | 1.9 | TVersity | Pro Edition only | |
Helix Universal Server | Live + VOD HLS with Verimatrix DRM integration, ABR, Multi-Resolution, AES encryption | 15.0+ | RealNetworks | 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 | |
Unified Streaming Platform | Muxes media content from one unified source to multiple outputs (Smooth Streaming, HDS, HLS and MPEG DASH) | Unified Streaming | ||
Flixwagon Platform Video Server | Flixwagon | |||
StreamCoder Live Encoder | Realtime video encoder (inputs : DVB/IP stream or video signal). Supports multi-bitrates and multi-languages | Ektacom | ||
VODOBOX Live Server | Supports HTTP Live Streaming with multi-bitrates (compliant with iOS, Android and HLS Flash Player) | 1.0 | Vodobox | Live transcoding from DVBT tuner, IP streams, Microsoft DirectShow video sources (video capture cards, live production software, camera) to mobile devices |
Apache HTTP Server | Apache Software Foundation | |||
Mistserver | RTMP to HLS | 1.1-pre | DDVTECH | |
Unreal Media Server | 9.5 | Unreal Streaming Technologies | Latency of live streams can be as low as 2.5 seconds over the Internet | |
InstaTV Server | 1.0 | InstaTV | Live transcoding and streaming of broadcasting TV using any Windows compatible digital tuner to mobile devices | |
lighttpd | 1.4.x | |||
Nimble Streamer | RTMP / UDP MPEG-TS to ABR HLS. MP4 / MP3 to VOD HLS | 1.0.0-x | WMSPanel | |
Nginx-rtmp-module | Free module for nginx server with support of HLS live streaming. Compliant with iOS and Android. | 0.9.x | Roman Arutyunyan | |
Nginx Plus | VOD HLS as origin | NGINX, Inc. | ||
Flussonic Media Server | Multi-platform support for HTTP, RTSP, RTMP, Time Shifting, DVR Functions with Unlimited Rewind Capabilities HLS streaming specific to iOS platform support. | 3.0+ | Flussonic, LLC. | Supporting a magnitude of features with full HTTP support. |
VBrick Distributed Media Engine ("DME") | 2.0 | VBrick Systems, Inc. | Live and stored HLS. Live can be transmuxed from several input mux including RTP, RTMP, and MPEG-TS using H.264 encoding |
Encoders
Product | Technology | As Of Version | Vendor | Notes |
---|---|---|---|---|
VODOBOX HLS Encoder | Convert video files to pre-encoded HLS streams ready to be hosted by Apache/IIS Web servers | 1.0 | Vodobox | Transcode classic video files (avi, mp4, m2ts, ...) into HLS streams with multi-bitrates for VOD or replay usage. |
See also
References
- ^ Pantos, R.P. (April 2014). "HTTP Live Streaming draft-pantos-http-live-streaming-13". Network Working Group: 1.
- ^ Jordan, Larry (10 June 2013). "The Basics of HTTP Live Streaming". Larry's Blog. Larry Jordan & Associates. Retrieved 18 June 2013.
- ^ Pantos, R. (30 September 2011). "HTTP Live Streaming". Internet Engineering Task Force. Retrieved 18 June 2013.
- ^ "Application keys". Digital rights management (DRM). upLynk Support. Retrieved 18 June 2013.
- ^ "Internet Drafts are not Open Standards". Anne van Kesteren. Retrieved 30 July 2011.
- ^ "Limelight Orchestrate Video Support". Limelight Networks. Retrieved 14 November 2013.
- ^ "Streaming HowTo: Streaming for the iPhone". VideoLAN Wiki. Retrieved 21 May 2011.
- ^ "Android 3.0 Platform Highlights".
- ^ http://www.flashls.org
- ^ "webOS 3.0.5 Updates".
- ^ a b "First Look: Microsoft IIS Media Services 4". StreamingMedia.com. Retrieved 30 July 2011.
- ^ "Wowza Unifies Media Streaming, Sets Performance Record, Slashes Costs with Production Launch of Wowza Media Server 2 for Flash, iPhone and Beyond". Wowza Media Systems. Retrieved 25 August 2012.
- ^ a b "HLS Streaming Player and SDK for Flash". Yospace. Retrieved 28 June 2012.
- ^ Blogcritics, November 26, 2010. iPad App Review: SlingPlayer (Retrieved April 14, 2014)
- ^ http://www.3ivx.com/technology/windows/metro/http_live_streaming.html
- ^ http://www.3ivx.com/xbox/
- ^ "HLS Streaming Player and SDK for Flash". Onlinelib. Retrieved 13 September 2012.
- ^ https://trac.videolan.org/vlc/ticket/2943 VLC Ticket #2943 (Support for HTTP Live Streaming as a client)
- ^ http://nexstreaming.com
External links
- Daniel Eran Dilger (July 8, 2009). "Apple launches HTTP Live Streaming standard in iPhone 3.0". Apple Insider. Retrieved 2009-07-10.
- Adaptive Bit Rate and HTTP Live - how does the server know how to calculate bandwidth and deliver the right stream?
- Internet-Draft: HTTP Live Streaming: draft-pantos-http-live-streaming