|
|
@@ -2,15 +2,10 @@ package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl;
|
|
|
|
|
|
import com.genersoft.iot.vmp.common.InviteInfo;
|
|
|
import com.genersoft.iot.vmp.common.InviteSessionType;
|
|
|
-import com.genersoft.iot.vmp.common.StreamInfo;
|
|
|
import com.genersoft.iot.vmp.conf.UserSetting;
|
|
|
import com.genersoft.iot.vmp.conf.exception.SsrcTransactionNotFoundException;
|
|
|
-import com.genersoft.iot.vmp.gb28181.bean.Device;
|
|
|
-import com.genersoft.iot.vmp.gb28181.bean.InviteStreamType;
|
|
|
-import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem;
|
|
|
-import com.genersoft.iot.vmp.gb28181.bean.SsrcTransaction;
|
|
|
-import com.genersoft.iot.vmp.gb28181.session.SSRCFactory;
|
|
|
import com.genersoft.iot.vmp.gb28181.bean.*;
|
|
|
+import com.genersoft.iot.vmp.gb28181.session.SSRCFactory;
|
|
|
import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
|
|
|
import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorObserver;
|
|
|
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander;
|
|
|
@@ -18,11 +13,7 @@ import com.genersoft.iot.vmp.gb28181.transmit.event.request.ISIPRequestProcessor
|
|
|
import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
|
|
|
import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory;
|
|
|
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
|
|
|
-import com.genersoft.iot.vmp.service.IDeviceChannelService;
|
|
|
-import com.genersoft.iot.vmp.service.IDeviceService;
|
|
|
-import com.genersoft.iot.vmp.service.IInviteStreamService;
|
|
|
-import com.genersoft.iot.vmp.service.IMediaServerService;
|
|
|
-import com.genersoft.iot.vmp.service.IPlatformService;
|
|
|
+import com.genersoft.iot.vmp.service.*;
|
|
|
import com.genersoft.iot.vmp.service.bean.MessageForPushChannel;
|
|
|
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
|
|
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
|
|
|
@@ -33,10 +24,6 @@ import org.springframework.beans.factory.InitializingBean;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
-import javax.sip.InvalidArgumentException;
|
|
|
-import javax.sip.RequestEvent;
|
|
|
-import javax.sip.SipException;
|
|
|
-import javax.sip.address.SipURI;
|
|
|
import javax.sip.InvalidArgumentException;
|
|
|
import javax.sip.RequestEvent;
|
|
|
import javax.sip.SipException;
|
|
|
@@ -160,6 +147,7 @@ public class ByeRequestProcessor extends SIPRequestProcessorParent implements In
|
|
|
}
|
|
|
}
|
|
|
}else {
|
|
|
+
|
|
|
// 可能是设备发送的停止
|
|
|
SsrcTransaction ssrcTransaction = streamSession.getSsrcTransaction(null, null, callIdHeader.getCallId(), null);
|
|
|
if (ssrcTransaction == null) {
|
|
|
@@ -180,10 +168,12 @@ public class ByeRequestProcessor extends SIPRequestProcessorParent implements In
|
|
|
return;
|
|
|
}
|
|
|
storager.stopPlay(device.getDeviceId(), channel.getChannelId());
|
|
|
- StreamInfo streamInfo = redisCatchStorage.queryPlayByDevice(device.getDeviceId(), channel.getChannelId());
|
|
|
- if (streamInfo != null) {
|
|
|
- redisCatchStorage.stopPlay(streamInfo);
|
|
|
- mediaServerService.closeRTPServer(streamInfo.getMediaServerId(), streamInfo.getStream());
|
|
|
+ InviteInfo inviteInfo = inviteStreamService.getInviteInfoByDeviceAndChannel(InviteSessionType.PLAY, device.getDeviceId(), channel.getChannelId());
|
|
|
+ if (inviteInfo != null) {
|
|
|
+ inviteStreamService.removeInviteInfo(inviteInfo);
|
|
|
+ if (inviteInfo.getStreamInfo() != null) {
|
|
|
+ mediaServerService.closeRTPServer(inviteInfo.getStreamInfo().getMediaServerId(), inviteInfo.getStreamInfo().getStream());
|
|
|
+ }
|
|
|
}
|
|
|
// 释放ssrc
|
|
|
MediaServerItem mediaServerItem = mediaServerService.getOne(ssrcTransaction.getMediaServerId());
|