From 0f0ece240128795d7e174937a4ee848ef7f3d691 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期二, 25 十月 2022 10:17:59 +0800 Subject: [PATCH] 设备编辑增加收流IP --- src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java | 9 ++++ src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java | 11 +++++ src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java | 1 web_src/src/components/dialog/deviceEdit.vue | 3 + src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java | 33 ++++++++++++---- sql/update.sql | 3 + web_src/src/components/dialog/configInfo.vue | 2 7 files changed, 52 insertions(+), 10 deletions(-) diff --git a/sql/update.sql b/sql/update.sql index c6ec595..1c2f855 100644 --- a/sql/update.sql +++ b/sql/update.sql @@ -11,6 +11,9 @@ add custom_name varchar(255) default null; alter table device + add sdpIp varchar(50) default null; + +alter table device add password varchar(255) default null; alter table device 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 8af042c..9dd046b 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 @@ -175,6 +175,9 @@ @Schema(description = "瀵嗙爜") private String password; + @Schema(description = "鏀舵祦IP") + private String sdpIp; + public String getDeviceId() { return deviceId; @@ -391,4 +394,12 @@ public void setPassword(String password) { this.password = password; } + + public String getSdpIp() { + return sdpIp; + } + + public void setSdpIp(String sdpIp) { + this.sdpIp = sdpIp; + } } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java index b374461..dc356d0 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java @@ -290,12 +290,17 @@ subscribe.removeSubscribe(hookSubscribe); } }); - // + String sdpIp; + if (!ObjectUtils.isEmpty(device.getSdpIp())) { + sdpIp = device.getSdpIp(); + }else { + sdpIp = mediaServerItem.getSdpIp(); + } StringBuffer content = new StringBuffer(200); content.append("v=0\r\n"); - content.append("o=" + channelId + " 0 0 IN IP4 " + mediaServerItem.getSdpIp() + "\r\n"); + content.append("o=" + channelId + " 0 0 IN IP4 " + sdpIp + "\r\n"); content.append("s=Play\r\n"); - content.append("c=IN IP4 " + mediaServerItem.getSdpIp() + "\r\n"); + content.append("c=IN IP4 " + sdpIp + "\r\n"); content.append("t=0 0\r\n"); if (userSetting.isSeniorSdp()) { @@ -379,13 +384,18 @@ logger.info("{} 鍒嗛厤鐨刏LM涓�: {} [{}:{}]", ssrcInfo.getStream(), mediaServerItem.getId(), mediaServerItem.getIp(), ssrcInfo.getPort()); - + String sdpIp; + if (!ObjectUtils.isEmpty(device.getSdpIp())) { + sdpIp = device.getSdpIp(); + }else { + sdpIp = mediaServerItem.getSdpIp(); + } StringBuffer content = new StringBuffer(200); content.append("v=0\r\n"); - content.append("o=" + channelId + " 0 0 IN IP4 " + mediaServerItem.getSdpIp() + "\r\n"); + content.append("o=" + channelId + " 0 0 IN IP4 " + sdpIp + "\r\n"); content.append("s=Playback\r\n"); content.append("u=" + channelId + ":0\r\n"); - content.append("c=IN IP4 " + mediaServerItem.getSdpIp() + "\r\n"); + content.append("c=IN IP4 " + sdpIp + "\r\n"); content.append("t=" + DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(startTime) + " " + DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(endTime) + "\r\n"); @@ -476,13 +486,18 @@ SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException { logger.info("{} 鍒嗛厤鐨刏LM涓�: {} [{}:{}]", ssrcInfo.getStream(), mediaServerItem.getId(), mediaServerItem.getIp(), ssrcInfo.getPort()); - + String sdpIp; + if (!ObjectUtils.isEmpty(device.getSdpIp())) { + sdpIp = device.getSdpIp(); + }else { + sdpIp = mediaServerItem.getSdpIp(); + } StringBuffer content = new StringBuffer(200); content.append("v=0\r\n"); - content.append("o=" + channelId + " 0 0 IN IP4 " + mediaServerItem.getSdpIp() + "\r\n"); + content.append("o=" + channelId + " 0 0 IN IP4 " + sdpIp + "\r\n"); content.append("s=Download\r\n"); content.append("u=" + channelId + ":0\r\n"); - content.append("c=IN IP4 " + mediaServerItem.getSdpIp() + "\r\n"); + content.append("c=IN IP4 " + sdpIp + "\r\n"); content.append("t=" + DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(startTime) + " " + DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(endTime) + "\r\n"); diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java index 16c9803..c1a8619 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java @@ -600,6 +600,7 @@ if (!deviceInStore.getGeoCoordSys().equals(device.getGeoCoordSys())) { updateDeviceChannelGeoCoordSys(device); } + // 鏇存柊redis deviceMapper.updateCustom(device); } 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 b1210c6..9bf5c02 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 @@ -24,6 +24,7 @@ "transport," + "streamMode," + "ip," + + "sdpIp," + "port," + "hostAddress," + "expires," + @@ -52,6 +53,7 @@ "transport," + "streamMode," + "ip," + + "sdpIp," + "port," + "hostAddress," + "expires," + @@ -77,6 +79,7 @@ "#{transport}," + "#{streamMode}," + "#{ip}," + + "#{sdpIp}," + "#{port}," + "#{hostAddress}," + "#{expires}," + @@ -125,6 +128,7 @@ "transport," + "streamMode," + "ip," + + "sdpIp," + "port," + "hostAddress," + "expires," + @@ -160,6 +164,7 @@ "transport," + "streamMode," + "ip," + + "sdpIp," + "port," + "hostAddress," + "expires," + @@ -188,6 +193,7 @@ "transport," + "streamMode," + "ip," + + "sdpIp," + "port," + "hostAddress," + "expires," + @@ -214,6 +220,7 @@ "<if test=\"password != null\">, password='${password}'</if>" + "<if test=\"streamMode != null\">, streamMode='${streamMode}'</if>" + "<if test=\"ip != null\">, ip='${ip}'</if>" + + "<if test=\"sdpIp != null\">, sdpIp='${sdpIp}'</if>" + "<if test=\"port != null\">, port=${port}</if>" + "<if test=\"charset != null\">, charset='${charset}'</if>" + "<if test=\"subscribeCycleForCatalog != null\">, subscribeCycleForCatalog=${subscribeCycleForCatalog}</if>" + @@ -232,6 +239,7 @@ "deviceId, " + "custom_name, " + "password, " + + "sdpIp, " + "createTime," + "updateTime," + "charset," + @@ -243,6 +251,7 @@ "#{deviceId}," + "#{name}," + "#{password}," + + "#{sdpIp}," + "#{createTime}," + "#{updateTime}," + "#{charset}," + diff --git a/web_src/src/components/dialog/configInfo.vue b/web_src/src/components/dialog/configInfo.vue index 428d621..83d9f38 100644 --- a/web_src/src/components/dialog/configInfo.vue +++ b/web_src/src/components/dialog/configInfo.vue @@ -19,7 +19,7 @@ <el-tag size="small">{{configInfoData.sip.password}}</el-tag> </el-descriptions-item> </el-descriptions> - <el-descriptions title="鐗堟湰淇℃伅"v-if="configInfoData.sip"> + <el-descriptions title="鐗堟湰淇℃伅"v-if="configInfoData.version"> <el-descriptions-item label="鐗堟湰">{{configInfoData.version.version}}</el-descriptions-item> <el-descriptions-item label="缂栬瘧鏃堕棿">{{configInfoData.version.BUILD_DATE}}</el-descriptions-item> <el-descriptions-item label="GIT鐗堟湰">{{configInfoData.version.GIT_Revision_SHORT}}</el-descriptions-item> diff --git a/web_src/src/components/dialog/deviceEdit.vue b/web_src/src/components/dialog/deviceEdit.vue index 3747ca4..8a5f9d1 100644 --- a/web_src/src/components/dialog/deviceEdit.vue +++ b/web_src/src/components/dialog/deviceEdit.vue @@ -22,6 +22,9 @@ <el-form-item label="瀵嗙爜" prop="password"> <el-input type="password" v-model="form.password" clearable></el-input> </el-form-item> + <el-form-item label="鏀舵祦IP" prop="sdpIp"> + <el-input type="sdpIp" v-model="form.sdpIp" clearable></el-input> + </el-form-item> <el-form-item label="娴佸獟浣揑D" prop="mediaServerId"> <el-select v-model="form.mediaServerId" style="float: left; width: 100%" > <el-option key="auto" label="鑷姩璐熻浇鏈�灏�" value="auto"></el-option> -- Gitblit v1.8.0