From 1dcdbc3742835ccab28a8983ae002d2bbdba87eb Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期三, 02 三月 2022 12:52:37 +0800 Subject: [PATCH] Merge branch 'wvp-28181-2.0' into wvp-pro-record --- src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java | 45 +++++++++++++++++++++++++++++++++++---------- 1 files changed, 35 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java index 0ddd904..76bab9c 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java @@ -8,6 +8,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; import java.util.HashMap; import java.util.Map; @@ -44,8 +45,15 @@ Map<String, Object> param = new HashMap<>(); int result = -1; - int newPort = getPortFromportRange(mediaServerItem); - param.put("port", newPort); + /** + * 涓嶈缃帹娴佺鍙g鍒欎娇鐢ㄩ殢鏈虹鍙� + */ + if (StringUtils.isEmpty(mediaServerItem.getSendRtpPortRange())){ + param.put("port", 0); + }else { + int newPort = getPortFromportRange(mediaServerItem); + param.put("port", newPort); + } param.put("enable_tcp", 1); param.put("stream_id", streamId); JSONObject openRtpServerResultJson = zlmresTfulUtils.openRtpServer(mediaServerItem, param); @@ -53,24 +61,24 @@ if (openRtpServerResultJson != null) { switch (openRtpServerResultJson.getInteger("code")){ case 0: - result= newPort; + result= openRtpServerResultJson.getInteger("port"); break; - case -300: // id宸茬粡瀛樺湪, 鍙兘宸茬粡鍦ㄥ叾浠栫鍙f帹娴�, TODO 涔熷彲鑳芥槸璁惧涓嶇瓑ack灏辩洿鎺ユ帹娴佷簡, 闇�瑕佹煡璇笌璁剧疆鐨勬帹娴乮p绔彛鏄惁涓�鑷� + case -300: // id宸茬粡瀛樺湪, 鍙兘宸茬粡鍦ㄥ叾浠栫鍙f帹娴� Map<String, Object> closeRtpServerParam = new HashMap<>(); closeRtpServerParam.put("stream_id", streamId); zlmresTfulUtils.closeRtpServer(mediaServerItem, closeRtpServerParam); - result = newPort; + result = createRTPServer(mediaServerItem, streamId);; break; case -400: // 绔彛鍗犵敤 result= createRTPServer(mediaServerItem, streamId); break; default: - logger.error("鍒涘缓RTP Server 澶辫触 {}: " + openRtpServerResultJson.getString("msg"), newPort); + logger.error("鍒涘缓RTP Server 澶辫触 {}: " + openRtpServerResultJson.getString("msg"), param.get("port")); break; } }else { // 妫�鏌LM鐘舵�� - logger.error("鍒涘缓RTP Server 澶辫触 {}: 璇锋鏌LM鏈嶅姟", newPort); + logger.error("鍒涘缓RTP Server 澶辫触 {}: 璇锋鏌LM鏈嶅姟", param.get("port")); } return result; } @@ -98,9 +106,14 @@ private int getPortFromportRange(MediaServerItem mediaServerItem) { int currentPort = mediaServerItem.getCurrentPort(); if (currentPort == 0) { - String[] portRangeStrArray = mediaServerItem.getRtpPortRange().split(","); - portRangeArray[0] = Integer.parseInt(portRangeStrArray[0]); - portRangeArray[1] = Integer.parseInt(portRangeStrArray[1]); + String[] portRangeStrArray = mediaServerItem.getSendRtpPortRange().split(","); + if (portRangeStrArray.length != 2) { + portRangeArray[0] = 30000; + portRangeArray[1] = 30500; + }else { + portRangeArray[0] = Integer.parseInt(portRangeStrArray[0]); + portRangeArray[1] = Integer.parseInt(portRangeStrArray[1]); + } } if (currentPort == 0 || currentPort++ > portRangeArray[1]) { @@ -229,6 +242,18 @@ */ public int totalReaderCount(MediaServerItem mediaServerItem, String app, String streamId) { JSONObject mediaInfo = zlmresTfulUtils.getMediaInfo(mediaServerItem, app, "rtmp", streamId); + Integer code = mediaInfo.getInteger("code"); + if (mediaInfo == null) { + return 0; + } + if ( code < 0) { + logger.warn("鏌ヨ娴�({}/{})鏄惁鏈夊叾瀹冭鐪嬭�呮椂寰楀埌锛� {}", app, streamId, mediaInfo.getString("msg")); + return -1; + } + if ( code == 0 && ! mediaInfo.getBoolean("online")) { + logger.warn("鏌ヨ娴�({}/{})鏄惁鏈夊叾瀹冭鐪嬭�呮椂寰楀埌锛� {}", app, streamId, mediaInfo.getString("msg")); + return -1; + } return mediaInfo.getInteger("totalReaderCount"); } -- Gitblit v1.8.0