补充文档, 修复通道查询错误
parent
225a444f9b
commit
3f85c66328
Binary file not shown.
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 134 KiB |
|
@ -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)
|
||||
|
|
|
@ -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配置未更改,那么设备在下一次注册后仍然会注册上来。
|
||||
### 点播视频
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 150 KiB After Width: | Height: | Size: 178 KiB |
Binary file not shown.
Before Width: | Height: | Size: 206 KiB After Width: | Height: | Size: 202 KiB |
|
@ -118,7 +118,7 @@ media:
|
|||
# [可选] 国标级联在此范围内选择端口发送媒体流,
|
||||
send-port-range: 40000,40300 # 端口范围
|
||||
```
|
||||
### 2.4 个性化定制信息配置
|
||||
### 2.4 策略配置
|
||||
```yaml
|
||||
# [根据业务需求配置]
|
||||
user-settings:
|
||||
|
|
|
@ -58,7 +58,7 @@ public class DeviceChannelProvider {
|
|||
public String queryChannels(Map<String, Object> 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},'%')")
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -77,10 +77,6 @@
|
|||
@click="showChannelList(scope.row)">通道
|
||||
</el-button>
|
||||
<el-divider direction="vertical"></el-divider>
|
||||
<el-button size="medium" icon="el-icon-location" type="text"
|
||||
@click="showDevicePosition(scope.row)">定位
|
||||
</el-button>
|
||||
<el-divider direction="vertical"></el-divider>
|
||||
<el-button size="medium" icon="el-icon-edit" type="text" @click="edit(scope.row)">编辑</el-button>
|
||||
<el-divider direction="vertical"></el-divider>
|
||||
<el-button size="medium" icon="el-icon-delete" type="text" @click="deleteDevice(scope.row)" style="color: #f56c6c">删除</el-button>
|
||||
|
|
Loading…
Reference in New Issue