• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
HTTP Live Streaming

HTTP Live Streaming



Overview of Apple\'s HTTP Live Streaming (HLS)

Overview of Apple\'s HTTP Live Streaming (HLS)



Total Views
Views on SlideShare
Embed Views



3 Embeds 26

http://www.slashdocs.com 12
http://www.linkedin.com 8
https://www.linkedin.com 6



Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

    HTTP Live Streaming HTTP Live Streaming Presentation Transcript

    • (Apple) HTTP Live Streaming (HLS) Dynamically adapting video streaming to network conditions Auro Tripathy
    • Outline• The basics of adaptive streaming• A Wireshark view• New tags defined by the HLS protocol• A comparison with other adaptive streaming protocolsNovember 8, 2011 Auro 2
    • HLS Streaming Architecture Content Preparation HTTP Content Server Media MediaEncoder Segmenter Index HTTP File Cache SegmentNovember 8, 2011 Auro 3
    • The Basics of HLS• Protocol for transmitting alternate versions (i.e., bitrates) of the stream• Media can be served soon after its created – Not actually “live”, but near real-time• Specify a presentation with the URI of a playlist file• A playlist file is an ordered list of media URI and info tags• Each media URI refers to a media file which is a segment of a single contiguous fileNovember 8, 2011 Auro 4
    • How does the client play the stream?• Client first obtains the playlist file – Initial playlist file may contain alternates (see next slide)• Client decides which alternate playlist file to play• Gets and plays each media file in the playlist.November 8, 2011 Auro 5
    • Server Provides Alternate Playlists to Clients Server Alternate 1 Index File TS Segment Index Alternate 2 File Index w/alternates File TS Segment Alternate 3 Index File TS SegmentNovember 8, 2011 Auro 6
    • M3U format – the History• M3U stands for MP3 URL.• Files that contain the .M3U file-extension are MP3 playlist files – commonly referred to as Winamp playlist files• Important to remember, this file does not contain media, only references to media• Files whose name end with .m3u are encoded with US-ASCII.• The unicode version of "m3u" is "m3u8", which uses UTF-8 unicode charactersNovember 8, 2011 Auro 7
    • Extended M3U• Defines two tags: EXTM3U & EXTINF• First line must be #EXTM3U – This distinguishes it from a M3U file• EXTINF is a record marker that describes the media file identified by the URI that follows it.• Example #EXTM3U #EXTINF:<duration>, <title> http://media.example.com/entire.tsNovember 8, 2011 Auro 8
    • Server Tasks to Achieve HLS• Encode video in H.264 format and Single Program Transport Stream “container” – Encode in different bitrates – taken from live feed or from a file• Use a stream segmenter to generate short “chunks” of content – typically 10 seconds each - and generate a playlist file (m3u or m3u8) indicating from where to download the chunks• Serve via HTTP server, and provide appropriate caching for performanceNovember 8, 2011 Auro 9
    • Who supports HLS?• Apple, of course – Authored the protocol http://tools.ietf.org/html/draft-pantos-http-live- streaming-07• Support available in Android 3.0 – http://developer.android.com/sdk/android-3.0- highlights.htmlNovember 8, 2011 Auro 10
    • Deconstructing HLS with Wireshark
    • Server Offering Multiple Playlist Files Different encodings of the same presentation Client request Server offers four alternative playlists at 200 Kbps, 311.1 Kbps, 484.4 Kbps & 737.8 KbpsNovember 8, 2011 Auro 12
    • Client fetches the first Playlist File Client request 200 Kbps playlist Duration of segment in seconds; appears once Segment URLsNovember 8, 2011 Auro 13
    • Note - Playlist file ends with a #EXT-X-ENDLIST Indicates no more media files will be added to the Playlist fileNovember 8, 2011 Auro 14
    • Client fetches the second Playlist FileNovember 8, 2011 Auro 15
    • Client fetches the 3rd Playlist File November 8, 2011 Auro 16
    • Client fetches the 4th Playlist FileNovember 8, 2011 Auro 17
    • Client requests a Media File to PlayNovember 8, 2011 Auro 18
    • Summarizing the Sequence Server Client Respond with four alternate playlists Location of all segments in Playlist Location of all segments in Playlist Respond with A/V dataNovember 8, 2011 Auro 19
    • VLC Plays HLS Test Filehttp://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8November 8, 2011 Auro 20
    • New Tags defined in HLS
    • Tag – EXT-X-TARGETDURATION• EXT-X-TARGETDURATION:<s> – Specifies the maximum media file duration – Appears only once in the playlist file – <s> is an integer indicating the duration in secondsNovember 8, 2011 Auro 23
    • Tag – EXT-X-MEDIA-SEQUENCE• Each media file URI in a playlist must have a unique integer number• Sequence # := Sequence # of URI that preceded it + 1• Tag indicates the sequence number of the first URI that appears in the playlist file• Format EXT-X-MEDIA-SEQUENCE:<number>November 8, 2011 Auro 24
    • Tag – EXT-X-KEY• Contains information to decrypt media files that follow it• Format #EXT-X-KEY:<attribute-list>• METHOD attribute specifies encryption method (AES-128 or NONE)• URI attribute identifies the Key file – Key file contains the cipher key to decrypt subsequent media files in the Playlist – Quoted string with URI• IV attribute specifies the initialization vector to be used with the keyNovember 8, 2011 Auro 25
    • Tag – EXT-X-PROGRAM-DATE- TIME• Associated with the next media file• Should indicate a time zone• Format EXT-X-PROGRAM-DATE-TIME:<YYYY-MM-DDThh:mm:ssZone>November 8, 2011 Auro 26
    • Tag – EXT-X-ALLOW-CACHE• Indicates whether a client MAY or MUST- NOT cache downloaded media files for later playback.• Tag applies to all segments in the playlist• Format #EXT-X-ALLOW-CACHE:<YES|NO>November 8, 2011 Auro 27
    • Tag - EXT-X-PLAYLIST-TYPE• Optional tag provides mutability information about the playlist file• Format: #EXT-X-PLAYLIST-FILE:<Event|VoD>November 8, 2011 Auro 28
    • Tag – EXT-X-ENDLIST• Indicates no more media files will be added to the Playlist file• Occurs only once• Format: #EXT-X-ENDLISTNovember 8, 2011 Auro 29
    • Tag – EXT-X-STREAM-INF• Tag indicates that the next URI in the playlist file indentifies another playlist file• Format/example #EXT-X-STREAM-INF:<attribute-list> <URI of playlist file>• Defined attributes – BANDWIDTH – PROGRAM-ID – CODECS – RESOLUTIONNovember 8, 2011 Auro 30
    • Tag – EXT-X-DISCONTINUITY• Tag indicates an encoding discontinuity between the media file that follows it and the one that preceded it• Reason – File format change – Number and type of tracks – Encoding parameters – Encoding sequence – Timestamp sequence• Format – #EXT-X-DISCONTINUITYNovember 8, 2011 Auro 31
    • Tag – EXT-X-VERSION• Tag indicates the compatibility version of the Playlist file• One occurrence• Format #EXT-X-VERSION:<n>November 8, 2011 Auro 32
    • Media Files• Media files are formatted as MPEG-2 transport streams• It’s a singe program transport stream• Should have a PAT/PMT at the start of each files• Client should be able to handle any encoding parameter change such as a resolution changeNovember 8, 2011 Auro 33
    • Key Files• The EXT-X-KEY tag has the URI and the IV attributes to identify the key file and the Initialization Vector• If the IV is not present, client must use the sequence number of the media file as the IV• Note, varying the IV increases the strength of the cipherNovember 8, 2011 Auro 34
    • Conclusion – Lots of upside with the protocol• Uses the HTTP protocol – Firewall-friendly – HTTP server are ubiquitous thus reducing operational complexity – Unifies the delivery for three screens (TV/Mobile/Tablet) – Scales, no session state on the HTTP server• Chunked transfers allow the client to compensate/optimize in near real-time for varying network conditionsNovember 8, 2011 Auro 35
    • Conclusion – Potential Downsides• Choice of MPEG-2 single program transport streams – 188 byte packet structure with 4-byte header creates non-negligible overhead• VCR-like trick-modes (seek to a time forward or backward) can cause noticeable delays if the segment size is largeNovember 8, 2011 Auro 36