HTTP Live Streaming,缩写为HLS,是由苹果公司提出基于HTTP的流媒体网络传输协议。是苹果公司QuickTime X和iPhone软件系统的一部分。它的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。
当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的扩展 M3U (m3u8) 播放列表文件,用于寻找可用的媒体流。
HLS只请求基本的HTTP报文,与实时传输协议(RTP)不同,HLS可以穿过任何允许HTTP数据通过的防火墙或者代理服务器。它也很容易使用内容分发网络来传输媒体流。
苹果公司把HLS协议作为一个互联网草案(逐步提交),在第一阶段中已作为一个非正式的标准提交到IETF。2017年8月,RFC 8216发布,描述了HLS协议第7版的定义。
扩展资料:
客户端支持
1、 iOS从3.0开始成为标准功能。
2、 Adobe Flash Player从11.0开始支持HLS。
3、 Google的Android自Honeycomb(3.0)开始支持HLS。
4、 VODOBOX HLS Player (Android,iOS, Adobe Flash Player)
5、 JWPlayer (Adobe Flash)
6、 Flowplayer (Adobe Flash,使用hlsjs版本不使用Adobe Flash)
7、 Windows 10 的 EDGE 浏览器开始支持HLS。
代码例子:<link href="/5.8.8/video-js.css" rel="stylesheet">
<video id="example-video" width=960 height=540 class="video-js vjs-default-skin" controls poster="*.jpg">
<source src="/test-vedio-hls.m3u8" type="application/x-mpegURL">
</video>
<script type="text/javascript" src="/video.min.js"></script>
<script type="text/javascript" src="/videojs.hls.min.js"></script>
<script type="text/javascript">
var player = videojs('example-video')
//player.play()
</script>
起个localhost/访问。
有,而且也很多。1.在目前支持较好的仍然是使用FlashPlayer来播放m3u8格式的视频,这样能够很好的利用计算机的性能,使视频质量达到最优良的效果,但不是h5。2.H5支持的视频格式,默认使用的是video标签,但是video不支持m3u8格式,因此需要用到开源的js库来解码视频流。3.总结调研结果,推荐常用的有hls.js,video.js,都是开源免费。还有几个需要注册才能使用的,不罗列说明。4.原生的标签支持,目前无法实现,再浏览器的不断更新迭代基础上,未来是会支持的,不需要我们自己扩展。5.除了3中说的几个,还有很多浏览器插件支持的方式,比如vlc插件,就很好用。总结,推荐在github上搜索hls.js,会发现很多可用的内容。