From c1ac16bf620d09a94a0cfe184cbe1c9cb531a01b Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期六, 23 三月 2024 15:38:54 +0800
Subject: [PATCH] 优化媒体节点服务的代码结构

---
 src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java |   77 +++++++-------------------------------
 1 files changed, 15 insertions(+), 62 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 ac68bfe..a247a78 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
@@ -18,7 +18,7 @@
 import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
 import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform;
 import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
-import com.genersoft.iot.vmp.media.bean.Track;
+import com.genersoft.iot.vmp.media.bean.MediaInfo;
 import com.genersoft.iot.vmp.media.service.IMediaServerService;
 import com.genersoft.iot.vmp.media.zlm.dto.*;
 import com.genersoft.iot.vmp.media.zlm.dto.hook.*;
@@ -34,7 +34,6 @@
 import com.genersoft.iot.vmp.vmanager.bean.OtherPsSendInfo;
 import com.genersoft.iot.vmp.vmanager.bean.OtherRtpSendInfo;
 import com.genersoft.iot.vmp.vmanager.bean.StreamContent;
-import org.apache.poi.ss.formula.functions.T;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -143,17 +142,9 @@
 
     @PostMapping(value = "/on_server_keepalive", produces = "application/json;charset=UTF-8")
     public HookResult onServerKeepalive(@RequestBody OnServerKeepaliveHookParam param) {
-        taskExecutor.execute(() -> {
-            List<ZlmHttpHookSubscribe.Event> subscribes = this.subscribe.getSubscribes(HookType.on_server_keepalive);
-            if (subscribes != null && subscribes.size() > 0) {
-                for (ZlmHttpHookSubscribe.Event subscribe : subscribes) {
-                    subscribe.response(null, param);
-                }
-            }
-        });
         try {
             HookZlmServerKeepaliveEvent event = new HookZlmServerKeepaliveEvent(this);
-            MediaServerItem mediaServerItem = mediaServerService.getOne(param.getMediaServerId());
+            MediaServer mediaServerItem = mediaServerService.getOne(param.getMediaServerId());
             if (mediaServerItem != null) {
                 event.setMediaServerItem(mediaServerItem);
                 applicationEventPublisher.publishEvent(event);
@@ -171,7 +162,7 @@
     @PostMapping(value = "/on_play", produces = "application/json;charset=UTF-8")
     public HookResult onPlay(@RequestBody OnPlayHookParam param) {
         if (logger.isDebugEnabled()) {
-            logger.debug("[ZLM HOOK] 鎾斁閴存潈锛歿}->{}" + param.getMediaServerId(), param);
+            logger.debug("[ZLM HOOK] 鎾斁閴存潈锛歿}->{}", param.getMediaServerId(), param);
         }
         String mediaServerId = param.getMediaServerId();
 
@@ -179,12 +170,13 @@
             JSONObject json = (JSONObject) JSON.toJSON(param);
             ZlmHttpHookSubscribe.Event subscribe = this.subscribe.sendNotify(HookType.on_play, json);
             if (subscribe != null) {
-                MediaServerItem mediaInfo = mediaServerService.getOne(mediaServerId);
+                MediaServer mediaInfo = mediaServerService.getOne(mediaServerId);
                 if (mediaInfo != null) {
                     subscribe.response(mediaInfo, param);
                 }
             }
         });
+        // TODO 姝ゅ閫昏緫閫傚悎杩佺Щ鍒癕ediaService涓�
         if (!"rtp".equals(param.getApp())) {
             Map<String, String> paramMap = urlParamToMap(param.getParams());
             StreamAuthorityInfo streamAuthorityInfo = redisCatchStorage.getStreamAuthorityInfo(param.getApp(), param.getStream());
@@ -209,8 +201,8 @@
         // TODO 鍔犲揩澶勭悊閫熷害
 
         String mediaServerId = json.getString("mediaServerId");
-        MediaServerItem mediaInfo = mediaServerService.getOne(mediaServerId);
-        if (mediaInfo == null) {
+        MediaServer mediaServer = mediaServerService.getOne(mediaServerId);
+        if (mediaServer == null) {
             return new HookResultForOnPublish(200, "success");
         }
         // 鎺ㄦ祦閴存潈鐨勫鐞�
@@ -258,11 +250,7 @@
         taskExecutor.execute(() -> {
             ZlmHttpHookSubscribe.Event subscribe = this.subscribe.sendNotify(HookType.on_publish, json);
             if (subscribe != null) {
-                if (mediaInfo != null) {
-                    subscribe.response(mediaInfo, param);
-                } else {
-                    new HookResultForOnPublish(1, "zlm not register");
-                }
+                subscribe.response(mediaServer, param);
             }
         });
 
@@ -278,7 +266,7 @@
             InviteInfo inviteInfo = inviteStreamService.getInviteInfoByStream(null, param.getStream());
 
             // 鍗曠鍙fā寮忎笅淇敼娴� ID
-            if (!mediaInfo.isRtpEnable() && inviteInfo == null) {
+            if (!mediaServer.isRtpEnable() && inviteInfo == null) {
                 String ssrc = String.format("%010d", Long.parseLong(param.getStream(), 16));
                 inviteInfo = inviteStreamService.getInviteInfoBySSRC(ssrc);
                 if (inviteInfo != null) {
@@ -360,7 +348,7 @@
         JSONObject json = (JSONObject) JSON.toJSON(param);
         taskExecutor.execute(() -> {
             ZlmHttpHookSubscribe.Event subscribe = this.subscribe.sendNotify(HookType.on_stream_changed, json);
-            MediaServerItem mediaInfo = mediaServerService.getOne(param.getMediaServerId());
+            MediaServer mediaInfo = mediaServerService.getOne(param.getMediaServerId());
             if (mediaInfo == null) {
                 logger.info("[ZLM HOOK] 娴佸彉鍖栨湭鎵惧埌ZLM, {}", param.getMediaServerId());
                 return;
@@ -369,40 +357,6 @@
                 subscribe.response(mediaInfo, param);
             }
 
-            List<OnStreamChangedHookParam.MediaTrack> tracks = param.getTracks();
-            Track track = new Track();
-            track.setReaderCount(param.getTotalReaderCount());
-            for (OnStreamChangedHookParam.MediaTrack mediaTrack : tracks) {
-                switch (mediaTrack.getCodec_id()) {
-                    case 0:
-                        track.setVideoCodec("H264");
-                        break;
-                    case 1:
-                        track.setVideoCodec("H265");
-                        break;
-                    case 2:
-                        track.setAudioCodec("AAC");
-                        break;
-                    case 3:
-                        track.setAudioCodec("G711A");
-                        break;
-                    case 4:
-                        track.setAudioCodec("G711U");
-                        break;
-                }
-                if (mediaTrack.getSample_rate() > 0) {
-                    track.setAudioSampleRate(mediaTrack.getSample_rate());
-                }
-                if (mediaTrack.getChannels() > 0) {
-                    track.setAudioChannels(mediaTrack.getChannels());
-                }
-                if (mediaTrack.getHeight() > 0) {
-                    track.setHeight(mediaTrack.getHeight());
-                }
-                if (mediaTrack.getWidth() > 0) {
-                    track.setWidth(mediaTrack.getWidth());
-                }
-            }
             // TODO 閲嶆瀯姝ゅ閫昏緫
             if (param.isRegist()) {
                 // 澶勭悊娴佹敞鍐岀殑閴存潈淇℃伅锛� 娴佹敞閿�杩欓噷涓嶅啀鍒犻櫎閴存潈淇℃伅锛屼笅娆℃潵浜嗘柊鐨勯壌鏉冧俊鎭細瀵瑰氨鐨勮繘琛岃鐩�
@@ -506,7 +460,7 @@
                                 callId = streamAuthorityInfo.getCallId();
                             }
                             StreamInfo streamInfoByAppAndStream = mediaService.getStreamInfoByAppAndStream(mediaInfo,
-                                    param.getApp(), param.getStream(), track, callId);
+                                    param.getApp(), param.getStream(), MediaInfo.getInstance(param), callId);
                             param.setStreamInfo(new StreamContent(streamInfoByAppAndStream));
                             redisCatchStorage.addStream(mediaInfo, type, param.getApp(), param.getStream(), param);
                             if (param.getOriginType() == OriginType.RTSP_PUSH.ordinal()
@@ -714,7 +668,7 @@
 
         DeferredResult<HookResult> defaultResult = new DeferredResult<>();
 
-        MediaServerItem mediaInfo = mediaServerService.getOne(param.getMediaServerId());
+        MediaServer mediaInfo = mediaServerService.getOne(param.getMediaServerId());
         if (!userSetting.isAutoApplyPlay() || mediaInfo == null) {
             defaultResult.setResult(new HookResult(ErrorCode.ERROR404.getCode(), ErrorCode.ERROR404.getMsg()));
             return defaultResult;
@@ -837,7 +791,7 @@
         logger.info("[ZLM HOOK] zlm 鍚姩 " + zlmServerConfig.getGeneralMediaServerId());
         taskExecutor.execute(() -> {
             List<ZlmHttpHookSubscribe.Event> subscribes = this.subscribe.getSubscribes(HookType.on_server_started);
-            if (subscribes != null && subscribes.size() > 0) {
+            if (subscribes != null && !subscribes.isEmpty()) {
                 for (ZlmHttpHookSubscribe.Event subscribe : subscribes) {
                     subscribe.response(null, zlmServerConfig);
                 }
@@ -845,7 +799,7 @@
         });
         try {
             HookZlmServerStartEvent event = new HookZlmServerStartEvent(this);
-            MediaServerItem mediaServerItem = mediaServerService.getOne(zlmServerConfig.getMediaServerId());
+            MediaServer mediaServerItem = mediaServerService.getOne(zlmServerConfig.getMediaServerId());
             if (mediaServerItem != null) {
                 event.setMediaServerItem(mediaServerItem);
                 applicationEventPublisher.publishEvent(event);
@@ -895,12 +849,11 @@
      */
     @ResponseBody
     @PostMapping(value = "/on_rtp_server_timeout", produces = "application/json;charset=UTF-8")
-    public HookResult onRtpServerTimeout(HttpServletRequest request, @RequestBody OnRtpServerTimeoutHookParam
+    public HookResult onRtpServerTimeout(@RequestBody OnRtpServerTimeoutHookParam
             param) {
         logger.info("[ZLM HOOK] rtpServer鏀舵祦瓒呮椂锛歿}->{}({})", param.getMediaServerId(), param.getStream_id(), param.getSsrc());
 
         taskExecutor.execute(() -> {
-            JSONObject json = (JSONObject) JSON.toJSON(param);
             List<ZlmHttpHookSubscribe.Event> subscribes = this.subscribe.getSubscribes(HookType.on_rtp_server_timeout);
             if (subscribes != null && !subscribes.isEmpty()) {
                 for (ZlmHttpHookSubscribe.Event subscribe : subscribes) {

--
Gitblit v1.8.0