(Apple) HTTP Live Streaming           (HLS)       Dynamically adapting video    streaming to network conditions           ...
Outline•   The basics of adaptive streaming•   A Wireshark view•   New tags defined by the HLS protocol•   A comparison wi...
HLS Streaming Architecture Content Preparation                              HTTP Content Server Media           MediaEncod...
The Basics of HLS• Protocol for transmitting alternate versions  (i.e., bitrates) of the stream• Media can be served soon ...
How does the client play the               stream?• Client first obtains the playlist file     – Initial playlist file may...
Server Provides Alternate              Playlists to Clients                                  Server                    Alt...
M3U format – the History• M3U stands for MP3 URL.• Files that contain the .M3U file-extension are  MP3 playlist files     ...
Extended M3U• Defines two tags: EXTM3U & EXTINF• First line must be #EXTM3U     – This distinguishes it from a M3U file• E...
Server Tasks to Achieve HLS• Encode video in H.264 format and Single  Program Transport Stream “container”     – Encode in...
Who supports HLS?• Apple, of course     – Authored the protocol     http://tools.ietf.org/html/draft-pantos-http-live-    ...
Deconstructing HLS with      Wireshark
Server Offering Multiple Playlist Files                   Different encodings of the same presentation                    ...
Client fetches the first Playlist File                            Client request 200 Kbps                            playl...
Note - Playlist file ends with a #EXT-X-ENDLIST                    Indicates no more media files                    will b...
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                        ...
VLC Plays HLS Test Filehttp://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8November 8, 2011              Auro  ...
New Tags defined in HLS
HLS defines the following new tags          Each with it own attribute list •   EXT-X-TARGETDURATION •   EXT-X-MEDIA-SEQUE...
Tag – EXT-X-TARGETDURATION• EXT-X-TARGETDURATION:<s>     – Specifies the maximum media file duration     – Appears only on...
Tag – EXT-X-MEDIA-SEQUENCE• Each media file URI in a playlist must have  a unique integer number• Sequence # := Sequence #...
Tag – EXT-X-KEY• Contains information to decrypt media files that  follow it• Format     #EXT-X-KEY:<attribute-list>• METH...
Tag – EXT-X-PROGRAM-DATE-                TIME• Associated with the next media file• Should indicate a time zone• Format   ...
Tag – EXT-X-ALLOW-CACHE• Indicates whether a client MAY or MUST-  NOT cache downloaded media files for  later playback.• T...
Tag - EXT-X-PLAYLIST-TYPE• Optional tag provides mutability  information about the playlist file• Format:     #EXT-X-PLAYL...
Tag – EXT-X-ENDLIST• Indicates no more media files will be  added to the Playlist file• Occurs only once• Format:     #EXT...
Tag – EXT-X-STREAM-INF• Tag indicates that the next URI in the playlist  file indentifies another playlist file• Format/ex...
Tag – EXT-X-DISCONTINUITY• Tag indicates an encoding discontinuity  between the media file that follows it and the  one th...
Tag – EXT-X-VERSION• Tag indicates the compatibility version of  the Playlist file• One occurrence• Format     #EXT-X-VERS...
Media Files• Media files are formatted as MPEG-2  transport streams• It’s a singe program transport stream• Should have a ...
Key Files• The EXT-X-KEY tag has the URI and the  IV attributes to identify the key file and the  Initialization Vector• I...
Conclusion – Lots of upside with         the protocol• Uses the HTTP protocol     – Firewall-friendly     – HTTP server ar...
Conclusion – Potential                        Downsides• Choice of MPEG-2 single program  transport streams     – 188 byte...
Upcoming SlideShare
Loading in …5
×

HTTP Live Streaming

15,707
-1

Published on

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

HTTP Live Streaming

  1. 1. (Apple) HTTP Live Streaming (HLS) Dynamically adapting video streaming to network conditions Auro Tripathy
  2. 2. 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
  3. 3. HLS Streaming Architecture Content Preparation HTTP Content Server Media MediaEncoder Segmenter Index HTTP File Cache SegmentNovember 8, 2011 Auro 3
  4. 4. 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
  5. 5. 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
  6. 6. 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
  7. 7. 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
  8. 8. 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
  9. 9. 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
  10. 10. 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
  11. 11. Deconstructing HLS with Wireshark
  12. 12. 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
  13. 13. Client fetches the first Playlist File Client request 200 Kbps playlist Duration of segment in seconds; appears once Segment URLsNovember 8, 2011 Auro 13
  14. 14. 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
  15. 15. Client fetches the second Playlist FileNovember 8, 2011 Auro 15
  16. 16. Client fetches the 3rd Playlist File November 8, 2011 Auro 16
  17. 17. Client fetches the 4th Playlist FileNovember 8, 2011 Auro 17
  18. 18. Client requests a Media File to PlayNovember 8, 2011 Auro 18
  19. 19. 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
  20. 20. VLC Plays HLS Test Filehttp://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8November 8, 2011 Auro 20
  21. 21. New Tags defined in HLS
  22. 22. HLS defines the following new tags Each with it own attribute list • EXT-X-TARGETDURATION • EXT-X-MEDIA-SEQUENCE • EXT-X-KEY • EXT-X-PROGRAM-DATE-TIME • EXT-X-ALLOW-CACHE • EXT-X-PLAYLIST-TYPE • EXT-X-STREAM-INF • EXT-X-ENDLIST • EXT-X-DISCONTINUITY • EXT-X-VERSION November 8, 2011 Auro 22
  23. 23. 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
  24. 24. 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
  25. 25. 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
  26. 26. 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
  27. 27. 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
  28. 28. 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
  29. 29. 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
  30. 30. 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
  31. 31. 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
  32. 32. 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
  33. 33. 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
  34. 34. 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
  35. 35. 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
  36. 36. 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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×