近两年,游戏、教育等直播类产品层出不穷,全方位满足人们的知识、休闲、游戏等需求。在直播中,我们经常发现,不同类型的直播延时有所不同,像与主播实时互动的一般延迟比较短,而相对的,在线教育这一类就比较长了。
造成延时不同的原因,除了网络环境以外,对延时影响较大的就是直播架构中选择的直播协议。接下来,我就给大家简单介绍下常见的直播协议吧。
RTMP协议
目前cdn厂商推流多用rtmp协议,实时性比HLS好,所以一般使用这种协议来上传视频流,即推动视频流到服务器。
HTTP-FLV协议
HTTP-FLV 和 RTMP 类似,都是针对于 FLV 视频格式做的直播分发流。但,两者有着很大的区别。
[if !supportLists]u [endif]直接发起长链接,下载对应的FLV文件
[if !supportLists]u [endif]头部信息简单
现在市面上,比较常用的就是HTTP-FLV 进行播放。但,由于手机端上不支持,所以,H5 的 HTTP-FLV 也是一个痛点。
HLS协议
HLS 协议本质还是一个个的 HTTP 请求 / 响应,所以适应性很好,在多数cdn厂商放在点播平台运行,不会受到防火墙影响。但它也有一个致命的弱点:延迟现象非常明显。如果每个ts 按照 5 秒来切分,一个 m3u8 放 6 个 ts 索引,那么至少就会带来 30 秒的延迟。如果减少每个 ts 的长度,减少 m3u8 中的索引数,延时确实会减少,但会带来更频繁的缓冲,对服务端的请求压力也会成倍增加。因此在延迟和实时性上需要作出平衡。
说明:
目前国内cdn厂商支持的多为rtmp推流,flv和hls拉流,客户端分发具体用哪种协议,根据客户端特性自适应选择。