【開發記錄】國標GB28181/RTSP/SDK/Ehome協議視訊監控平臺EasyCVR如何效仿EasyGBS國標平臺新增分組功能?
阿新 • • 發佈:2020-12-22
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介面的物件儲存服務,簡單配置,部署更高效。如有需求,歡迎瞭解。