From 4b827f3897600e97023ded3df83a2f2551131d53 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期二, 13 十二月 2022 11:57:07 +0800
Subject: [PATCH] 级联语音对讲部分
---
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java | 50 +++++++++++++++++++++++++++++---------------------
1 files changed, 29 insertions(+), 21 deletions(-)
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 32f0364..5e62981 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
@@ -987,7 +987,7 @@
}
@Override
- public AudioBroadcastResult audioBroadcast(Device device, String channelId) {
+ public AudioBroadcastResult audioBroadcastInfo(Device device, String channelId) {
if (device == null || channelId == null) {
return null;
}
@@ -1012,46 +1012,51 @@
}
@Override
- public void audioBroadcastCmd(Device device, String channelId, int timeout, AudioBroadcastEvent event) throws InvalidArgumentException, ParseException, SipException {
+ public boolean audioBroadcastCmd(Device device, String channelId, MediaServerItem mediaServerItem, String app, String stream, int timeout, boolean isFromPlatform, AudioBroadcastEvent event) throws InvalidArgumentException, ParseException, SipException {
if (device == null || channelId == null) {
- return;
+ return false;
}
logger.info("[璇煶鍠婅瘽] device锛� {}, channel: {}", device.getDeviceId(), channelId);
DeviceChannel deviceChannel = storager.queryChannel(device.getDeviceId(), channelId);
if (deviceChannel == null) {
logger.warn("寮�鍚闊冲箍鎾殑鏃跺�欐湭鎵惧埌閫氶亾锛� {}", channelId);
event.call("寮�鍚闊冲箍鎾殑鏃跺�欐湭鎵惧埌閫氶亾");
- return;
+ return false;
}
// 鏌ヨ閫氶亾浣跨敤鐘舵��
- if (audioBroadcastManager.exit(device.getDeviceId(), channelId)) {
- SendRtpItem sendRtpItem = redisCatchStorage.querySendRTPServer(device.getDeviceId(), channelId, null, null);
- if (sendRtpItem != null && sendRtpItem.isOnlyAudio()) {
- // 鏌ヨ娴佹槸鍚﹀瓨鍦紝涓嶅瓨鍦ㄥ垯璁や负鏄紓甯哥姸鎬�
- MediaServerItem mediaServerItem = mediaServerService.getOne(sendRtpItem.getMediaServerId());
- Boolean streamReady = zlmrtpServerFactory.isStreamReady(mediaServerItem, sendRtpItem.getApp(), sendRtpItem.getStreamId());
- if (streamReady) {
- logger.warn("璇煶骞挎挱宸茬粡寮�鍚細 {}", channelId);
- event.call("璇煶骞挎挱宸茬粡寮�鍚�");
- return;
- } else {
- audioBroadcastManager.del(deviceChannel.getDeviceId(), channelId);
- redisCatchStorage.deleteSendRTPServer(device.getDeviceId(), channelId, sendRtpItem.getCallId(), sendRtpItem.getStreamId());
- }
- }
+ if (audioBroadcastInUse(device, channelId)) {
+ return false;
}
// 鍙戦�侀�氱煡
cmder.audioBroadcastCmd(device, channelId, eventResultForOk -> {
// 鍙戦�佹垚鍔�
- AudioBroadcastCatch audioBroadcastCatch = new AudioBroadcastCatch(device.getDeviceId(), channelId, AudioBroadcastCatchStatus.Ready);
- audioBroadcastManager.add(audioBroadcastCatch);
+ AudioBroadcastCatch audioBroadcastCatch = new AudioBroadcastCatch(device.getDeviceId(), channelId, mediaServerItem, app, stream, event, AudioBroadcastCatchStatus.Ready, isFromPlatform);
+ audioBroadcastManager.update(audioBroadcastCatch);
}, eventResultForError -> {
// 鍙戦�佸け璐�
logger.error("璇煶骞挎挱鍙戦�佸け璐ワ細 {}:{}", channelId, eventResultForError.msg);
event.call("璇煶骞挎挱鍙戦�佸け璐�");
stopAudioBroadcast(device.getDeviceId(), channelId);
});
+ return true;
+ }
+
+ @Override
+ public boolean audioBroadcastInUse(Device device, String channelId) {
+ if (audioBroadcastManager.exit(device.getDeviceId(), channelId)) {
+ SendRtpItem sendRtpItem = redisCatchStorage.querySendRTPServer(device.getDeviceId(), channelId, null, null);
+ if (sendRtpItem != null && sendRtpItem.isOnlyAudio()) {
+ // 鏌ヨ娴佹槸鍚﹀瓨鍦紝涓嶅瓨鍦ㄥ垯璁や负鏄紓甯哥姸鎬�
+ MediaServerItem mediaServerServiceOne = mediaServerService.getOne(sendRtpItem.getMediaServerId());
+ Boolean streamReady = zlmrtpServerFactory.isStreamReady(mediaServerServiceOne, sendRtpItem.getApp(), sendRtpItem.getStreamId());
+ if (streamReady) {
+ logger.warn("璇煶骞挎挱閫氶亾浣跨敤涓細 {}", channelId);
+ return true;
+ }
+ }
+ }
+ return false;
}
@@ -1075,6 +1080,9 @@
param.put("stream", sendRtpItem.getStreamId());
zlmresTfulUtils.stopSendRtp(mediaInfo, param);
}
+ if (audioBroadcastCatch.isFromPlatform()) {
+ // TODO 鍚戜笂绾у彂閫丅YE缁撴潫璇煶鍠婅瘽
+ }
audioBroadcastManager.del(deviceId, channelId);
}
--
Gitblit v1.8.0