本帖最后由 诗仙·1957 于 2023-11-25 10:53 编辑
为什么要做这个应用?
因为海康的网络硬盘录像机,你只能单个录像机的访问预览或回放,不能同时交叉访问,权限管理不方便
有什么缺点?
萤石云官方免费版最多同时在线3个人使用,且走的外网线路,不是基于内网的查看,速度受限制。
权限控制不能集成第三方?钉钉
4200软件能在电脑上安装软件实现分组添加摄像头或者录像机,但不能像浏览器这样手机或者电脑自由访问,基于权限控制也不能以钉钉集成
当摄像头过多查找困难?
活字格能集成钉钉,能集成手机与电脑的页面,维护与管理与使用也很方便。
思路:
有很多个硬盘录像机,每个录像机开启云服务,添加到同一个萤石云开发者账户中,
然后就获得了每个摄像头的预览地址,回放地址,(该地址是有规律的,因此使用函数拼接字符串就能实现在数据库中表达)
在数据库把每个模块的拼接字段拆分保存起来
然后根据官方的说明
那么对应的拼接规则就是:
"字段1&序列号&""/""&通道号&字段2*token&字段3"
"字段1&序列号&""/""&通道号&字段2*token&字段3"
"字段1&序列号&""/""&通道号&字段2*token&字段3"
"字段1&token&字段2&序列号&""/""&通道号&字段3"
"字段1&token&字段2&序列号&""/""&通道号&字段3"
这样你就可以基于api调用的方式直接获取全部的录像机,然后循环每个录像机或者全部的摄像头列表
根据拼接规则就得到了预览地址与回访地址。
写一个试图来表达将显示的更符合使用规则,就像这样
然后集成活字格钉钉,判断登录用户的权限,可以控制该账户是否有该摄像头的权限
为了方便查找直接整个平面图来基于IP地址定位
每一个摄像头标注在PDF平面图上,
然后分组管理,给不同的人 实现预览或回放不同的摄像头
为模仿预览效果
做了个简易的分屏效果
由于有别人人正在使用,免费版只能3个人同时查看,因此这里看不到画面。这里的访问是基于外网访问的,而不是内网,所以带宽会被限制。
由于api请求的摄像头列表中不包含通道名称,于是需要手动维护,通道名称的好处是中文标识每个摄像头的位置
其他的功能需要自己体验了,
由于采用的是外联表,转内建表,视图无法保留
视图代码是
链接带ip
select row_number() OVER (ORDER BY `a`.`设备序列号` ) AS `id`,`a`.`设备序列号` AS `设备序列号`,`a`.`通道号` AS `通道号`,`a`.`设备名` AS `设备名`,`b`.`IP地址` AS `IP地址`,`c`.`状态` AS `状态`,`b`.`通道名称` AS `通道名称`,`a`.`PC直播极简版` AS `PC直播极简版`,`a`.`PC直播全量版` AS `PC直播全量版`,`a`.`PC回放全量版` AS `PC回放全量版`,`a`.`H5直播全量版` AS `H5直播全量版`,`a`.`H5回放全量版` AS `H5回放全量版` from ((`链接` `a` left join `ip对应` `b` on(((`a`.`设备序列号` = `b`.`设备序列号`) and (`a`.`通道号` = `b`.`通道号`)))) left join `录像机通道状态` `c` on(((`a`.`设备序列号` = `c`.`设备序列号`) and (`a`.`通道号` = `c`.`通道号`))))
链接
select `a`.`设备序列号` AS `设备序列号`,`a`.`通道号` AS `通道号`,`a`.`设备名` AS `设备名`,max((case `a`.`类型` when 'PC直播全量版' then `a`.`说明` else '11' end)) AS `PC直播全量版`,max((case `a`.`类型` when 'PC直播极简版' then `a`.`说明` else '11' end)) AS `PC直播极简版`,max((case `a`.`类型` when 'PC回放全量版' then `a`.`说明` else '11' end)) AS `PC回放全量版`,max((case `a`.`类型` when 'H5直播全量版' then `a`.`说明` else '11' end)) AS `H5直播全量版`,max((case `a`.`类型` when 'H5回放全量版' then `a`.`说明` else '11' end)) AS `H5回放全量版` from (select `a`.`设备序列号` AS `设备序列号`,`a`.`通道号` AS `通道号`,`a`.`设备名` AS `设备名`,`b`.`类型` AS `类型`,(case `b`.`类型` when 'PC直播全量版' then concat(`b`.`字段1`,`a`.`设备序列号`,'/',`a`.`通道号`,`b`.`字段2`,`c`.`AccessToken`,`b`.`字段3`) when 'PC直播极简版' then concat(`b`.`字段1`,`a`.`设备序列号`,'/',`a`.`通道号`,`b`.`字段2`,`c`.`AccessToken`,`b`.`字段3`) when 'PC回放全量版' then concat(`b`.`字段1`,`a`.`设备序列号`,'/',`a`.`通道号`,`b`.`字段2`,`c`.`AccessToken`,`b`.`字段3`) when 'H5直播全量版' then concat(`b`.`字段1`,`c`.`AccessToken`,`b`.`字段2`,`a`.`设备序列号`,'/',`a`.`通道号`,`b`.`字段3`) when 'H5回放全量版' then concat(`b`.`字段1`,`c`.`AccessToken`,`b`.`字段2`,`a`.`设备序列号`,'/',`a`.`通道号`,`b`.`字段3`) else '' end) AS `说明` from ((`摄像头列表` `a` join `轻应用模板` `b`) join `萤石云应用配置` `c`)) `a` group by `a`.`设备序列号`,`a`.`通道号`,`a`.`设备名`
因domo 刚好超过20m 无法上传,请加群免费获取
Q群号 106929215
|