RTSP协议网页无插件直播平台EasyNVR视频广场无法搜索纯数字关键词的通道,该如何解决的?
时间:2022-07-24
本文章向大家介绍RTSP协议网页无插件直播平台EasyNVR视频广场无法搜索纯数字关键词的通道,该如何解决的?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
最近改版的新版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青犀视频,可以联系我们获取演示方案,直观感受,也可自行进行下载及测试。
- 极简增强学习新手教程 返回专栏查看评论
- 经典Java面试题收集
- 百度魅族深度学习大赛初赛冠军作品(图像识别.源码)
- easyUI整合富文本编辑器KindEditor详细教程(附源码)
- 经典Java面试题收集(二)
- 使用sqlt手工创建sql_profile(r4笔记第37天)
- 使用ash分析ORA-01652问题(r4笔记第36天)
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(八)线上Mysql数据库崩溃事故的原因和处理
- 数据结构01 算法的时间复杂度和空间复杂度
- Docker+SpringBoot+Mybatis+thymeleaf的Java博客系统开源啦
- Spring【依赖注入】就是这么简单
- 数据结构02 线性表之顺序表
- struts2+spring+hibernate整合步骤(2)
- Spring入门这一篇就够了
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- php判断电子邮件是否正确办法
- 用Laravel Sms实现laravel短信验证码的发送的实现
- kubernetes 近期进展 - 1.14-1.19
- Kubernetes 1.19.0——cronjob
- php获取微信openid方法总结
- Laravel 关联模型-关联新增和关联更新的方法
- 如何解决PHP获取不到SESSION信息之一般情况
- PHP实现通过二维数组键值获取一维键名操作示例
- laravel 判断查询数据库返回值的例子
- laravel框架数据库配置及操作数据库示例
- laravel 输出最后执行sql 附:whereIn的使用方法
- laravel框架模型、视图与控制器简单操作示例
- Laravel关系模型指定条件查询方法
- 在laravel中使用with实现动态添加where条件
- laravel Model 执行事务的实现