From 6e8071d820aa55173e64fd25609caa3b6b9af98a Mon Sep 17 00:00:00 2001
From: bradyx <xushanbin@zdjtcm.com>
Date: 星期三, 15 五月 2024 13:52:16 +0800
Subject: [PATCH] fix: 系统启动时,停止已启动国标推流抛出异常被系统捕获,启动服务失败。
---
src/main/java/com/genersoft/iot/vmp/gb28181/task/SipRunner.java | 2 +-
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java | 17 +++++++++++++++++
src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java | 10 ++++++++++
src/main/java/com/genersoft/iot/vmp/media/service/IMediaServerService.java | 2 ++
src/main/java/com/genersoft/iot/vmp/media/service/IMediaNodeServerService.java | 2 ++
5 files changed, 32 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/task/SipRunner.java b/src/main/java/com/genersoft/iot/vmp/gb28181/task/SipRunner.java
index b61a623..e2b2223 100755
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/task/SipRunner.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/task/SipRunner.java
@@ -104,7 +104,7 @@
redisCatchStorage.deleteSendRTPServer(sendRtpItem.getPlatformId(),sendRtpItem.getChannelId(), sendRtpItem.getCallId(),sendRtpItem.getStream());
if (mediaServerItem != null) {
ssrcFactory.releaseSsrc(sendRtpItem.getMediaServerId(), sendRtpItem.getSsrc());
- boolean stopResult = mediaServerService.stopSendRtp(mediaServerItem, sendRtpItem.getApp(), sendRtpItem.getStream(), sendRtpItem.getSsrc());
+ boolean stopResult = mediaServerService.initStopSendRtp(mediaServerItem, sendRtpItem.getApp(), sendRtpItem.getStream(), sendRtpItem.getSsrc());
if (stopResult) {
ParentPlatform platform = platformService.queryPlatformByServerGBId(sendRtpItem.getPlatformId());
if (platform != null) {
diff --git a/src/main/java/com/genersoft/iot/vmp/media/service/IMediaNodeServerService.java b/src/main/java/com/genersoft/iot/vmp/media/service/IMediaNodeServerService.java
index 8739938..a3916b3 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/service/IMediaNodeServerService.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/service/IMediaNodeServerService.java
@@ -29,6 +29,8 @@
boolean stopSendRtp(MediaServer mediaInfo, String app, String stream, String ssrc);
+ boolean initStopSendRtp(MediaServer mediaInfo, String app, String stream, String ssrc);
+
boolean deleteRecordDirectory(MediaServer mediaServer, String app, String stream, String date, String fileName);
List<StreamInfo> getMediaList(MediaServer mediaServer, String app, String stream, String callId);
diff --git a/src/main/java/com/genersoft/iot/vmp/media/service/IMediaServerService.java b/src/main/java/com/genersoft/iot/vmp/media/service/IMediaServerService.java
index 11d5bf5..cde96df 100755
--- a/src/main/java/com/genersoft/iot/vmp/media/service/IMediaServerService.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/service/IMediaServerService.java
@@ -76,6 +76,8 @@
boolean stopSendRtp(MediaServer mediaInfo, String app, String stream, String ssrc);
+ boolean initStopSendRtp(MediaServer mediaInfo, String app, String stream, String ssrc);
+
boolean deleteRecordDirectory(MediaServer mediaServerItem, String app, String stream, String date, String fileName);
List<StreamInfo> getMediaList(MediaServer mediaInfo, String app, String stream, String callId);
diff --git a/src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java
index ae386fc..2dd66e7 100755
--- a/src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/service/impl/MediaServerServiceImpl.java
@@ -596,6 +596,16 @@
}
@Override
+ public boolean initStopSendRtp(MediaServer mediaInfo, String app, String stream, String ssrc) {
+ IMediaNodeServerService mediaNodeServerService = nodeServerServiceMap.get(mediaInfo.getType());
+ if (mediaNodeServerService == null) {
+ logger.info("[stopSendRtp] 澶辫触, mediaServer鐨勭被鍨嬶細 {}锛屾湭鎵惧埌瀵瑰簲鐨勫疄鐜扮被", mediaInfo.getType());
+ return false;
+ }
+ return mediaNodeServerService.initStopSendRtp(mediaInfo, app, stream, ssrc);
+ }
+
+ @Override
public boolean deleteRecordDirectory(MediaServer mediaServer, String app, String stream, String date, String fileName) {
IMediaNodeServerService mediaNodeServerService = nodeServerServiceMap.get(mediaServer.getType());
if (mediaNodeServerService == null) {
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java
index e91ced9..4cfdaf3 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java
@@ -145,6 +145,23 @@
}
@Override
+ public boolean initStopSendRtp(MediaServer mediaInfo, String app, String stream, String ssrc) {
+ Map<String, Object> param = new HashMap<>();
+ param.put("vhost", "__defaultVhost__");
+ param.put("app", app);
+ param.put("stream", stream);
+ if (!ObjectUtils.isEmpty(ssrc)) {
+ param.put("ssrc", ssrc);
+ }
+ JSONObject jsonObject = zlmresTfulUtils.stopSendRtp(mediaInfo, param);
+ if (jsonObject == null || jsonObject.getInteger("code") != 0 ) {
+ logger.error("鍋滄鍙戞祦澶辫触: {}, 鍙傛暟锛歿}", jsonObject.getString("msg"), JSON.toJSONString(param));
+ return false;
+ }
+ return true;
+ }
+
+ @Override
public boolean deleteRecordDirectory(MediaServer mediaServer, String app, String stream, String date, String fileName) {
logger.info("[zlm-deleteRecordDirectory] 鍒犻櫎纾佺洏鏂囦欢, server: {} {}:{}->{}/{}", mediaServer.getId(), app, stream, date, fileName);
JSONObject jsonObject = zlmresTfulUtils.deleteRecordDirectory(mediaServer, app,
--
Gitblit v1.8.0