diff --git a/doc/_content/ability/_media/img_16.png b/doc/_content/ability/_media/img_16.png index b09e8cd39..5a27be09b 100644 Binary files a/doc/_content/ability/_media/img_16.png and b/doc/_content/ability/_media/img_16.png differ diff --git a/doc/_content/ability/device.md b/doc/_content/ability/device.md index 134f7add0..cd47d7934 100644 --- a/doc/_content/ability/device.md +++ b/doc/_content/ability/device.md @@ -1,5 +1,6 @@ # 接入设备 +## 国标28181设备 设备接入主要是需要在设备上配置28181上级也就是WVP-PRO的信息,只有信息一致的情况才可以注册成功。设备注册成功后打开WVP->国标设备,可以看到新增加的设备;[设备使用](./_content/ability/device_use.md), 主要有以下字段需要配置: @@ -19,15 +20,35 @@ domain宜采用ID统一编码的前十位编码。 ![_media/img_16.png](_media/img_16.png) *** -## 大华摄像头 +### 1. 大华摄像头 ![_media/img_10.png](_media/img_10.png) -## 大华NVR +### 2. 大华NVR ![_media/img_11.png](_media/img_11.png) -## 艾科威视摄像头 +### 3. 艾科威视摄像头 ![_media/img_15.png](_media/img_15.png) -## 水星摄像头 +### 4. 水星摄像头 ![_media/img_12.png](_media/img_12.png) -## 海康摄像头 +### 5. 海康摄像头 ![_media/img_9.png](_media/img_9.png) +## 直播推流设备 +这里以obs推流为例,很多无人机也是一样的,设置下推流地址就可以接入了 +1. 从wvp获取推流地址, 选择节点管理菜单,查看要推流的节点; + ![_media/img_19.png](_media/img_19.png) +2. 拼接推流地址 + 得到的rtsp地址就是: rtsp://{流IP}:{RTSP PORT}/{app}/{stream} + 得到的rtmp地址就是: rtsp://{流IP}:{RTMP PORT}/{app}/{stream} + 其中流IP是设备可以连接到zlm的IP,端口是对应协议的端口号, app和stream自己定义就可以. +3. 增加推流鉴权信息 + wvp默认开启推流鉴权,拼接好的地址是不能直接推送的,会被返回鉴权失败,参考[推流规则](_content/ability/push?id=推流规则) +4. 推流成功后可以再推流列表中看到推流设备,可以播放 + 此方式只支持设备实时流的播放,无其他功能, 推流信息在推流结束后会自动移除,在列表里就看不到了,如果需要推流信息需要为设备配置国标编号,这样才可以作为wvp的一个永久通道存在. + +## 接入非国标IPC设备或者其他流地址形式的设备 +这类设备的接入主要通过拉流代理的方式接入,原理就是zlm主动像播放器一样拉取这个流缓存在自己服务器供其他人播放.可以解决源设备并发访问能力差的问题. +在拉流代理/添加代理后可以直接播放, 拉流代理也是同样只支持播放当前配置的流. + + + + [设备使用](_content/ability/device_use.md) diff --git a/doc/_content/ability/device_use.md b/doc/_content/ability/device_use.md index c406b3bbb..af8405d7b 100644 --- a/doc/_content/ability/device_use.md +++ b/doc/_content/ability/device_use.md @@ -4,18 +4,18 @@ 点击列表末尾的“刷新”按钮,可以看到一个圆形进度条,等进度结束提示成功后即可更新完成,如果通道数量有变化你可以看点击左上角的![刷新](_media/img_14.png)即可看到通道数量的变化;如果通道数量仍未0,那么可能时对方尚未推送通道给你。 ### 查看设备通道 点击列表末尾的“通道”按钮, -### 查看设备定位 - 点击列表末尾的“定位”按钮,即可跳转到地图页面看到设备的位置 ### 编辑设备在WVP中一些功能 点击列表末尾的“编辑”按钮,即可在打开的弹窗中对设备功能进行修改 - 设备名称 如何未能从设备里读取到设备名称或者需要自己重命名,那么可以修改此选项。 +- 密码 + 支持为设备配置独立的密码. +- 收流IP + 如果你需要设备从指定的网络地址接入视频流,那么可以配置此IP,设备将会发流到这个IP,比如多网卡接入的服务器.或者存在网络映射的情况. +- 流媒体ID + 固定设备使用的流媒体ID,默认根据负载自动分配. - 字符集 修改读取设备数据时使用的字符集,默认为GB2312,但是GB2312收录的汉字不全,所以有时候回遇到乱码,可以修改为UTF-8来解决。 -- 地理坐标系 - 展示此设备定位信息时使用的设用什么坐标系来解析经纬度,一般不用修改,如果遇到定位不准,可以修改尝试修改此选项解决。 -- 目录结构 - 展示设备的通道信息时,使用设备作为树形结构的依据,国标28181定义了两种树形结构,详情查看[国标28181的树形结构](./_content/theory/channel_tree.md); - 目录订阅 填写订阅周期即可对设备开启目录订阅,设备如果支持目录订阅那么设备在通道信息发生变化时就会通知WVP哪些通道发生了那些变化,包括通道增加/删除/更新/上线/下线/视频丢失/故障。0为取消订阅。 一般NVR和平台对接可以开启此选项,直接接摄像机开启此选项意义不大。 @@ -23,6 +23,10 @@ 对设备开启移动位置订阅,设备如果支持目录订阅那么设备位置发生变化时会通知到WVP,一般执法记录仪可以开启此选项,对固定位置的设备意义不大。 - SSRC校验 为了解决部分设备出现的串流问题,可以打开此选项。ZLM会严格按照给定的ssrc处理视频流。部分设备流信息不标准,开启可能导致无法点播。 +- 作为消息通道 + wvp支持通过报警消息给下级WVP互相推送消息,消息内容由redis消息发送给wvp,wvp编辑成报警消息发送给下级 +- 收到ACK后发流 + 语音对讲策略: 不同的设备对于语音对讲的收流时机要求不一,勾选后会在收到设备发送的ack后再开始发流,不勾选则在回复200OK后开始发流,目前已知大华设备不勾选,海康需要勾选. ### 删除设备 可以删除WVP中的设备信息,如果设备28181配置未更改,那么设备在下一次注册后仍然会注册上来。 ### 点播视频 diff --git a/doc/_content/introduction/_media/img_1.png b/doc/_content/introduction/_media/img_1.png index aad1859d0..b4a62afc1 100644 Binary files a/doc/_content/introduction/_media/img_1.png and b/doc/_content/introduction/_media/img_1.png differ diff --git a/doc/_content/introduction/_media/img_2.png b/doc/_content/introduction/_media/img_2.png index e78690000..a5961d6fc 100644 Binary files a/doc/_content/introduction/_media/img_2.png and b/doc/_content/introduction/_media/img_2.png differ diff --git a/doc/_content/introduction/config.md b/doc/_content/introduction/config.md index 359aac9ef..6e89fe06b 100644 --- a/doc/_content/introduction/config.md +++ b/doc/_content/introduction/config.md @@ -118,7 +118,7 @@ media: # [可选] 国标级联在此范围内选择端口发送媒体流, send-port-range: 40000,40300 # 端口范围 ``` -### 2.4 个性化定制信息配置 +### 2.4 策略配置 ```yaml # [根据业务需求配置] user-settings: diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/DeviceChannelProvider.java b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/DeviceChannelProvider.java index f1b4703d7..e21b7729d 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/DeviceChannelProvider.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/DeviceChannelProvider.java @@ -58,7 +58,7 @@ public class DeviceChannelProvider { public String queryChannels(Map params ){ StringBuilder sqlBuild = new StringBuilder(); sqlBuild.append(getBaseSelectSql()); - sqlBuild.append(" where 1=1"); + sqlBuild.append(" where dc.device_db_id = #{deviceDbId}"); if (params.get("query") != null) { sqlBuild.append(" AND coalesce(dc.gb_device_id, dc.device_id) LIKE concat('%',#{query},'%')" + " OR coalesce(dc.gb_name, dc.name) LIKE concat('%',#{query},'%')") diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/PlatformServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/PlatformServiceImpl.java index b89c239e0..6f6730d46 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/PlatformServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/PlatformServiceImpl.java @@ -246,6 +246,31 @@ public class PlatformServiceImpl implements IPlatformService { return false; } + private void unregister(Platform platform) { + // 停止心跳定时 + final String keepaliveTaskKey = KEEPALIVE_KEY_PREFIX + platform.getServerGBId(); + dynamicTask.stop(keepaliveTaskKey); + // 停止注册定时 + final String registerTaskKey = REGISTER_KEY_PREFIX + platform.getServerGBId(); + dynamicTask.stop(registerTaskKey); + + PlatformCatch platformCatchOld = redisCatchStorage.queryPlatformCatchInfo(platform.getServerGBId()); + // 注销旧的 + try { + if (platform.isStatus()) { + commanderForPlatform.unregister(platform, platformCatchOld.getSipTransactionInfo(), null, eventResult -> { + log.info("[国标级联] 注销命令发送成功,平台:{}", platform.getServerGBId()); + }); + } + } catch (InvalidArgumentException | ParseException | SipException e) { + log.error("[命令发送失败] 国标级联 注销: {}", e.getMessage()); + } + } + + private void register(Platform platform) { + + } + @Override public void online(Platform platform, SipTransactionInfo sipTransactionInfo) { diff --git a/web_src/src/components/DeviceList.vue b/web_src/src/components/DeviceList.vue index 7dad0fe5d..c8db798f3 100755 --- a/web_src/src/components/DeviceList.vue +++ b/web_src/src/components/DeviceList.vue @@ -77,10 +77,6 @@ @click="showChannelList(scope.row)">通道 - 定位 - - 编辑 删除