From ffc8a530f30ba5d200dc885aef7404c5cbab282e Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期五, 24 十一月 2023 10:47:33 +0800
Subject: [PATCH] 修复定时录像删除
---
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java | 60 ++++++++++++++++++++++++------------------------------------
1 files changed, 24 insertions(+), 36 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
index 3ad7b70..885126c 100755
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
@@ -111,6 +111,9 @@
private IUserService userService;
@Autowired
+ private ICloudRecordService cloudRecordService;
+
+ @Autowired
private VideoStreamSessionManager sessionManager;
@Autowired
@@ -231,12 +234,6 @@
streamAuthorityInfo.setSign(sign);
// 閴存潈閫氳繃
redisCatchStorage.updateStreamAuthorityInfo(param.getApp(), param.getStream(), streamAuthorityInfo);
- // 閫氱煡assist鏂扮殑callId
- if (mediaInfo != null && mediaInfo.getRecordAssistPort() > 0) {
- taskExecutor.execute(() -> {
- assistRESTfulUtils.addStreamCallInfo(mediaInfo, param.getApp(), param.getStream(), callId, null);
- });
- }
}
} else {
zlmMediaListManager.sendStreamEvent(param.getApp(), param.getStream(), param.getMediaServerId());
@@ -264,15 +261,28 @@
}
// 鏇挎崲娴佸湴鍧�
if ("rtp".equals(param.getApp()) && !mediaInfo.isRtpEnable()) {
- String ssrc = String.format("%010d", Long.parseLong(param.getStream(), 16));;
- InviteInfo inviteInfo = inviteStreamService.getInviteInfoBySSRC(ssrc);
- if (inviteInfo != null) {
- result.setStream_replace(inviteInfo.getStream());
- logger.info("[ZLM HOOK]鎺ㄦ祦閴存潈 stream: {} 鏇挎崲涓� {}", param.getStream(), inviteInfo.getStream());
+ if (!mediaInfo.isRtpEnable()) {
+ String ssrc = String.format("%010d", Long.parseLong(param.getStream(), 16));;
+ InviteInfo inviteInfo = inviteStreamService.getInviteInfoBySSRC(ssrc);
+ if (inviteInfo != null) {
+ result.setStream_replace(inviteInfo.getStream());
+ logger.info("[ZLM HOOK]鎺ㄦ祦閴存潈 stream: {} 鏇挎崲涓� {}", param.getStream(), inviteInfo.getStream());
+ }
}
+
}
+
List<SsrcTransaction> ssrcTransactionForAll = sessionManager.getSsrcTransactionForAll(null, null, null, param.getStream());
if (ssrcTransactionForAll != null && ssrcTransactionForAll.size() == 1) {
+
+ // 涓哄綍鍒跺浗鏍囨ā鎷熶竴涓壌鏉冧俊鎭�
+ StreamAuthorityInfo streamAuthorityInfo = StreamAuthorityInfo.getInstanceByHook(param);
+ streamAuthorityInfo.setApp(param.getApp());
+ streamAuthorityInfo.setStream(ssrcTransactionForAll.get(0).getStream());
+ streamAuthorityInfo.setCallId(ssrcTransactionForAll.get(0).getSipTransactionInfo().getCallId());
+
+ redisCatchStorage.updateStreamAuthorityInfo(param.getApp(), ssrcTransactionForAll.get(0).getStream(), streamAuthorityInfo);
+
String deviceId = ssrcTransactionForAll.get(0).getDeviceId();
String channelId = ssrcTransactionForAll.get(0).getChannelId();
DeviceChannel deviceChannel = storager.queryChannel(deviceId, channelId);
@@ -281,26 +291,8 @@
}
// 濡傛灉鏄綍鍍忎笅杞藉氨璁剧疆瑙嗛闂撮殧鍗佺
if (ssrcTransactionForAll.get(0).getType() == InviteSessionType.DOWNLOAD) {
- result.setMp4_max_second(10);
+ result.setMp4_max_second(30);
result.setEnable_mp4(true);
- }
- }
- if (mediaInfo.getRecordAssistPort() > 0 && userSetting.getRecordPath() == null) {
- logger.info("鎺ㄦ祦鏃跺彂鐜板皻鏈缃綍鍍忚矾寰勶紝浠巃ssist鏈嶅姟涓鍙�");
- JSONObject info = assistRESTfulUtils.getInfo(mediaInfo, null);
- if (info != null && info.getInteger("code") != null && info.getInteger("code") == 0 ) {
- JSONObject dataJson = info.getJSONObject("data");
- if (dataJson != null) {
- String recordPath = dataJson.getString("record");
- userSetting.setRecordPath(recordPath);
- result.setMp4_save_path(recordPath);
- // 淇敼zlm涓殑褰曞儚璺緞
- if (mediaInfo.isAutoConfig()) {
- taskExecutor.execute(() -> {
- mediaServerService.setZLMConfig(mediaInfo, false);
- });
- }
- }
}
}
if (param.getApp().equalsIgnoreCase("rtp")) {
@@ -346,13 +338,11 @@
List<OnStreamChangedHookParam.MediaTrack> tracks = param.getTracks();
// TODO 閲嶆瀯姝ゅ閫昏緫
- boolean isPush = false;
if (param.isRegist()) {
- // 澶勭悊娴佹敞鍐岀殑閴存潈淇℃伅
+ // 澶勭悊娴佹敞鍐岀殑閴存潈淇℃伅锛� 娴佹敞閿�杩欓噷涓嶅啀鍒犻櫎閴存潈淇℃伅锛屼笅娆℃潵浜嗘柊鐨勯壌鏉冧俊鎭細瀵瑰氨鐨勮繘琛岃鐩�
if (param.getOriginType() == OriginType.RTMP_PUSH.ordinal()
|| param.getOriginType() == OriginType.RTSP_PUSH.ordinal()
|| param.getOriginType() == OriginType.RTC_PUSH.ordinal()) {
- isPush = true;
StreamAuthorityInfo streamAuthorityInfo = redisCatchStorage.getStreamAuthorityInfo(param.getApp(), param.getStream());
if (streamAuthorityInfo == null) {
streamAuthorityInfo = StreamAuthorityInfo.getInstanceByHook(param);
@@ -362,8 +352,6 @@
}
redisCatchStorage.updateStreamAuthorityInfo(param.getApp(), param.getStream(), streamAuthorityInfo);
}
- } else {
- redisCatchStorage.removeStreamAuthorityInfo(param.getApp(), param.getStream());
}
if ("rtsp".equals(param.getSchema())) {
@@ -775,7 +763,7 @@
logger.info("[ZLM HOOK] 褰曞儚瀹屾垚浜嬩欢锛歿}->{}", param.getMediaServerId(), param.getFile_path());
taskExecutor.execute(() -> {
-
+ cloudRecordService.addRecord(param);
});
return HookResult.SUCCESS();
--
Gitblit v1.8.0