咱们最多见的流媒体协议的RTMP协议,在网络和硬件正常好的状况下,延迟能够达到1-3s左右,它也是目前主流视频直播中最多见的协议,像咱们的安防流媒体服务器也支持这种协议的视频流输出。ios
为何到如今尚未 HTML5 上的实时(延迟 < 3s)视频流协议?理论上利用 websocket + AVC TS 是能够实现的,可是正常总会遇到不少现实的问题。web
在h5页面中,若是要用RTMP或HTTP-FLV,须要基于浏览器开发插件,然而浏览器有不少种,同时,基于别人的浏览器作插件,基本是不可能的。苹果公司开放了HLS协议,这种协议在h5中不须要插件便可进行播放,解决了在h5页面中直播的问题。浏览器
然而,对于直播来讲,HLS协议仍是存在不少问题:服务器
一、播放时须要屡次请求,对于网络质量的要求更高
二、延迟在10s左右
三、同时还存在延时累积,好比一分钟内的延迟有5s,看了10分钟后,延迟可能会达到50s
四、只能支持拉流,不支持推流websocket
H5中播放直播的场景主要是,以ios、安卓为主要平台,分享到第三方应用中,经过hls协议拉流,来为app引流。此外,要想作到HLS小于3秒的延时,理论上是能够的,这须要看你ts分片的大小,和一个m3u8存储多少个ts的分片的索引。网络
若是一个m3u8存储6个ts的分片索引,每一个分片为5s,那么就起码有30s的延时。只要把分片的时长减小,好比减小到250ms每一个分片,一个m3u8只存储一个ts分片,那么理论延时就只有250ms。可是这样的话,每秒钟至少有4次的HTTP请求,而且由于每个ts分片都有I帧,大大增大了须要传送的带宽。app
会给服务器带来不少压力,也会增长流量上的消耗,因此整体上很难有兼顾带宽,延时和减轻服务器压力的HLS方案。socket