前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RTSP协议网页无插件直播平台EasyNVR视频广场无法搜索纯数字关键词的通道,该如何解决的?

RTSP协议网页无插件直播平台EasyNVR视频广场无法搜索纯数字关键词的通道,该如何解决的?

作者头像
EasyNVR
发布2020-09-08 15:03:01
4030
发布2020-09-08 15:03:01
举报
文章被收录于专栏:EasyNVREasyNVREasyNVR

最近改版的新版EasyNVR我们发现界面中仍然保留了“视频广场”的显示项,通过视频广场可以查看不同通道的最新视频快照信息,也可以通过搜索方式展现特定的视频通道快照。最近测试中研发测试时,发现在视频广场使用搜索框搜索不到纯数字的关键词。

分析问题

只有在使用纯数字的关键词时才会搜索不到结果,使用其他的关键词都是可以搜索到结果的,比如英文、中文、英文+数字都可。由此可以判断不是前端的问题,而是后端的问题。

解决问题

我们查看后端接口的代码。

if form.Q != "" {
   q := strings.ToLower(form.Q)
   name := strings.ToLower(info.Name)
   if ch, err := strconv.Atoi(q); err == nil {
      if ch == int(info.Channel) {
         infos = append(infos, info)
      }
   } else if strings.Contains(name, q) {
      infos = append(infos, info)
   }

问题出在strconv.Atoi(q)这个函数上,该函数的作用是将前端传过来的参数从字符串转数字,如果是数字就不会报错,随后执行下面if下的代码逻辑,导致没有数据产生,因此搜索不到数字的关键词结果。

我们将后端代码进行修改:

if form.Q != "" {
   q := strings.ToLower(form.Q)
   name := strings.ToLower(info.Name)
   if ch, err := strconv.Atoi(q); err == nil {
      if ch == int(info.Channel) {
         infos = append(infos, info)
      }
   }
   if strings.Contains(name, q) {
      infos = append(infos, info)
   }

搜索数字后将关键词进行判断,根据不同关键词执行不同的代码逻辑,此时如果通道名称和通道ID都是数字,也可以搜索到了。

此外还有一个问题,如果通道ID和通道名称相同,此时就会搜索出两条数据。

因为如果通道ID和名称都是相同的,会导致重复数据的出现,所以我们在下面代码中将通道数组转map去重即可解决。

result := make([]*channels.ChannelInfo, 0)
m := make(map[*channels.ChannelInfo]bool)
for _, v := range infos {
   if _, ok := m[v]; !ok {
      result = append(result, v)
      m[v] = true
   }
}

EasyNVR视频边缘计算网关平台是支持RTSP拉流协议的流媒体视频平台,同时能够将拉取的RTSP协议视频流转化为RTMP、FLV、HLS、RTSP等格式进行分发。目前支持市面上大部分的RTSP/Onvif协议设备、IP Camera/NVR/DVR/编码器等。如果大家想了解一些其他的方案,可以查阅我们以前的博文,此外,视频相关解决方案均可访问TSINGSEE青犀视频,可以联系我们获取演示方案,直观感受,也可自行进行下载及测试。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
边缘可用区
腾讯云边缘可用区(TencentCloud Edge Zone,TEZ)是腾讯云的本地扩展,适用于解决计算、存储和服务可用性问题。腾讯云边缘可用区可为您带来云的诸多优势,例如弹性、可扩展性和安全性。借助腾讯云边缘可用区,您可以在靠近最终用户的地理位置运行对延迟敏感的应用程序,基本消除延迟问题。腾讯云边缘可用区提供与中心节点一致的体验,助力业务下沉,具备更低延时、更广覆盖、更少成本等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档