RTSP协议视频平台EasyNVR接入EasyNVS通道不显示任何数据怎么处理?

时间:2022-07-23
本文章向大家介绍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上看到通道列表了。