HTTP Live Streaming  (HLS) Executive Summary

HTTP Live Streaming (or HLS) is an adaptive streaming communications protocol created by Apple to communicate with iOS and Apple TV devices and Macs running OSX in Snow Leopard or later. HLS can distribute both live and on-demand files and is the sole technology available for adaptively streaming to Apple devices, which is an increasingly important target segment to streaming publishers.

HLS is widely supported in streaming servers from vendors like AdobeMicrosoftRealNetworks, and Wowza, as well as real time transmuxing functions in distribution platforms like those from Akamai. The popularity of iOS devices and this distribution-related technology support has also led to increased support on the player side, most notably from Google in Android 3.0.

In the Apple App Store, if you produce an app that delivers video longer then ten minutes or greater than 5MB of data, you must use  HTTP Live Streaming, and provide at least one stream at 64Kbps or lower bandwidth. Any streaming publisher targeting iOS devices via a website or app should know the basics of HLS and how it’s implemented.

How HLS Works

At a high level, HLS works like all adaptive streaming technologies; you create multiple files for distribution to the player, which can adaptively change streams to optimize the playback experience. As an HTTP-based technology, no streaming server is required, so all the switching logic resides on the player.

To distribute to HLS clients, you encode the source into multiple files at different data rates and divide them into short chunks, usually between 5-10 seconds long. These are loaded onto an HTTP server along with a text-based manifest file with a .M3U8 extension that directs the player to additional manifest files for each of the encoded streams.


Figure 1. HLS uses multiple encoded files with index files directing the player to different streams and chunks of audio/video data within those streams.

The player monitors changing bandwidth conditions. If these dictate a stream change, the player checks the original manifest file for the location of additional streams, and then the stream-specific manifest file for the URL of the next chunk of video data. Stream switching is generally seamless to the viewer.

https://www.streamingmedia.com/Articles/ReadArticle.aspx?ArticleID=78221

最新文章

  1. The 11 advantages of Java -Why you choose this language
  2. Navicat premium工具常用快捷键
  3. vi/vim 的使用
  4. 手把手写php框架中三大“自动功能”
  5. vs.net_2003 下载 虽然是老古董了,但还是很有用的。
  6. JavaScript:JavaScript事件的处理
  7. git撤销删除
  8. pragma指令简介
  9. Bmob Androidstudio配置
  10. ZOJ2401 Zipper 双塔式 DP
  11. HighCharts之2D折线图
  12. highstaock+websocket实现动态展现
  13. 消息队列(MQ)
  14. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Clien
  15. Linux——高效玩转命令行
  16. @PostConstruct注解小结
  17. C++ Primer 笔记——命名空间
  18. JavaSE | IO流
  19. CSS【06】:CSS显示模式
  20. Linux下查看tomcat控制台输出信息

热门文章

  1. JSP JSTL
  2. FPM十:FORM Repeater
  3. 剑指offer-08 二叉树的下一个节点
  4. 【转】Pandas学习笔记(六)合并 merge
  5. 遍历php的_SERVER数组键值信息
  6. Python面试题(1)
  7. 用Python玩转微信
  8. RF元素定位的例子
  9. Git 游离的HEAD detached HEAD git reflog 查看所有提交的 id
  10. index获取子DOM对象在父DOM对象的内位置索引值