Browse Source

修正一处可能导致死循环的代码

pull/64/head
lawrencehj 4 years ago
parent
commit
f840c85666
  1. 5
      src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/AckRequestProcessor.java
  2. 36
      src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java

5
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/AckRequestProcessor.java

@ -68,11 +68,16 @@ public class AckRequestProcessor extends SIPRequestAbstractProcessor {
if (System.currentTimeMillis() - startTime < 30 * 1000) { if (System.currentTimeMillis() - startTime < 30 * 1000) {
if (zlmrtpServerFactory.isRtpReady(streamInfo.getStreamId())) { if (zlmrtpServerFactory.isRtpReady(streamInfo.getStreamId())) {
rtpPushed = true; rtpPushed = true;
System.out.println("已获取设备推流,开始向上级推流");
zlmrtpServerFactory.startSendRtpStream(param); zlmrtpServerFactory.startSendRtpStream(param);
} else { } else {
System.out.println("等待设备推流.......");
Thread.sleep(2000); Thread.sleep(2000);
continue; continue;
} }
} else {
rtpPushed = true;
System.out.println("设备推流超时,终止向上级推流");
} }
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();

36
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java

@ -127,46 +127,28 @@ public class ZLMRTPServerFactory {
} }
/** /**
* * 调用zlm RESTful API startSendRtp
*/ */
public Boolean startSendRtpStream(Map<String, Object>param) { public Boolean startSendRtpStream(Map<String, Object>param) {
Boolean result = false; Boolean result = false;
JSONObject jsonObject = zlmresTfulUtils.startSendRtp(param); JSONObject jsonObject = zlmresTfulUtils.startSendRtp(param);
System.out.println(jsonObject); System.out.println(jsonObject);
if (jsonObject != null) { if (jsonObject == null) {
switch (jsonObject.getInteger("code")){
case 0:
result= true;
logger.error("RTP推流请求成功,本地推流端口:" + jsonObject.getString("local_port"));
break;
// case -300: // id已经存在
// result = false;
// break;
// case -400: // 端口占用
// result= false;
// break;
default:
logger.error("RTP推流失败: " + jsonObject.getString("msg"));
break;
}
}else {
// 检查ZLM状态
logger.error("RTP推流失败: 请检查ZLM服务"); logger.error("RTP推流失败: 请检查ZLM服务");
} else if (jsonObject.getInteger("code") == 0) {
result= true;
logger.error("RTP推流请求成功,本地推流端口:" + jsonObject.getString("local_port"));
} else {
logger.error("RTP推流失败: " + jsonObject.getString("msg"));
} }
return result; return result;
} }
/** /**
* * 查询待转推的流是否就绪
*/ */
public Boolean isRtpReady(String streamId) { public Boolean isRtpReady(String streamId) {
JSONObject mediaInfo = zlmresTfulUtils.getMediaInfo("rtp", "rtmp", streamId); JSONObject mediaInfo = zlmresTfulUtils.getMediaInfo("rtp", "rtmp", streamId);
if (mediaInfo.getInteger("code") == 0 && mediaInfo.getBoolean("online")) { return (mediaInfo.getInteger("code") == 0 && mediaInfo.getBoolean("online"));
logger.info("设备RTP推流成功");
return true;
} else {
logger.info("设备RTP推流未完成");
return false;
}
} }
} }

Loading…
Cancel
Save