From bde0e13682ed75d2e8c0cb8a1fd6a96bb92f1dd8 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期一, 14 三月 2022 18:34:25 +0800 Subject: [PATCH] #394 --- src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java | 45 +++++++++++++++++++++++++++++++++------------ 1 files changed, 33 insertions(+), 12 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..5d1e8af 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,11 @@ Map<String, Object> param = new HashMap<>(); int result = -1; - int newPort = getPortFromportRange(mediaServerItem); - param.put("port", newPort); + // 涓嶈缃帹娴佺鍙g鍒欎娇鐢ㄩ殢鏈虹鍙� + if (!StringUtils.isEmpty(mediaServerItem.getSendRtpPortRange())){ + 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 +57,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 +102,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]) { @@ -192,7 +201,7 @@ /** * 璋冪敤zlm RESTful API 鈥斺�� startSendRtp */ - public Boolean startSendRtpStream(MediaServerItem mediaServerItem, Map<String, Object>param) { + public JSONObject startSendRtpStream(MediaServerItem mediaServerItem, Map<String, Object>param) { Boolean result = false; JSONObject jsonObject = zlmresTfulUtils.startSendRtp(mediaServerItem, param); if (jsonObject == null) { @@ -203,7 +212,7 @@ } else { logger.error("RTP鎺ㄦ祦澶辫触: " + jsonObject.getString("msg")); } - return result; + return jsonObject; } /** @@ -229,6 +238,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