背景需求
对于摄像机直播,客户反馈的最多就是实现web直播、摆脱插件,可以自定义集成等问题。
我们熟悉的EasyNVR已经完美的解决了这些问题。然而对于web播放也存在一些问题,通常我们web播放RTMP流使用的是flash,在这个过程中就会出现一个问题,随着web端一直播放,直播时间的增加,视频直播的延时也会累积起来,延时也就越大。
问题分析
实际上在很多播放器都会有类似问题,出现该问题的原因在于我们播放rtmp视频流的时候启用了flash,咱们的EasyNVR调用rtmp视频流也有这个问题存在。
解决参考
EasyPlayer.js是一款开源的播放器,对于播放器自身定位不一定是实时的直播。我们对他进行了重新的编译,将缓存设置更小,同时EasyPlayer.js也有对应的参数是用来对应播放实时流的。
经过我们实时的测试发现,编译出的低延时,追帧版本的播放器在实测过程中对网络有一定的要求,因为播放器在播放时为了保证实时性就会一直追帧,这样就不会存在累计延时的情况了。但是,当网络环境差的时候,我们的网络无法完全满足直播视频数据时就会在直播画面中出现类似掉帧的情况。
EasyNVR的处理方式
EasyNVR是实时的进行直播视频流,因此在视频的web直播中我们也会遇到延时累计的问题。我们采用的方式是将两个播放形式都集成到我们的播放系统中,并且可以通过播放页面来进行播放模式的选择。
我们将直播分为了实时直播和流畅直播,顾名思义,实时就是保证直播的实时性,保证播放器的低延时直播;流畅直播则为可以在网络环境不是特别理想的情况下依然可以进行流畅的视频直播。
经过播放一段时间的对比就可以看出两者这件的差别。注意为了方便用户的集成,我们将EasyPlayer.js的功能通封装成播放器EasyPlayer。
关于EasyPNVR
EasyPNVR能够通过简单的网络摄像机通道配置,将传统监控行业里面的高清网络摄像机IP Camera、NVR等具有RTSP协议输出的设备接入到EasyNVR,EasyNVR能够将这些视频源的音视频数据进行拉取,转换为HTTP-FLV/RTMP/HLS,进行全平台终端H5直播(Web、Android、iOS),并且EasyPNVR能够将视频源的直播数据对接到第三方CDN网络,实现互联网级别的直播分发。