From 0447b83c3a5e48741adcd85ce9552ff202831784 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期五, 29 三月 2024 23:41:00 +0800 Subject: [PATCH] 临时提交 --- src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java | 6 +- src/main/java/com/genersoft/iot/vmp/media/event/MediaArrivalEvent.java | 11 +++++ src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java | 27 +++++++++++++ src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java | 5 +- src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java | 3 + src/main/java/com/genersoft/iot/vmp/gb28181/session/AudioBroadcastManager.java | 42 --------------------- src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java | 1 7 files changed, 46 insertions(+), 49 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/session/AudioBroadcastManager.java b/src/main/java/com/genersoft/iot/vmp/gb28181/session/AudioBroadcastManager.java index bc5f022..f5385d4 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/session/AudioBroadcastManager.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/session/AudioBroadcastManager.java @@ -38,50 +38,8 @@ @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("[鍛戒护鍙戦�佸け璐 鍙戦�丅YE: {}", e.getMessage()); - } - } - } - } - } public void update(AudioBroadcastCatch audioBroadcastCatch) { if (SipUtils.isFrontEnd(audioBroadcastCatch.getDeviceId())) { diff --git a/src/main/java/com/genersoft/iot/vmp/media/event/MediaArrivalEvent.java b/src/main/java/com/genersoft/iot/vmp/media/event/MediaArrivalEvent.java index 1b79b0c..b70fcf7 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/event/MediaArrivalEvent.java +++ b/src/main/java/com/genersoft/iot/vmp/media/event/MediaArrivalEvent.java @@ -20,6 +20,7 @@ mediaArrivalEvent.setStream(hookParam.getStream()); mediaArrivalEvent.setMediaServer(mediaServer); mediaArrivalEvent.setSchema(hookParam.getSchema()); + mediaArrivalEvent.setCallId(hookParam.getCallId()); return mediaArrivalEvent; } @@ -32,6 +33,8 @@ private MediaServer mediaServer; private String schema; + + private String callId; public MediaInfo getMediaInfo() { return mediaInfo; @@ -72,4 +75,12 @@ public void setSchema(String schema) { this.schema = schema; } + + public String getCallId() { + return callId; + } + + public void setCallId(String callId) { + this.callId = callId; + } } diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java index 9316aa6..3fcb9d0 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java @@ -208,7 +208,6 @@ ResultForOnPublish result = new ResultForOnPublish(); result.setEnable_audio(true); - // 鏄惁褰曞儚 if ("rtp".equals(app)) { result.setEnable_mp4(userSetting.getRecordSip()); diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java index e6b082d..1fad2be 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java @@ -175,6 +175,33 @@ @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 = audioBroadcastManager.get(sendRtpItem.getDeviceId(), sendRtpItem.getChannelId()); + if (audioBroadcastCatch != null) { + // 鏉ヨ嚜涓婄骇骞冲彴鐨勫仠姝㈠璁� + logger.info("[鍋滄瀵硅] 鏉ヨ嚜涓婄骇锛屽钩鍙帮細{}, 閫氶亾锛歿}", sendRtpItem.getDeviceId(), sendRtpItem.getChannelId()); + audioBroadcastManager.del(sendRtpItem.getDeviceId(), sendRtpItem.getChannelId()); + } + } + } + } catch (SipException | InvalidArgumentException | ParseException | + SsrcTransactionNotFoundException e) { + logger.error("[鍛戒护鍙戦�佸け璐 鍙戦�丅YE: {}", e.getMessage()); + } + } + } + } + if ("broadcast".equals(event.getApp()) || "talk".equals(event.getApp())) { if (event.getStream().indexOf("_") > 0) { String[] streamArray = event.getStream().split("_"); diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java index dd0e885..4bdcc2f 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java @@ -176,14 +176,14 @@ redisCatchStorage.sendStreamChangeMsg(type, jsonObject); } } - GbStream gbStream = storager.getGbStream(event.getApp(), event.getStream()); + GbStream gbStream = gbStreamMapper.selectOne(event.getApp(), event.getStream()); if (gbStream != null) { if (userSetting.isUsePushingAsStatus()) { - storager.mediaOffline(event.getApp(), event.getStream()); + streamPushMapper.updatePushStatus(event.getApp(), event.getStream(), false); eventPublisher.catalogEventPublishForStream(null, gbStream, CatalogEvent.OFF); } }else { - storager.removeMedia(event.getApp(), event.getStream()); + streamPushMapper.del(event.getApp(), event.getStream()); } } diff --git a/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java b/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java index 2a48a49..7edf7e8 100755 --- a/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java @@ -6,6 +6,7 @@ import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.bean.ParentPlatformCatch; import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem; +import com.genersoft.iot.vmp.media.event.MediaArrivalEvent; import com.genersoft.iot.vmp.media.zlm.dto.MediaServer; import com.genersoft.iot.vmp.media.zlm.dto.StreamAuthorityInfo; import com.genersoft.iot.vmp.media.zlm.dto.hook.OnStreamChangedHookParam; @@ -209,7 +210,7 @@ void sendPlatformStopPlayMsg(MessageForPushChannel messageForPushChannel); - void addPushListItem(String app, String stream, OnStreamChangedHookParam param); + void addPushListItem(String app, String stream, MediaArrivalEvent param); void removePushListItem(String app, String stream, String mediaServerId); } diff --git a/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java index 4fc16fc..2523312 100755 --- a/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java @@ -9,6 +9,7 @@ import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.bean.ParentPlatformCatch; import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem; +import com.genersoft.iot.vmp.media.event.MediaArrivalEvent; import com.genersoft.iot.vmp.media.zlm.dto.MediaServer; import com.genersoft.iot.vmp.media.zlm.dto.StreamAuthorityInfo; import com.genersoft.iot.vmp.media.zlm.dto.hook.OnStreamChangedHookParam; @@ -651,9 +652,9 @@ } @Override - public void addPushListItem(String app, String stream, OnStreamChangedHookParam param) { + public void addPushListItem(String app, String stream, MediaArrivalEvent event) { String key = VideoManagerConstants.PUSH_STREAM_LIST + app + "_" + stream; - redisTemplate.opsForValue().set(key, param); + redisTemplate.opsForValue().set(key, event); } @Override -- Gitblit v1.8.0