实现级联点播RTP推送

This commit is contained in:
lawrencehj
2021-03-09 20:05:37 +08:00
parent b7857027d5
commit df34954c9e
9 changed files with 207 additions and 70 deletions

View File

@@ -119,4 +119,8 @@ public class ZLMRESTfulUtils {
public JSONObject closeRtpServer(Map<String, Object> param) {
return sendPost("closeRtpServer",param);
}
public JSONObject startSendRtp(Map<String, Object> param) {
return sendPost("startSendRtp",param);
}
}

View File

@@ -105,7 +105,7 @@ public class ZLMRTPServerFactory {
* @param tcp 是否为tcp
* @return SendRtpItem
*/
public SendRtpItem createSendRtpItem(String ip, int port, String ssrc, String platformId, String channelId, boolean tcp){
public SendRtpItem createSendRtpItem(String ip, int port, String ssrc, String platformId, String deviceId, String channelId, boolean tcp){
String playSsrc = SsrcUtil.getPlaySsrc();
int localPort = createRTPServer(SsrcUtil.getPlaySsrc());
if (localPort != -1) {
@@ -119,9 +119,54 @@ public class ZLMRTPServerFactory {
sendRtpItem.setPort(port);
sendRtpItem.setSsrc(ssrc);
sendRtpItem.setPlatformId(platformId);
sendRtpItem.setDeviceId(deviceId);
sendRtpItem.setChannelId(channelId);
sendRtpItem.setTcp(tcp);
sendRtpItem.setLocalPort(localPort);
return sendRtpItem;
}
/**
*
*/
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状态
logger.error("RTP推流失败: 请检查ZLM服务");
}
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;
}
}
}