From 67d1ff0d263f8179ca24d875f39b9186268d3dfa Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期一, 18 十二月 2023 14:23:48 +0800
Subject: [PATCH] Merge branch 'wvp-28181-2.0' into feature/record

---
 src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java |   31 +++++++++++++++++++------------
 1 files changed, 19 insertions(+), 12 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 67fea3e..3ab3eea 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
@@ -259,19 +259,22 @@
         } else {
             result.setEnable_mp4(userSetting.isRecordPushLive());
         }
-        // 鏇挎崲娴佸湴鍧�
-        if ("rtp".equals(param.getApp()) && !mediaInfo.isRtpEnable()) {
-            if (!mediaInfo.isRtpEnable()) {
-                String ssrc = String.format("%010d", Long.parseLong(param.getStream(), 16));;
-                InviteInfo inviteInfo = inviteStreamService.getInviteInfoBySSRC(ssrc);
+        // 鍥芥爣娴�
+        if ("rtp".equals(param.getApp()) ) {
+
+            InviteInfo inviteInfo = inviteStreamService.getInviteInfoByStream(null, param.getStream());
+
+            // 鍗曠鍙fā寮忎笅淇敼娴� ID
+            if (!mediaInfo.isRtpEnable() && inviteInfo == null) {
+                String ssrc = String.format("%010d", Long.parseLong(param.getStream(), 16));
+                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) {
 
@@ -292,10 +295,10 @@
             // 濡傛灉鏄綍鍍忎笅杞藉氨璁剧疆瑙嗛闂撮殧鍗佺
             if (ssrcTransactionForAll.get(0).getType() == InviteSessionType.DOWNLOAD) {
                 // 鑾峰彇褰曞儚鐨勬�绘椂闀匡紝鐒跺悗璁剧疆涓鸿繖涓棰戠殑鏃堕暱
-                InviteInfo inviteInfo = inviteStreamService.getInviteInfo(InviteSessionType.DOWNLOAD, deviceId, channelId, param.getStream());
-                if (inviteInfo.getStreamInfo() != null ) {
-                    String startTime = inviteInfo.getStreamInfo().getStartTime();
-                    String endTime = inviteInfo.getStreamInfo().getEndTime();
+                InviteInfo inviteInfoForDownload = inviteStreamService.getInviteInfo(InviteSessionType.DOWNLOAD, deviceId, channelId, param.getStream());
+                if (inviteInfoForDownload != null && inviteInfoForDownload.getStreamInfo() != null ) {
+                    String startTime = inviteInfoForDownload.getStreamInfo().getStartTime();
+                    String endTime = inviteInfoForDownload.getStreamInfo().getEndTime();
                     long difference = DateUtil.getDifference(startTime, endTime)/1000;
                     result.setMp4_max_second((int)difference);
                     result.setEnable_mp4(true);
@@ -529,11 +532,15 @@
                         if (info != null) {
                             cmder.streamByeCmd(device, inviteInfo.getChannelId(),
                                     inviteInfo.getStream(), null);
+                        }else {
+                            logger.info("[鏃犱汉瑙傜湅] 鏈壘鍒拌澶囩殑鐐规挱淇℃伅锛� {}锛� 娴侊細{}", inviteInfo.getDeviceId(), param.getStream());
                         }
                     } catch (InvalidArgumentException | ParseException | SipException |
                              SsrcTransactionNotFoundException e) {
                         logger.error("[鏃犱汉瑙傜湅]鐐规挱锛� 鍙戦�丅YE澶辫触 {}", e.getMessage());
                     }
+                }else {
+                    logger.info("[鏃犱汉瑙傜湅] 鏈壘鍒拌澶囷細 {}锛屾祦锛歿}", inviteInfo.getDeviceId(), param.getStream());
                 }
 
                 inviteStreamService.removeInviteInfo(inviteInfo.getType(), inviteInfo.getDeviceId(),
@@ -598,7 +605,7 @@
             String deviceId = s[0];
             String channelId = s[1];
             Device device = redisCatchStorage.getDevice(deviceId);
-            if (device == null) {
+            if (device == null || !device.isOnLine()) {
                 defaultResult.setResult(new HookResult(ErrorCode.ERROR404.getCode(), ErrorCode.ERROR404.getMsg()));
                 return defaultResult;
             }

--
Gitblit v1.8.0