src/main/java/com/genersoft/iot/vmp/gb28181/session/AudioBroadcastManager.java
@@ -25,6 +25,7 @@ public void update(AudioBroadcastCatch audioBroadcastCatch) { if (SipUtils.isFrontEnd(audioBroadcastCatch.getDeviceId())) { audioBroadcastCatch.setChannelId(audioBroadcastCatch.getDeviceId()); data.put(audioBroadcastCatch.getDeviceId(), audioBroadcastCatch); }else { data.put(audioBroadcastCatch.getDeviceId() + audioBroadcastCatch.getChannelId(), audioBroadcastCatch); src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
@@ -977,7 +977,10 @@ } if (device != null) { logger.info("收到设备" + requesterId + "的语音广播Invite请求"); String key = VideoManagerConstants.BROADCAST_WAITE_INVITE + device.getDeviceId() + broadcastCatch.getChannelId(); String key = VideoManagerConstants.BROADCAST_WAITE_INVITE + device.getDeviceId(); if (!SipUtils.isFrontEnd(device.getDeviceId())) { key += broadcastCatch.getChannelId(); } dynamicTask.stop(key); try { responseAck(request, Response.TRYING); src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/BroadcastResponseMessageHandler.java
@@ -11,6 +11,7 @@ import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent; import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler; import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.ResponseMessageHandler; import com.genersoft.iot.vmp.gb28181.utils.SipUtils; import com.genersoft.iot.vmp.service.IPlayService; import gov.nist.javax.sip.message.SIPRequest; import org.dom4j.Element; @@ -77,7 +78,10 @@ audioBroadcastCatch.setStatus(AudioBroadcastCatchStatus.WaiteInvite); audioBroadcastManager.update(audioBroadcastCatch); // 等待invite消息, 超时则结束 String key = VideoManagerConstants.BROADCAST_WAITE_INVITE + device.getDeviceId() + channelId; String key = VideoManagerConstants.BROADCAST_WAITE_INVITE + device.getDeviceId(); if (!SipUtils.isFrontEnd(device.getDeviceId())) { key += audioBroadcastCatch.getChannelId(); } dynamicTask.startDelay(key, ()->{ logger.info("[语音广播]等待invite消息超时:{}/{}", device.getDeviceId(), channelId); playService.stopAudioBroadcast(device.getDeviceId(), channelId);