zoukankan      html  css  js  c++  java
  • 海康SDK/大华SDK安防视频智能分析平台EasyCVR接入过多通道卡顿问题解决

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

    实际该卡顿问题和时间戳、网络等都没有必然联系,因此我们可以从sql语句检查该问题出现的原因。通过检查sql语句打印,我们发现无论接入多少设备通道,后端都会将所有的通道信息每个检查一遍,再返回给前端,这种逻辑直接导致了后端工作量的暴涨,因此带来了卡顿现象。

    我们将代码重构,当前端查询设备时候,添加分页字段,start 和limit
    秉着展示多少查询多少的原则进行修改,添加如下代码:

    if params["start"] != "" && params["limit"] != "" {
           start, _ = strconv.Atoi(params["start"])
           limit, _ = strconv.Atoi(params["limit"])
    }
    ack := NewMsgAck()
    ack.EasyDarwin.Header.MessageType = MSG_SC_SERVER_GET_CHANNELS_ACK
    rows := 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已经是携带分页参数过后的了。

    同时检查接口响应速度也降低到200毫秒左右。

    如果对EasyCVR有兴趣,欢迎联系我们获取测试账号进行测试,当然TSINGSEE青犀视频其他智能分析平台皆提供测试,更多详情可了解TSINGSEE青犀视频官方网站。

  • 相关阅读:
    Netty学习(四)-TCP粘包和拆包
    Netty学习(三)-Netty重要接口讲解
    Netty学习(二)-Helloworld Netty
    Netty学习(一)-为什么选择Netty
    java学习-NIO(五)NIO学习总结以及NIO新特性介绍
    java学习-NIO(四)Selector
    哈希表 HashTable(又名散列表)
    设计模式-外观模式
    设计模式-装饰模式
    设计模式-适配器模式
  • 原文地址:https://www.cnblogs.com/TSINGSEE/p/14417170.html
Copyright © 2011-2022 走看看