随着直播业务的大众化,直播过程中的技术也面临着越来越多的挑战。而延时影响用户体验的一个十分重要的因素。
直播过程中的延时是指从主播端采集,到观众端播放之间的时间差,主要来源于网络传输中的延时、网络抖动、网络丢包等等情况,短则1s-2s, 长则15以上,严重时可导致用户无法观看,所以解决直播延时问题一直是技术亟待解决的痛点。
我们知道PCDN是以P2P技术为基础,通过挖掘利用边缘网络海量碎片化闲置资源而构建的内容分发网络,它具有低成本、高品质的特点,十分适用于视频直播这一业务场景。针对直播中延时的情况,PCDN也进行了一系列优化,近期上线了flash无延时直播方案,下面我们将来介绍下无延时直播方案的技术原理和实现。
首先,我们来看看无延时传输策略是怎样的?
第一,切片大小是影响延时的直接因素,无延时直播的切片小,避免了因为切片过大的原因出现播放延时,同时P2P传输不会分包,提高传输效率。
第二,无延时直播采用订阅/推送模式,订阅子流,推送模式进行分享调度,满足直播的实时要求。
第三,当订阅/推送模式在peer退出时出现切片空洞,则使用快速补片的方式保证数据连续性和播放流畅度。
PCDN flash无延时直播整体服务架构
1、主播通过rtmp协议将直播流推送到阿里CDN
2、切片服务通过rtmp协议从阿里CDN拉取直播流并进行切片
3、阿里CDN再通过http协议拉取切片流,最终通过websocket协议分发到PCDN网络
那么无延时直播和有延时直播的区别是什么?
第一,切片类型不同
有延时直播切片按照时间切片,切片时长可配置,基本是在1s或500ms;
无延时直播切片按照大小切片,默认是1KB。
第二,分发类型
有延时直播,按照点播文件分发,每个切片都是单独的文件;
无延时直播,按照流式分发,与CDN L2节点维持长连接,通过http协议流式传输。
第三,CDN L1节点与终端传输协议不同
有延时直播是http协议,不支持持久连接
无延时直播是websocket协议,支持持久连接
我们可以看出,无延时直播方案是从直播流实时处理和传输分发等层面分别进行了优化,从而实现了流畅的直播用户体验。
PCDN flash无延时直播具有几大优势:
第一,可以支持大直播场景(重要赛事、大型活动、在线教育),服务端可以支撑上百万的同时在线量。
第二,P2P智能调度,可以从上百万的peer中选择与当前peer连通性最好的一批peer,确保更精准、更快速的数据传输。
第三, 支持热点自发现,仅为热点直播提供P2P服务,最大程度提升P2P效率,帮助用户节省成本。
第四,指标表现优异:平均延时小于 1s , 和CDN相比无延时,直播流畅率> 99%,同时P2P分享率可达30%-60%。
感兴趣的用户,可以在官网申请书使用,通过播放器加载SDK,SDK提供出LiveStream类,该类继承自flash.net.NetStream,播放器可使用NetStream类调用play函数播放对应的直播流,实现flash无延时直播。