From b6e604f2449bb65dfaafb0f0741ba54ff0d2f9c2 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期二, 30 四月 2024 15:20:03 +0800
Subject: [PATCH] 修改云端录像详情页使用直接访问zlm的方式播放录像
---
src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java | 39 ++++++++++++++++++++++++++++++++-------
1 files changed, 32 insertions(+), 7 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java
index ee2eeff..47b902e 100755
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java
@@ -6,6 +6,7 @@
import com.genersoft.iot.vmp.conf.DynamicTask;
import com.genersoft.iot.vmp.conf.UserSetting;
import com.genersoft.iot.vmp.gb28181.bean.*;
+import com.genersoft.iot.vmp.gb28181.session.AudioBroadcastManager;
import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
import com.genersoft.iot.vmp.gb28181.task.ISubscribeTask;
import com.genersoft.iot.vmp.gb28181.task.impl.CatalogSubscribeTask;
@@ -13,10 +14,11 @@
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.cmd.CatalogResponseMessageHandler;
+import com.genersoft.iot.vmp.media.bean.MediaServer;
import com.genersoft.iot.vmp.service.IDeviceChannelService;
import com.genersoft.iot.vmp.service.IDeviceService;
import com.genersoft.iot.vmp.service.IInviteStreamService;
-import com.genersoft.iot.vmp.service.IMediaServerService;
+import com.genersoft.iot.vmp.media.service.IMediaServerService;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper;
import com.genersoft.iot.vmp.storager.dao.DeviceMapper;
@@ -37,9 +39,7 @@
import javax.sip.SipException;
import java.text.ParseException;
import java.time.Instant;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
+import java.util.*;
import java.util.concurrent.TimeUnit;
/**
@@ -53,6 +53,7 @@
@Autowired
private SIPCommander cmder;
+
@Autowired
private DynamicTask dynamicTask;
@@ -97,6 +98,9 @@
@Autowired
private IMediaServerService mediaServerService;
+
+ @Autowired
+ private AudioBroadcastManager audioBroadcastManager;
@Override
public void online(Device device, SipTransactionInfo sipTransactionInfo) {
@@ -229,6 +233,21 @@
// 绉婚櫎璁㈤槄
removeCatalogSubscribe(device, null);
removeMobilePositionSubscribe(device, null);
+
+ List<AudioBroadcastCatch> audioBroadcastCatches = audioBroadcastManager.get(deviceId);
+ if (audioBroadcastCatches.size() > 0) {
+ for (AudioBroadcastCatch audioBroadcastCatch : audioBroadcastCatches) {
+
+ SendRtpItem sendRtpItem = redisCatchStorage.querySendRTPServer(deviceId, audioBroadcastCatch.getChannelId(), null, null);
+ if (sendRtpItem != null) {
+ redisCatchStorage.deleteSendRTPServer(deviceId, sendRtpItem.getChannelId(), null, null);
+ MediaServer mediaInfo = mediaServerService.getOne(sendRtpItem.getMediaServerId());
+ mediaServerService.stopSendRtp(mediaInfo, sendRtpItem.getApp(), sendRtpItem.getStream(), null);
+ }
+
+ audioBroadcastManager.del(deviceId, audioBroadcastCatch.getChannelId());
+ }
+ }
}
@Override
@@ -243,6 +262,8 @@
int subscribeCycleForCatalog = Math.max(device.getSubscribeCycleForCatalog(),30);
// 璁剧疆鏈�灏忓�间负30
dynamicTask.startCron(device.getDeviceId() + "catalog", catalogSubscribeTask, (subscribeCycleForCatalog -1) * 1000);
+
+ catalogSubscribeTask.run();
return true;
}
@@ -276,6 +297,7 @@
int subscribeCycleForCatalog = Math.max(device.getSubscribeCycleForMobilePosition(),30);
// 鍒锋柊璁㈤槄
dynamicTask.startCron(device.getDeviceId() + "mobile_position" , mobilePositionSubscribeTask, subscribeCycleForCatalog * 1000);
+ mobilePositionSubscribeTask.run();
return true;
}
@@ -536,6 +558,7 @@
removeMobilePositionSubscribe(deviceInStore, result->{
// 寮�鍚闃�
deviceInStore.setSubscribeCycleForMobilePosition(device.getSubscribeCycleForMobilePosition());
+ deviceInStore.setMobilePositionSubmissionInterval(device.getMobilePositionSubmissionInterval());
addMobilePositionSubscribe(deviceInStore);
// 鍥犱负鏄紓姝ユ墽琛岋紝闇�瑕佸湪杩欓噷鏇存柊涓嬫暟鎹�
deviceMapper.updateCustom(deviceInStore);
@@ -544,13 +567,15 @@
}else {
// 寮�鍚闃�
deviceInStore.setSubscribeCycleForMobilePosition(device.getSubscribeCycleForMobilePosition());
+ deviceInStore.setMobilePositionSubmissionInterval(device.getMobilePositionSubmissionInterval());
addMobilePositionSubscribe(deviceInStore);
}
}else if (device.getSubscribeCycleForMobilePosition() == 0) {
// 鍙栨秷璁㈤槄
- deviceInStore.setSubscribeCycleForCatalog(0);
- removeCatalogSubscribe(deviceInStore, null);
+ deviceInStore.setSubscribeCycleForMobilePosition(0);
+ deviceInStore.setMobilePositionSubmissionInterval(0);
+ removeMobilePositionSubscribe(deviceInStore, null);
}
}
if (deviceInStore.getGeoCoordSys() != null) {
@@ -569,7 +594,7 @@
deviceInStore.setSsrcCheck(device.isSsrcCheck());
//浣滀负娑堟伅閫氶亾
deviceInStore.setAsMessageChannel(device.isAsMessageChannel());
-
+
deviceMapper.updateCustom(deviceInStore);
redisCatchStorage.updateDevice(deviceInStore);
}
--
Gitblit v1.8.0