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 0368ee4a..d08201f8 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 @@ -26,6 +26,7 @@ import gov.nist.javax.sip.SipProviderImpl; import gov.nist.javax.sip.SipStackImpl; import gov.nist.javax.sip.message.MessageFactoryImpl; import gov.nist.javax.sip.message.SIPRequest; +import gov.nist.javax.sip.stack.SIPClientTransaction; import gov.nist.javax.sip.stack.SIPDialog; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -433,7 +434,14 @@ public class SIPCommander implements ISIPCommander { }), e ->{ // 这里为例避免一个通道的点播只有一个callID这个参数使用一个固定值 streamSession.put(device.getDeviceId(), channelId ,"play", stream, ssrcInfo.getSsrc(), mediaServerItem.getId(), ((ResponseEvent)e.event).getClientTransaction(), VideoStreamSessionManager.SessionType.play); - streamSession.put(device.getDeviceId(), channelId ,"play", e.dialog); + Dialog sipDialog = null; + if (e.dialog == null) { + SIPClientTransaction clientTransaction = (SIPClientTransaction)((ResponseEvent)e.event).getClientTransaction(); + sipDialog = new SIPDialog(clientTransaction, clientTransaction.getLastResponse()); + }else { + sipDialog = e.dialog; + } + streamSession.put(device.getDeviceId(), channelId ,"play", sipDialog); okEvent.response(e); });