From 4d975c21da2d10233d82d6047e72b0d82b7da343 Mon Sep 17 00:00:00 2001
From: 648540858 <456panlinlin>
Date: 星期二, 19 四月 2022 11:52:03 +0800
Subject: [PATCH] 优化国标级联目录推送,支持zlm新特性ssrc校验
---
src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java | 3 +
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/CatalogQueryMessageHandler.java | 11 +++--
src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java | 13 ++++++
web_src/src/components/dialog/deviceEdit.vue | 3 +
src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceChannel.java | 13 ++++++
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java | 3 +
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java | 4 +-
web_src/src/components/dialog/catalogEdit.vue | 15 +++++++
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java | 37 ++++++++++--------
src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java | 8 ++--
src/main/java/com/genersoft/iot/vmp/service/IMediaServerService.java | 4 +-
11 files changed, 83 insertions(+), 31 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java
index d50ffb7..81b9666 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java
@@ -129,6 +129,11 @@
*/
private int subscribeCycleForAlarm;
+ /**
+ * 鏄惁寮�鍚痵src鏍¢獙锛岄粯璁ゅ叧闂紝寮�鍚彲浠ラ槻姝覆娴�
+ */
+ private boolean ssrcCheck;
+
public String getDeviceId() {
return deviceId;
@@ -321,4 +326,12 @@
public void setSubscribeCycleForAlarm(int subscribeCycleForAlarm) {
this.subscribeCycleForAlarm = subscribeCycleForAlarm;
}
+
+ public boolean isSsrcCheck() {
+ return ssrcCheck;
+ }
+
+ public void setSsrcCheck(boolean ssrcCheck) {
+ this.ssrcCheck = ssrcCheck;
+ }
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceChannel.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceChannel.java
index 3633789..1e6ef77 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceChannel.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceChannel.java
@@ -169,6 +169,11 @@
*/
private boolean hasAudio;
+ /**
+ * 鏍囪閫氶亾鐨勭被鍨嬶紝0->鍥芥爣閫氶亾 1->鐩存挱娴侀�氶亾 2->涓氬姟鍒嗙粍/铏氭嫙缁勭粐/琛屾斂鍖哄垝
+ */
+ private int channelType;
+
public int getId() {
return id;
}
@@ -441,4 +446,12 @@
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
+
+ public int getChannelType() {
+ return channelType;
+ }
+
+ public void setChannelType(int channelType) {
+ this.channelType = channelType;
+ }
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
index 3705311..0fd8cc5 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
@@ -260,24 +260,27 @@
catalogXml.append("<DeviceID>" + channel.getChannelId() + "</DeviceID>\r\n");
catalogXml.append("<Name>" + channel.getName() + "</Name>\r\n");
catalogXml.append("<Manufacturer>" + channel.getManufacture() + "</Manufacturer>\r\n");
- catalogXml.append("<Model>" + channel.getModel() + "</Model>\r\n");
- catalogXml.append("<Owner>" + channel.getOwner() + "</Owner>\r\n");
- catalogXml.append("<CivilCode>" + channel.getCivilCode() + "</CivilCode>\r\n");
- catalogXml.append("<Address>" + channel.getAddress() + "</Address>\r\n");
catalogXml.append("<Parental>" + channel.getParental() + "</Parental>\r\n");
if (channel.getParentId() != null) {
catalogXml.append("<ParentID>" + channel.getParentId() + "</ParentID>\r\n");
}
- catalogXml.append("<Secrecy>" + channel.getSecrecy() + "</Secrecy>\r\n");
catalogXml.append("<RegisterWay>" + channel.getRegisterWay() + "</RegisterWay>\r\n");
catalogXml.append("<Status>" + (channel.getStatus() == 0?"OFF":"ON") + "</Status>\r\n");
- catalogXml.append("<Longitude>" + channel.getLongitude() + "</Longitude>\r\n");
- catalogXml.append("<Latitude>" + channel.getLatitude() + "</Latitude>\r\n");
- catalogXml.append("<IPAddress>" + channel.getIpAddress() + "</IPAddress>\r\n");
- catalogXml.append("<Port>" + channel.getPort() + "</Port>\r\n");
- catalogXml.append("<Info>\r\n");
- catalogXml.append("<PTZType>" + channel.getPTZType() + "</PTZType>\r\n");
- catalogXml.append("</Info>\r\n");
+ catalogXml.append("<Secrecy>" + channel.getSecrecy() + "</Secrecy>\r\n");
+ if (channel.getChannelType() != 2) { // 涓氬姟鍒嗙粍/铏氭嫙缁勭粐/琛屾斂鍖哄垝 涓嶈缃互涓嬪瓧娈�
+ catalogXml.append("<Model>" + channel.getModel() + "</Model>\r\n");
+ catalogXml.append("<Owner>" + channel.getOwner() + "</Owner>\r\n");
+ catalogXml.append("<CivilCode>" + channel.getCivilCode() + "</CivilCode>\r\n");
+ catalogXml.append("<Address>" + channel.getAddress() + "</Address>\r\n");
+ catalogXml.append("<Longitude>" + channel.getLongitude() + "</Longitude>\r\n");
+ catalogXml.append("<Latitude>" + channel.getLatitude() + "</Latitude>\r\n");
+ catalogXml.append("<IPAddress>" + channel.getIpAddress() + "</IPAddress>\r\n");
+ catalogXml.append("<Port>" + channel.getPort() + "</Port>\r\n");
+ catalogXml.append("<Info>\r\n");
+ catalogXml.append("<PTZType>" + channel.getPTZType() + "</PTZType>\r\n");
+ catalogXml.append("</Info>\r\n");
+ }
+
catalogXml.append("</Item>\r\n");
}
}
@@ -539,10 +542,6 @@
catalogXml.append("<DeviceID>" + channel.getChannelId() + "</DeviceID>\r\n");
catalogXml.append("<Name>" + channel.getName() + "</Name>\r\n");
catalogXml.append("<Manufacturer>" + channel.getManufacture() + "</Manufacturer>\r\n");
- catalogXml.append("<Model>" + channel.getModel() + "</Model>\r\n");
- catalogXml.append("<Owner>0</Owner>\r\n");
- catalogXml.append("<CivilCode>CivilCode</CivilCode>\r\n");
- catalogXml.append("<Address>" + channel.getAddress() + "</Address>\r\n");
catalogXml.append("<Parental>" + channel.getParental() + "</Parental>\r\n");
if (channel.getParentId() != null) {
catalogXml.append("<ParentID>" + channel.getParentId() + "</ParentID>\r\n");
@@ -550,6 +549,12 @@
catalogXml.append("<Secrecy>" + channel.getSecrecy() + "</Secrecy>\r\n");
catalogXml.append("<RegisterWay>" + channel.getRegisterWay() + "</RegisterWay>\r\n");
catalogXml.append("<Status>" + (channel.getStatus() == 0 ? "OFF" : "ON") + "</Status>\r\n");
+ if (channel.getChannelType() == 2) { // 涓氬姟鍒嗙粍/铏氭嫙缁勭粐/琛屾斂鍖哄垝 涓嶈缃互涓嬪睘鎬�
+ catalogXml.append("<Model>" + channel.getModel() + "</Model>\r\n");
+ catalogXml.append("<Owner>0</Owner>\r\n");
+ catalogXml.append("<CivilCode>CivilCode</CivilCode>\r\n");
+ catalogXml.append("<Address>" + channel.getAddress() + "</Address>\r\n");
+ }
if (!"presence".equals(subscribeInfo.getEventType())) {
catalogXml.append("<Event>" + type + "</Event>\r\n");
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/CatalogQueryMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/CatalogQueryMessageHandler.java
index 9844315..cefee3f 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/CatalogQueryMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/CatalogQueryMessageHandler.java
@@ -83,10 +83,10 @@
catalog.setParentId(parentPlatform.getDeviceGBId());
}
DeviceChannel deviceChannel = new DeviceChannel();
+ // 閫氶亾鐨勭被鍨嬶紝0->鍥芥爣閫氶亾 1->鐩存挱娴侀�氶亾 2->涓氬姟鍒嗙粍/铏氭嫙缁勭粐/琛屾斂鍖哄垝
+ deviceChannel.setChannelType(2);
deviceChannel.setChannelId(catalog.getId());
deviceChannel.setName(catalog.getName());
- deviceChannel.setLongitude(0.0);
- deviceChannel.setLatitude(0.0);
deviceChannel.setDeviceId(parentPlatform.getDeviceGBId());
deviceChannel.setManufacture("wvp-pro");
deviceChannel.setStatus(1);
@@ -94,9 +94,6 @@
deviceChannel.setParentId(catalog.getParentId());
deviceChannel.setRegisterWay(1);
deviceChannel.setCivilCode(parentPlatform.getAdministrativeDivision());
- deviceChannel.setModel("live");
- deviceChannel.setOwner("wvp-pro");
- deviceChannel.setSecrecy("0");
allChannels.add(deviceChannel);
}
}
@@ -107,6 +104,8 @@
channel.setCatalogId(parentPlatform.getDeviceGBId());
}
DeviceChannel deviceChannel = storage.queryChannel(channel.getDeviceId(), channel.getChannelId());
+ // 閫氶亾鐨勭被鍨嬶紝0->鍥芥爣閫氶亾 1->鐩存挱娴侀�氶亾 2->涓氬姟鍒嗙粍/铏氭嫙缁勭粐/琛屾斂鍖哄垝
+ deviceChannel.setChannelType(0);
deviceChannel.setParental(0);
deviceChannel.setParentId(channel.getCatalogId());
deviceChannel.setCivilCode(parentPlatform.getDeviceGBId().substring(0, 6));
@@ -120,6 +119,8 @@
gbStream.setCatalogId(null);
}
DeviceChannel deviceChannel = new DeviceChannel();
+ // 閫氶亾鐨勭被鍨嬶紝0->鍥芥爣閫氶亾 1->鐩存挱娴侀�氶亾 2->涓氬姟鍒嗙粍/铏氭嫙缁勭粐/琛屾斂鍖哄垝
+ deviceChannel.setChannelType(1);
deviceChannel.setChannelId(gbStream.getGbId());
deviceChannel.setName(gbStream.getName());
deviceChannel.setLongitude(gbStream.getLongitude());
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java
index a36593e..cf8e006 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java
@@ -81,7 +81,7 @@
return result;
}
- public int createRTPServer(MediaServerItem mediaServerItem, String streamId) {
+ public int createRTPServer(MediaServerItem mediaServerItem, String streamId, int ssrc) {
int result = -1;
// 鏌ヨ姝tp server 鏄惁宸茬粡瀛樺湪
JSONObject rtpInfo = zlmresTfulUtils.getRtpInfo(mediaServerItem, streamId);
@@ -94,6 +94,7 @@
param.put("enable_tcp", 1);
param.put("stream_id", streamId);
param.put("port", 0);
+ param.put("ssrc", ssrc);
JSONObject openRtpServerResultJson = zlmresTfulUtils.openRtpServer(mediaServerItem, param);
if (openRtpServerResultJson != null) {
diff --git a/src/main/java/com/genersoft/iot/vmp/service/IMediaServerService.java b/src/main/java/com/genersoft/iot/vmp/service/IMediaServerService.java
index 00ec0dd..2a99754 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/IMediaServerService.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/IMediaServerService.java
@@ -44,9 +44,9 @@
void updateVmServer(List<MediaServerItem> mediaServerItemList);
- SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId);
+ SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, boolean ssrcCheck);
- SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, boolean isPlayback);
+ SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, boolean ssrcCheck, boolean isPlayback);
void closeRTPServer(String deviceId, String channelId, String ssrc);
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java
index a667bab..e7b9e51 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java
@@ -117,12 +117,12 @@
}
@Override
- public SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId) {
- return openRTPServer(mediaServerItem, streamId, false);
+ public SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, boolean ssrcCheck) {
+ return openRTPServer(mediaServerItem, streamId, ssrcCheck,false);
}
@Override
- public SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, boolean isPlayback) {
+ public SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, boolean ssrcCheck, boolean isPlayback) {
if (mediaServerItem == null || mediaServerItem.getId() == null) {
return null;
}
@@ -146,7 +146,7 @@
}
int rtpServerPort = mediaServerItem.getRtpProxyPort();
if (mediaServerItem.isRtpEnable()) {
- rtpServerPort = zlmrtpServerFactory.createRTPServer(mediaServerItem, streamId);
+ rtpServerPort = zlmrtpServerFactory.createRTPServer(mediaServerItem, streamId, ssrcCheck?Integer.parseInt(ssrc):0);
}
redisUtil.set(key, mediaServerItem);
return new SSRCInfo(rtpServerPort, ssrc, streamId);
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
index 61c37a8..518b9d4 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
@@ -188,7 +188,7 @@
if (mediaServerItem.isRtpEnable()) {
streamId = String.format("%s_%s", device.getDeviceId(), channelId);
}
- SSRCInfo ssrcInfo = mediaServerService.openRTPServer(mediaServerItem, streamId);
+ SSRCInfo ssrcInfo = mediaServerService.openRTPServer(mediaServerItem, streamId, device.isSsrcCheck());
play(mediaServerItem, ssrcInfo, device, channelId, (mediaServerItemInUse, response)->{
if (hookEvent != null) {
hookEvent.response(mediaServerItem, response);
@@ -232,7 +232,7 @@
streamId = String.format("%s_%s", device.getDeviceId(), channelId);
}
if (ssrcInfo == null) {
- ssrcInfo = mediaServerService.openRTPServer(mediaServerItem, streamId);
+ ssrcInfo = mediaServerService.openRTPServer(mediaServerItem, streamId, device.isSsrcCheck());
}
// 瓒呮椂澶勭悊
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java
index aab8d77..97cf2cc 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java
@@ -37,6 +37,7 @@
"subscribeCycleForMobilePosition," +
"mobilePositionSubmissionInterval," +
"subscribeCycleForAlarm," +
+ "ssrcCheck," +
"online" +
") VALUES (" +
"#{deviceId}," +
@@ -59,6 +60,7 @@
"#{subscribeCycleForMobilePosition}," +
"#{mobilePositionSubmissionInterval}," +
"#{subscribeCycleForAlarm}," +
+ "#{ssrcCheck}," +
"#{online}" +
")")
int add(Device device);
@@ -84,6 +86,7 @@
"<if test=\"subscribeCycleForMobilePosition != null\">, subscribeCycleForMobilePosition=${subscribeCycleForMobilePosition}</if>" +
"<if test=\"mobilePositionSubmissionInterval != null\">, mobilePositionSubmissionInterval=${mobilePositionSubmissionInterval}</if>" +
"<if test=\"subscribeCycleForAlarm != null\">, subscribeCycleForAlarm=${subscribeCycleForAlarm}</if>" +
+ "<if test=\"ssrcCheck != null\">, ssrcCheck=${ssrcCheck}</if>" +
"WHERE deviceId='${deviceId}'"+
" </script>"})
int update(Device device);
diff --git a/web_src/src/components/dialog/catalogEdit.vue b/web_src/src/components/dialog/catalogEdit.vue
index 20b2168..93d8f8d 100644
--- a/web_src/src/components/dialog/catalogEdit.vue
+++ b/web_src/src/components/dialog/catalogEdit.vue
@@ -13,11 +13,24 @@
<div id="shared" style="margin-top: 1rem;margin-right: 100px;">
<el-form ref="form" :rules="rules" :model="form" label-width="140px" >
<el-form-item label="鑺傜偣缂栧彿" prop="id" >
- <el-input v-model="form.id" :disabled="isEdit"></el-input>
+ <el-tooltip class="item" effect="dark" content="" placement="top-start">
+ <div slot="content">
+ 寤鸿鐨勭被鍨嬶細
+ <br/>
+   琛屾斂鍖哄垝锛堝彲閫�2浣�/4浣�/6浣�/8浣�/10浣嶆暟瀛楋紝渚嬪锛�130432锛岃〃绀烘渤鍖楃渷閭兏甯傚箍骞冲幙锛�
+ <br/>
+   涓氬姟鍒嗙粍锛堢11銆�12銆�13浣�215锛屼緥濡傦細34020000002150000001锛�
+ <br/>
+   铏氭嫙缁勭粐锛堢11銆�12銆�13浣�216锛屼緥濡傦細34020000002160000001锛�
+ </div>
+ <el-input v-model="form.id" :disabled="isEdit"></el-input>
+ </el-tooltip>
</el-form-item>
<el-form-item label="鑺傜偣鍚嶇О" prop="name">
<el-input v-model="form.name" clearable></el-input>
</el-form-item>
+
+
<el-form-item>
<div style="float: right;">
<el-button type="primary" @click="onSubmit" >纭</el-button>
diff --git a/web_src/src/components/dialog/deviceEdit.vue b/web_src/src/components/dialog/deviceEdit.vue
index 1b1aba0..b4dd285 100644
--- a/web_src/src/components/dialog/deviceEdit.vue
+++ b/web_src/src/components/dialog/deviceEdit.vue
@@ -45,6 +45,9 @@
<el-form-item v-if="form.subscribeCycleForMobilePosition > 0" label="绉诲姩浣嶇疆鎶ラ�侀棿闅�" prop="subscribeCycleForCatalog" >
<el-input v-model="form.mobilePositionSubmissionInterval" clearable ></el-input>
</el-form-item>
+ <el-form-item label="鍏朵粬閫夐」">
+ <el-checkbox label="SSRC鏍¢獙" v-model="form.ssrcCheck" style="float: left"></el-checkbox>
+ </el-form-item>
<el-form-item>
<div style="float: right;">
<el-button type="primary" @click="onSubmit" >纭</el-button>
--
Gitblit v1.8.0