RTSP协议视频平台EasyNVR接入EasyNVS通道不显示任何数据怎么处理?
EasyNVS云管理平台是新一代基于创新的超融合和技术构建,具备完整的视频流媒体服务能力和运维管理服务能力的云架构平台,可将多套EasyNVR设备统一接口进行登记和管理。
EasyNVS通道列表不显示数据
正常情况下,接入EasyNVS的设备通道都会显示在如下的通道列表当中,但是此处我们查看通道列表,却并没有显示通道数据。
分析问题:
1、先查看是否是前端报错,导致渲染数据出错。
通过浏览器查看,很明显不是前端报错,是后端返回的数据是0条。
2、下面来分析后端代码,正常返回数据的代码如下:
func (h *APIHandler) GetChannelsConfig(c *gin.Context) {
params := make(map[string]string)
for k, v := range c.Request.URL.Query() {
params[strings.ToLower(k)] = strings.Join(v, ",")
}
cc := uint(license.ChannelCount)
form := utils.NewPageForm()
if err := c.Bind(form); err != nil {
return
}
if id, ok := params["id"]; ok {
if _, err := strconv.Atoi(id); err == nil {
form.Q = id
}
}
if channel, ok := params["channel"]; ok {
if _, err := strconv.Atoi(channel); err == nil {
form.Q = channel
}
}
ack := NewMsgAck()
ack.EasyDarwin.Header.MessageType = MSG_SC_SERVER_GET_CHANNELS_CONFIG_ACK
cameras := make([]*models.Camera, 0)
db := models.DB.Table("camera").Order("id").Where("id <= ?", cc)
if form.Q != "" {
ch, _ := strconv.Atoi(form.Q)
if ch > 0 {
db = db.Where("id = ?", ch)
} else {
db = db.Where("name like ?", "%"+form.Q+"%")
而这个后端也没有报错,代码是正常执行的。
3、继续分析,查看代码执行流程,
发现是因为EasyNVR新版本添加了用户权限,所以导致返回到前端的数据是空的。
解决问题
通过这行代码获取token,后续刷新token也是通过此处代码。
在登录接口处发现EasyNVS和EasyNVR交互的的方式通过username
至此,EasyNVR配置EasyNVS后,可以在EasyNVS上看到通道列表了。