随笔 - 1941  文章 - 0  评论 - 8  阅读 - 45万

【开发记录】国标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接口的对象存储服务,简单配置,部署更高效。如有需求,欢迎了解。

posted on   TSINGSEE  阅读(171)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示