From 5e724cc0628554b949f0102bee6294db8a23c7f5 Mon Sep 17 00:00:00 2001
From: wangyimeng <421132955@qq.com>
Date: 星期三, 06 七月 2022 15:33:43 +0800
Subject: [PATCH] Merge branch 'wvp-28181-2.0' of https://github.com/mrjackwang/wvp-GB28181-pro into wvp-28181-2.0
---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java | 40 ++++++++++++++++++++++++++++++++++++++--
1 files changed, 38 insertions(+), 2 deletions(-)
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 0363c91..0097ce0 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
@@ -717,8 +717,7 @@
}
dialog = streamSession.getDialogByStream(ssrcTransaction.getDeviceId(), ssrcTransaction.getChannelId(), ssrcTransaction.getStream());
}
- MediaServerItem mediaServerItem = mediaServerService.getOne(ssrcTransaction.getMediaServerId());
- mediaServerService.releaseSsrc(mediaServerItem.getId(), ssrcTransaction.getSsrc());
+ mediaServerService.releaseSsrc(ssrcTransaction.getMediaServerId(), ssrcTransaction.getSsrc());
mediaServerService.closeRTPServer(ssrcTransaction.getDeviceId(), ssrcTransaction.getChannelId(), ssrcTransaction.getStream());
streamSession.remove(ssrcTransaction.getDeviceId(), ssrcTransaction.getChannelId(), ssrcTransaction.getStream());
@@ -1829,6 +1828,43 @@
e.printStackTrace();
}
}
+
+ @Override
+ public void playbackControlCmd(Device device, StreamInfo streamInfo, String content,SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent) {
+ try {
+ Request request = headerProvider.createInfoRequest(device, streamInfo, content);
+ if (request == null) {
+ return;
+ }
+ logger.info(request.toString());
+ ClientTransaction clientTransaction = null;
+ if ("TCP".equals(device.getTransport())) {
+ clientTransaction = tcpSipProvider.getNewClientTransaction(request);
+ } else if ("UDP".equals(device.getTransport())) {
+ clientTransaction = udpSipProvider.getNewClientTransaction(request);
+ }
+ CallIdHeader callIdHeader = (CallIdHeader)request.getHeader(CallIdHeader.NAME);
+ if(errorEvent != null) {
+ sipSubscribe.addErrorSubscribe(callIdHeader.getCallId(), (eventResult -> {
+ errorEvent.response(eventResult);
+ sipSubscribe.removeErrorSubscribe(eventResult.callId);
+ sipSubscribe.removeOkSubscribe(eventResult.callId);
+ }));
+ }
+
+ if(okEvent != null) {
+ sipSubscribe.addOkSubscribe(callIdHeader.getCallId(), eventResult -> {
+ okEvent.response(eventResult);
+ sipSubscribe.removeOkSubscribe(eventResult.callId);
+ sipSubscribe.removeErrorSubscribe(eventResult.callId);
+ });
+ }
+ clientTransaction.sendRequest();
+
+ } catch (SipException | ParseException | InvalidArgumentException e) {
+ e.printStackTrace();
+ }
+ }
@Override
public boolean sendAlarmMessage(Device device, DeviceAlarm deviceAlarm) {
--
Gitblit v1.8.0