前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RTSP协议网络摄像头接入视频平台EasyNVR

RTSP协议网络摄像头接入视频平台EasyNVR

作者头像
EasyNVR
发布2020-08-20 22:02:54
1.1K0
发布2020-08-20 22:02:54
举报
文章被收录于专栏:EasyNVREasyNVR

了解TSINGSEE青犀视频产品的用户都知道,作为专注于音视频流媒体行业的研发团队,我们一直都在追求更前沿的技术,比如H265接入与播放、比如在能力平台上叠加上业务功能,如:用户管理、设备管理等。最近我们就对RTSP协议网络摄像头接入视频平台EasyNVR进行了一次功能的迭代更新,升级后界面直播,视频编码兼容性更强,同时也增加了用户管理功能。有此功能需求的用户可以官网下载更新啦。

新版EasyNVR用户管理不仅能够添加角色,分配设备,当用户或者角色过多时,还能将用户/角色下载表格,表格里对应了用户的通道、密码,对用户及设备进行表格管理,让运营者获取数据更加便捷。

这个功能刚上线时,我们内部对此做了一系列的测试,并且随后又添加了用户的邮箱和手机号,便于查找。但在测试的时候,发现EasyNVR导出的用户excel表格里,新增的邮箱和手机号并没有被导出,导出的内容还是旧数据。

我考虑可能是接口调用的代码错误,于是从EasyNVR导出excel接口开始排查错误:

代码语言:javascript
复制
users := make([]*models.User, 0)
models.DB.Table("user").Order("id").Find(&users)
for i := 0; i < len(users); i++ {
   user := users[i]
   row := userSheet.AddRow()
   row.SetHeightCM(1)
   cell = row.AddCell()
   cell.Value = fmt.Sprintf("%v", user.ID)
   cell = row.AddCell()
   cell.Value = fmt.Sprintf("%v", user.Name)
   cell = row.AddCell()
   cell.Value = fmt.Sprintf("%v", user.Username)
   cell = row.AddCell()
   cell.Value = fmt.Sprintf("%s", user.Password)
   cell = row.AddCell()
   cell.Value = fmt.Sprintf("%v", user.Role)
   cell = row.AddCell()
   cell.Value = fmt.Sprintf("%v", user.Phone)
   cell = row.AddCell()
   cell.Value = fmt.Sprintf("%v", user.Email)
   cell = row.AddCell()
   cell.Value = fmt.Sprintf("%s", user.Reserve1)
   cell = row.AddCell()
   cell.Value = fmt.Sprintf("%s", user.Reserve2)
}

上面实际上在理论上是没有问题的,但是新版的EasyNVR多出了角色、角色设备、分组、分组设备,于是我们需要把这些详细内容都添加进导出代码。

代码语言:javascript
复制
//用户角色表
userRoles := make([]*models.UserRole, 0)
models.DB.Table("user_roles").Order("id").Find(&userRoles)
for i := 0; i < len(userRoles); i++ {
   userRole := userRoles[i]
   row := userRoleSheet.AddRow()
   row.SetHeightCM(1)
   cell = row.AddCell()
   cell.Value = fmt.Sprintf("%d", userRole.Id)
   cell = row.AddCell()
   cell.Value = fmt.Sprintf("%d", userRole.Uid)
   cell = row.AddCell()
   cell.Value = fmt.Sprintf("%d", userRole.Rid)
}
//角色表
roles := make([]*models.Role, 0)
models.DB.Table("roles").Order("id").Find(&roles)
for i := 0; i < len(roles); i++ {
   role := roles[i]
   row := roleSheet.AddRow()
   row.SetHeightCM(1)
   cell = row.AddCell()
   cell.Value = fmt.Sprintf("%d", role.ID)
   cell = row.AddCell()
   cell.Value = fmt.Sprintf("%s", role.Name)
}
//角色设备表
roleCameras := make([]*models.RoleCamera, 0)
models.DB.Table("role_camera").Order("role_id").Find(&roleCameras)
for i := 0; i < len(roleCameras); i++ {
   roleCamera := roleCameras[i]
   row := roleCameraSheet.AddRow()
   row.SetHeightCM(1)
   cell = row.AddCell()
   cell.Value = fmt.Sprintf("%d", roleCamera.RoleId)
   cell = row.AddCell()
   cell.Value = fmt.Sprintf("%s", roleCamera.CameraId)
}
//分组表
labels := make([]*models.Label, 0)
models.DB.Table("label").Order("id").Find(&labels)
for i := 0; i < len(labels); i++ {
   label := labels[i]
   row := labelSheet.AddRow()
   row.SetHeightCM(1)
   cell = row.AddCell()
   cell.Value = fmt.Sprintf("%d", label.ID)
   cell = row.AddCell()
   cell.Value = fmt.Sprintf("%s", label.Name)
}
//分组设备表
labelCameras := make([]*models.LabelCamera, 0)
models.DB.Table("label_camera").Order("label_id").Find(&labelCameras)
for i := 0; i < len(labelCameras); i++ {
   labelCamera := labelCameras[i]
   row := labelCameraSheet.AddRow()
   row.SetHeightCM(1)
   cell = row.AddCell()
   cell.Value = fmt.Sprintf("%d", labelCamera.LabelId)
   cell = row.AddCell()
   cell.Value = fmt.Sprintf("%s", labelCamera.CameraId)
}

在代码中将内容信息补全后,再次导出,就可以发现新增内容都添加完善了。

EasyNVR视频平台播放界面:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • EasyNVR视频平台播放界面:
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档