海康SDK/大华SDK安防视频智能分析平台EasyCVR接入过多通道卡顿解决

海康SDK/大华SDK安防视频智能分析平台EasyCVR接入过多通道卡顿解决】原标题:海康SDK/大华SDK安防视频智能分析平台EasyCVR接入过多通道卡顿解决
不管是网页直播还是手机直播 , 都不可避免会有卡顿的问题 , 作为视频平台的开发者 , 我们知道视频卡顿的原因有很多 , 包括时间戳问题以及网络环境问题 。 此外还有一种情况 , 就是在我们已经开发的视频平台EasyCVR中 , 接入过多通道设备 , 也会出现卡顿问题 。

海康SDK/大华SDK安防视频智能分析平台EasyCVR接入过多通道卡顿解决
文章图片
实际该卡顿问题和时间戳、网络等都没有必然联系 , 因此我们可以从sql语句检查该问题出现的原因 。 通过检查sql语句打印 , 我们发现无论接入多少设备通道 , 后端都会将所有的通道信息每个检查一遍 , 再返回给前端 , 这种逻辑直接导致了后端工作量的暴涨 , 因此带来了卡顿现象 。

海康SDK/大华SDK安防视频智能分析平台EasyCVR接入过多通道卡顿解决
文章图片
我们将代码重构 , 当前端查询设备时候 , 添加分页字段 , start和limit
秉着展示多少查询多少的原则进行修改 , 添加如下代码:
ifparams["start"]!=""&&params["limit"]!=""{start,_=strconv.Atoi(params["start"])limit,_=strconv.Atoi(params["limit"])}ack:=NewMsgAck()ack.EasyDarwin.Header.MessageType=MSG_SC_SERVER_GET_CHANNELS_ACKrows:=make([]map[string]interface{},0)db.SQLite.LogMode(true)channelscount:=cvrservice.GetDeviceService().GetChannels(params["device"],params["channel"],params["q"],0,0)channels:=cvrservice.GetDeviceService().GetChannels(params["device"],params["channel"],params["q"],uint(start),uint(limit))tempdbDBChannel:=make([]cvrdo.DBChannelInfo,0)再去请求查询通 , 此时生成的sql已经是携带分页参数过后的了 。

海康SDK/大华SDK安防视频智能分析平台EasyCVR接入过多通道卡顿解决
文章图片
同时检查接口响应速度也降低到200毫秒左右 。

海康SDK/大华SDK安防视频智能分析平台EasyCVR接入过多通道卡顿解决
文章图片
如果对EasyCVR有兴趣 , 欢迎联系我们获取测试账号进行测试 , 当然TSINGSEE青犀视频其他智能分析平台皆提供测试 , 更多详情可了解TSINGSEE青犀视频官方网站 。

海康SDK/大华SDK安防视频智能分析平台EasyCVR接入过多通道卡顿解决
文章图片