|
|
@@ -38,50 +38,8 @@ public class AudioBroadcastManager {
|
|
|
@Autowired
|
|
|
private SipConfig config;
|
|
|
|
|
|
- @Autowired
|
|
|
- private SIPCommander cmder;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private IRedisCatchStorage redisCatchStorage;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private IDeviceService deviceService;
|
|
|
-
|
|
|
public static Map<String, AudioBroadcastCatch> data = new ConcurrentHashMap<>();
|
|
|
|
|
|
- /**
|
|
|
- * 流离开的处理
|
|
|
- */
|
|
|
- @Async("taskExecutor")
|
|
|
- @EventListener
|
|
|
- public void onApplicationEvent(MediaDepartureEvent event) {
|
|
|
- List<SendRtpItem> sendRtpItems = redisCatchStorage.querySendRTPServerByStream(event.getStream());
|
|
|
- if (!sendRtpItems.isEmpty()) {
|
|
|
- for (SendRtpItem sendRtpItem : sendRtpItems) {
|
|
|
- if (sendRtpItem != null && sendRtpItem.getApp().equals(event.getApp())) {
|
|
|
- String platformId = sendRtpItem.getPlatformId();
|
|
|
- Device device = deviceService.getDevice(platformId);
|
|
|
- try {
|
|
|
- if (device != null) {
|
|
|
- cmder.streamByeCmd(device, sendRtpItem.getChannelId(), event.getStream(), sendRtpItem.getCallId());
|
|
|
- if (sendRtpItem.getPlayType().equals(InviteStreamType.BROADCAST)
|
|
|
- || sendRtpItem.getPlayType().equals(InviteStreamType.TALK)) {
|
|
|
- AudioBroadcastCatch audioBroadcastCatch = get(sendRtpItem.getDeviceId(), sendRtpItem.getChannelId());
|
|
|
- if (audioBroadcastCatch != null) {
|
|
|
- // 来自上级平台的停止对讲
|
|
|
- logger.info("[停止对讲] 来自上级,平台:{}, 通道:{}", sendRtpItem.getDeviceId(), sendRtpItem.getChannelId());
|
|
|
- del(sendRtpItem.getDeviceId(), sendRtpItem.getChannelId());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (SipException | InvalidArgumentException | ParseException |
|
|
|
- SsrcTransactionNotFoundException e) {
|
|
|
- logger.error("[命令发送失败] 发送BYE: {}", e.getMessage());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
public void update(AudioBroadcastCatch audioBroadcastCatch) {
|
|
|
if (SipUtils.isFrontEnd(audioBroadcastCatch.getDeviceId())) {
|