简谈HLS

 

世界是属于直播的~~~...



HLS协议,全称HTTP Live Streaming,现在是移动端直播通用的跨平台解决方案,IOS和安卓都支持,一般直播的时候发一个hls的链接就可以兼容两个平台。

在苹果公司的技术文档描述中HLS组网由三部分组成,后台服务器端Server 、分发模块Distribution 、以及客户端Client。



HLS里面有两个比较关键的概念,m3u8文件和ts切片。简单来讲HLS的实现方式是把视频源切分成多个ts视频切片(H.264编码,AAC音频编码),然后需要一个索引文件把多个ts视频切片串联起来,也就是m3u8文件。所以常见的hls链接经常是一个m3u8后缀的链接,例如:http://****.com.cn/***.m3u8,播放终端则是通过这个m3u8索引文件获取ts切片视频,然后按序播放。

m3u8索引文件示例,就算是不懂代码也大概能看懂:



HLS应用于移动端直播虽然解决了跨平台的兼容性问题,但是也带来了另一个问题就是延迟特别大。从上文也可以看出,hls的延迟至少是一个ts切片的长度,苹果官方对于ts切片时长的建议是10秒,应用中有些流媒体服务器会把ts切片设为5秒。另一方面,“貌似”手机播放hls视频时并不是下载一个ts切片就播放,有个说法是一般下载3-5个切片才开始播放(不确定),所以实际的延迟至少有3个ts切片时长,再加上网络传输延迟、CDN延迟等等,实际中HLS的延迟至少也要20秒左右了。

那么根据hls的原理,理论上减少ts切片时长就可以降低延迟,但是这就会带来客户端请求服务器频次上升加大服务器负载、抵抗网络抖动能力变差等问题,所以实际应用中很少有将ts切片时长设置低于5秒。

再看一个好玩的H5直播视频页面的解析:



然后,只要一个“全屏播放”就原生播放器覆盖一切了(哭笑不得脸


    关注 不辣的熊猫


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册