背景需求
对于摄像机直播,客户反馈的最多就是实现web直播、摆脱插件,可以自定义集成等问题,
对于熟悉LiveGBS已经完美的解决了这些问题。然而对于web播放也存在一些问题,通常我们web播放RTMP流使用的是flash,在这个过程中就会出现一个问题,随着web一直播放直播时间的增加,视频直播的延时也会累积起来,延时也就越大。
问题分析
通过自我调研和客户反馈得出在ckplayer、videojs、aliplayer等播放器都会有类似问题,出现该问题的原因在于我们播放rtmp视频流的时候启用了flash,咱们的LiveGBS调用的videojs播放rtmp视频流依然会有这个问题的存在。
解决参考
videojs是一款开源的播放器,对于播放器自身定位不一定是实时的直播。我们对他进行了重新的编译,将缓存设置更小,同时videojs也有对应的参数是用来对应播放实时流的。
经过我们实时的测试发现,编译出的低延时,追帧版本的播放器在实测过程中对网络有一定的要求,因为播放器在播放时为了保证实时性就会一直追帧,这样就不会存在累计延时的情况了,但是,当网络环境差的时候,我们的网络无法完全满足直播视频数据时就会在直播会面中出现类似掉帧的情况。
LiveGBS的处理方式
LiveGBS是实时的进行直播视频流,因此在视频的web直播中我们也有遇到延时累计的问题。我们采用的方式是将两个播放形式都集成到我们的播放系统中,并且可以通过播放页面来进行播放模式的选择
我们将直播分为了实时直播和流畅直播,顾名思义,实时就是保证直播的实时性,保证播放器的低延时直播;流畅直播则为可以在网络环境不是特别理想的情况下依然可以 进行流畅的视频直播。
注意 为了方便用户的集成,我们将videojs的功能通封装成播放器 liveplayer,
具体调用方式和使用方法见链接:https://www.npmjs.com/package/@liveqing/liveplayer