zoukankan      html  css  js  c++  java
  • 【开发记录】国标GB28181/RTSP/SDK/Ehome协议视频监控平台EasyCVR如何效仿EasyGBS国标平台添加分组功能?

    TSINGSEE青犀视频云边端架构产品在接入多级通道时,在视频调阅侧边栏都会显示分栏菜单,目的是为了让通道的区分更加清晰。比如国标GB28181协议视频平台EasyGBS视频调阅界面左侧的菜单栏如下所示:

    目前EasyCVR视频平台的播放界面左侧菜单栏没有分组,所有通道统一列在左侧侧边栏,我们最新的EasyCVR版本将添加菜单栏分组的接口,将通道划分到指定的组中,在通过分组形式查看通道。

    TSINGSEE青犀视频研发团队在EasyCVR内添加了如下接口来调用侧边栏分组:

    func (h *APIHandler) AddLabel_V2(c *gin.Context) {
    	var err error
    	defer func() {
    		if p := recover(); p != nil {
    			err = fmt.Errorf("%v", p)
    		}
    		if err != nil {
    			c.AbortWithStatusJSON(400, err.Error())
    			return
    		}
    	}()
    	labelname := c.PostForm("labelname")
    	channels := c.PostForm("channels")
    	type channelanddevice struct {
    		ChannelID string
    		DeviceId  string
    	}
    	var channels_arr = make([]channelanddevice, 0)
    	err = json.Unmarshal([]byte(channels), &channels_arr)
    	if err != nil {
    		return
    	}
    
    	dbclient := cvrdao.GetDB()
    	tx := dbclient.Begin()
    	labelModel := cvrdo.Label{}
    	var totalcount int
    	dbclient.Where("name=?", labelname).Find(&labelModel).Count(&totalcount)
    	if totalcount > 0 {
    		tx.Rollback()
    		c.IndentedJSON(400, "分组名称重复")
    		return
    	}
    	labelModel.Name = labelname
    	labelModel.CreateTime = time.Now()
    	labelModel.UpdateTime = time.Now()
    	dbclient.Save(&labelModel)
    	if labelModel.ID <= 0 {
    		c.IndentedJSON(400, "添加分组失败")
    		return
    	}
    	for _, v := range channels_arr {
    		if v.DeviceId == "" || v.ChannelID == "" {
    			c.IndentedJSON(400, "设备或通道不存在")
    			tx.Rollback()
    			return
    		}
    		var temp = cvrdo.LabelChannel{
    			ChannelDeviceId: v.DeviceId,
    			ChannelId:       v.ChannelID,
    			LabelId:         labelModel.ID,
    		}
    		err = dbclient.Create(&temp).Error
    		if err != nil {
    			tx.Rollback()
    			return
    		}
    
    	}
    	tx.Commit()
    	c.IndentedJSON(200, gin.H{
    		"state": "success",
    	})
    }
    
    

    测试调用该接口检查是否满足要求,可以看到调用成功,满足需求。

    视频融合平台EasyCVR的新版在近期将会发布至TSINGSEE青犀视频官方网站上,最新的功能也将更新上去,大家到时可以下载最新版本进行测试。

    EasyCVR视频安防云服务支持传统网络摄像机、NVR、编码器、SDK等设备,最大程度的提高了硬件设备的兼容性,并且可直接对接阿里云、腾讯云、华为云、七牛云等,支持S3和Swift接口的对象存储服务,简单配置,部署更高效。如有需求,欢迎了解。

  • 相关阅读:
    CSS实现商城分类导航效果(hover选择器)
    框架设计读书笔记--扩展点设计--组合法
    框架设计读书笔记--扩展点设计--钩子方法
    Ferris教程学习笔记:js示例2.8 求出数组中所有数字的和
    Ferris教程学习笔记:js示例2.7 点击Div,显示其innerHTML
    Ferris教程学习笔记:js示例2.6 百度输入法
    Ferris教程学习笔记:js示例2.5 记住密码提示框
    Ferris教程学习笔记:js示例2.4 鼠标移入改变样式,鼠标移出恢复
    程序最佳的学习方式
    Ferris教程学习笔记:js示例2.3 用循环将三个DIV变成红色
  • 原文地址:https://www.cnblogs.com/TSINGSEE/p/14174439.html
Copyright © 2011-2022 走看看