Commit 09a23bc80e017e73160c3fba89f609fe045f5748

Authored by 648540858
1 parent 809e4c98

修复布防撤防 #717

src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
@@ -726,8 +726,6 @@ public class SIPCommander implements ISIPCommander { @@ -726,8 +726,6 @@ public class SIPCommander implements ISIPCommander {
726 cmdXml.append("<GuardCmd>" + guardCmdStr + "</GuardCmd>\r\n"); 726 cmdXml.append("<GuardCmd>" + guardCmdStr + "</GuardCmd>\r\n");
727 cmdXml.append("</Control>\r\n"); 727 cmdXml.append("</Control>\r\n");
728 728
729 -  
730 -  
731 Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport())); 729 Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(sipLayer.getLocalIp(device.getLocalIp()),device.getTransport()));
732 sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent); 730 sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), request, errorEvent);
733 } 731 }
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
@@ -244,6 +244,9 @@ public class PlayServiceImpl implements IPlayService { @@ -244,6 +244,9 @@ public class PlayServiceImpl implements IPlayService {
244 mediaServerService.closeRTPServer(mediaServerItem, ssrcInfo.getStream()); 244 mediaServerService.closeRTPServer(mediaServerItem, ssrcInfo.getStream());
245 streamSession.remove(device.getDeviceId(), channelId, ssrcInfo.getStream()); 245 streamSession.remove(device.getDeviceId(), channelId, ssrcInfo.getStream());
246 mediaServerService.closeRTPServer(mediaServerItem, ssrcInfo.getStream()); 246 mediaServerService.closeRTPServer(mediaServerItem, ssrcInfo.getStream());
  247 + // 取消订阅消息监听
  248 + HookSubscribeForStreamChange hookSubscribe = HookSubscribeFactory.on_stream_changed("rtp", ssrcInfo.getStream(), true, "rtsp", mediaServerItem.getId());
  249 + subscribe.removeSubscribe(hookSubscribe);
247 } 250 }
248 } 251 }
249 }, userSetting.getPlayTimeout()); 252 }, userSetting.getPlayTimeout());
@@ -253,7 +256,6 @@ public class PlayServiceImpl implements IPlayService { @@ -253,7 +256,6 @@ public class PlayServiceImpl implements IPlayService {
253 dynamicTask.stop(timeOutTaskKey); 256 dynamicTask.stop(timeOutTaskKey);
254 // 释放ssrc 257 // 释放ssrc
255 mediaServerService.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrc()); 258 mediaServerService.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrc());
256 -  
257 streamSession.remove(device.getDeviceId(), channelId, ssrcInfo.getStream()); 259 streamSession.remove(device.getDeviceId(), channelId, ssrcInfo.getStream());
258 260
259 RequestMessage msg = new RequestMessage(); 261 RequestMessage msg = new RequestMessage();
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceControl.java
@@ -14,7 +14,6 @@ import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder; @@ -14,7 +14,6 @@ import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
14 import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage; 14 import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
15 import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander; 15 import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
16 import com.genersoft.iot.vmp.storager.IVideoManagerStorage; 16 import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
17 -  
18 import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; 17 import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
19 import io.swagger.v3.oas.annotations.Operation; 18 import io.swagger.v3.oas.annotations.Operation;
20 import io.swagger.v3.oas.annotations.Parameter; 19 import io.swagger.v3.oas.annotations.Parameter;
@@ -22,10 +21,8 @@ import io.swagger.v3.oas.annotations.tags.Tag; @@ -22,10 +21,8 @@ import io.swagger.v3.oas.annotations.tags.Tag;
22 import org.slf4j.Logger; 21 import org.slf4j.Logger;
23 import org.slf4j.LoggerFactory; 22 import org.slf4j.LoggerFactory;
24 import org.springframework.beans.factory.annotation.Autowired; 23 import org.springframework.beans.factory.annotation.Autowired;
25 -import org.springframework.http.HttpStatus;  
26 import org.springframework.http.ResponseEntity; 24 import org.springframework.http.ResponseEntity;
27 import org.springframework.util.ObjectUtils; 25 import org.springframework.util.ObjectUtils;
28 -import org.springframework.util.StringUtils;  
29 import org.springframework.web.bind.annotation.*; 26 import org.springframework.web.bind.annotation.*;
30 import org.springframework.web.context.request.async.DeferredResult; 27 import org.springframework.web.context.request.async.DeferredResult;
31 28
@@ -130,15 +127,14 @@ public class DeviceControl { @@ -130,15 +127,14 @@ public class DeviceControl {
130 */ 127 */
131 @Operation(summary = "布防/撤防命令") 128 @Operation(summary = "布防/撤防命令")
132 @Parameter(name = "deviceId", description = "设备国标编号", required = true) 129 @Parameter(name = "deviceId", description = "设备国标编号", required = true)
133 - @Parameter(name = "channelId", description = "通道国标编号", required = true)  
134 @Parameter(name = "guardCmdStr", description = "命令, 可选值:SetGuard(布防),ResetGuard(撤防)", required = true) 130 @Parameter(name = "guardCmdStr", description = "命令, 可选值:SetGuard(布防),ResetGuard(撤防)", required = true)
135 @GetMapping("/guard/{deviceId}/{guardCmdStr}") 131 @GetMapping("/guard/{deviceId}/{guardCmdStr}")
136 - public DeferredResult<String> guardApi(@PathVariable String deviceId, String channelId, @PathVariable String guardCmdStr) { 132 + public DeferredResult<String> guardApi(@PathVariable String deviceId, @PathVariable String guardCmdStr) {
137 if (logger.isDebugEnabled()) { 133 if (logger.isDebugEnabled()) {
138 logger.debug("布防/撤防API调用"); 134 logger.debug("布防/撤防API调用");
139 } 135 }
140 Device device = storager.queryVideoDevice(deviceId); 136 Device device = storager.queryVideoDevice(deviceId);
141 - String key = DeferredResultHolder.CALLBACK_CMD_DEVICECONTROL + deviceId + channelId; 137 + String key = DeferredResultHolder.CALLBACK_CMD_DEVICECONTROL + deviceId + deviceId;
142 String uuid =UUID.randomUUID().toString(); 138 String uuid =UUID.randomUUID().toString();
143 try { 139 try {
144 cmder.guardCmd(device, guardCmdStr, event -> { 140 cmder.guardCmd(device, guardCmdStr, event -> {