From 65fa75fb448fe9ab7bec84559616006730149509 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期二, 10 五月 2022 11:02:02 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/wvp-28181-2.0' into commercial
---
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java | 44 ++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 44 insertions(+), 0 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 f2b6c28..a647c84 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
@@ -8,6 +8,7 @@
import com.genersoft.iot.vmp.conf.UserSetting;
import com.genersoft.iot.vmp.gb28181.bean.*;
import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
+import com.genersoft.iot.vmp.gb28181.session.AudioBroadcastManager;
import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
@@ -26,7 +27,9 @@
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
import com.genersoft.iot.vmp.utils.redis.RedisUtil;
+import com.genersoft.iot.vmp.vmanager.bean.AudioBroadcastResult;
import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
+import com.genersoft.iot.vmp.vmanager.gb28181.play.bean.AudioBroadcastEvent;
import com.genersoft.iot.vmp.vmanager.gb28181.play.bean.PlayResult;
import com.genersoft.iot.vmp.service.IMediaService;
import com.genersoft.iot.vmp.service.IPlayService;
@@ -56,6 +59,9 @@
@Autowired
private SIPCommander cmder;
+
+ @Autowired
+ private AudioBroadcastManager audioBroadcastManager;
@Autowired
private SIPCommanderFroPlatform sipCommanderFroPlatform;
@@ -621,4 +627,42 @@
}
}
}
+
+ @Override
+ public void audioBroadcast(Device device, String channelId, int timeout, AudioBroadcastEvent event) {
+ if (device == null || channelId == null) {
+ return;
+ }
+ DeviceChannel deviceChannel = storager.queryChannel(device.getDeviceId(), channelId);
+ if (deviceChannel == null) {
+ logger.warn("寮�鍚闊冲箍鎾殑鏃跺�欐湭鎵惧埌閫氶亾锛� {}", channelId);
+ event.call("寮�鍚闊冲箍鎾殑鏃跺�欐湭鎵惧埌閫氶亾");
+ return;
+ }
+ // 鏌ヨ閫氶亾浣跨敤鐘舵��
+ if (audioBroadcastManager.exit(device.getDeviceId(), channelId)) {
+ logger.warn("璇煶骞挎挱宸茬粡寮�鍚細 {}", channelId);
+ event.call("璇煶骞挎挱宸茬粡寮�鍚�");
+ return;
+ }
+ String timeOutTaskKey = "audio-broadcast-" + device.getDeviceId() + channelId;
+ dynamicTask.startDelay(timeOutTaskKey, ()->{
+ logger.error("璇煶骞挎挱鍙戦�佽秴鏃讹細 {}:{}", device.getDeviceId(), channelId);
+ event.call("璇煶骞挎挱鍙戦�佽秴鏃�");
+ audioBroadcastManager.del(device.getDeviceId(), channelId);
+ }, timeout * 1000);
+
+ // 鍙戦�侀�氱煡
+ cmder.audioBroadcastCmd(device, channelId, eventResultForOk -> {
+ // 鍙戦�佹垚鍔�
+ AudioBroadcastCatch audioBroadcastCatch = new AudioBroadcastCatch(device.getDeviceId(), channelId, AudioBroadcastCatchStatus.Ready);
+ audioBroadcastManager.add(audioBroadcastCatch);
+ }, eventResultForError -> {
+ dynamicTask.stop(timeOutTaskKey);
+ // 鍙戦�佸け璐�
+ logger.error("璇煶骞挎挱鍙戦�佸け璐ワ細 {}:{}", channelId, eventResultForError.msg);
+ event.call("璇煶骞挎挱鍙戦�佸け璐�");
+ audioBroadcastManager.del(device.getDeviceId(), channelId);
+ });
+ }
}
--
Gitblit v1.8.0