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 (zlmrtpServerFactory.isRtpReady(streamInfo.getStreamId())) {
rtpPushed = true;
System.out.println("已获取设备推流,开始向上级推流");
zlmrtpServerFactory.startSendRtpStream(param);
} else {
System.out.println("等待设备推流.......");
Thread.sleep(2000);
continue;
}
} else {
rtpPushed = true;
System.out.println("设备推流超时,终止向上级推流");
}
} catch (InterruptedException e) {
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) {
Boolean result = false;
JSONObject jsonObject = zlmresTfulUtils.startSendRtp(param);
System.out.println(jsonObject);
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状态
if (jsonObject == null) {
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;
}
/**
*
* 查询待转推的流是否就绪
*/
public Boolean isRtpReady(String streamId) {
JSONObject mediaInfo = zlmresTfulUtils.getMediaInfo("rtp", "rtmp", streamId);
if (mediaInfo.getInteger("code") == 0 && mediaInfo.getBoolean("online")) {
logger.info("设备RTP推流成功");
return true;
} else {
logger.info("设备RTP推流未完成");
return false;
}
return (mediaInfo.getInteger("code") == 0 && mediaInfo.getBoolean("online"));
}
}

Loading…
Cancel
Save