Commit c551164c89f70e664b498c3a09e615928261e01a
1 parent
975ace05
合并主线
Showing
3 changed files
with
18 additions
and
43 deletions
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
| ... | ... | @@ -1026,9 +1026,7 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements |
| 1026 | 1026 | |
| 1027 | 1027 | SendRtpItem sendRtpItem = zlmrtpServerFactory.createSendRtpItem(mediaServerItem, addressStr, port, ssrc, requesterId, |
| 1028 | 1028 | device.getDeviceId(), broadcastCatch.getChannelId(), |
| 1029 | - mediaTransmissionTCP, false, ssrcFromCallback -> { | |
| 1030 | - return redisCatchStorage.querySendRTPServer(requesterId, channelId, null, callIdHeader.getCallId()) != null; | |
| 1031 | - }); | |
| 1029 | + mediaTransmissionTCP, false); | |
| 1032 | 1030 | |
| 1033 | 1031 | if (sendRtpItem == null) { |
| 1034 | 1032 | logger.warn("服务器端口资源不足"); | ... | ... |
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java
| ... | ... | @@ -236,11 +236,6 @@ public class ZLMRTPServerFactory { |
| 236 | 236 | * 调用zlm RESTFUL API —— startSendRtpPassive |
| 237 | 237 | */ |
| 238 | 238 | public JSONObject startSendRtpPassive(MediaServerItem mediaServerItem, Map<String, Object>param) { |
| 239 | - System.out.println("====================="); | |
| 240 | - for (String s : param.keySet()) { | |
| 241 | - System.out.println(s + ": " + param.get(s)); | |
| 242 | - } | |
| 243 | - System.out.println("=========END============"); | |
| 244 | 239 | return zlmresTfulUtils.startSendRtpPassive(mediaServerItem, param); |
| 245 | 240 | } |
| 246 | 241 | |
| ... | ... | @@ -334,18 +329,14 @@ public class ZLMRTPServerFactory { |
| 334 | 329 | // 如果是非严格模式,需要关闭端口占用 |
| 335 | 330 | JSONObject startSendRtpStreamResult = null; |
| 336 | 331 | if (sendRtpItem.getLocalPort() != 0) { |
| 337 | - HookSubscribeForRtpServerTimeout hookSubscribeForRtpServerTimeout = HookSubscribeFactory.on_rtp_server_timeout(sendRtpItem.getSsrc(), null, mediaInfo.getId()); | |
| 338 | - hookSubscribe.removeSubscribe(hookSubscribeForRtpServerTimeout); | |
| 339 | - if (releasePort(mediaInfo, sendRtpItem.getSsrc())) { | |
| 340 | - if (sendRtpItem.isTcpActive()) { | |
| 341 | - startSendRtpStreamResult = startSendRtpPassive(mediaInfo, param); | |
| 342 | - System.out.println(JSON.toJSON(param)); | |
| 343 | - }else { | |
| 344 | - param.put("is_udp", is_Udp); | |
| 345 | - param.put("dst_url", sendRtpItem.getIp()); | |
| 346 | - param.put("dst_port", sendRtpItem.getPort()); | |
| 347 | - startSendRtpStreamResult = startSendRtpStream(mediaInfo, param); | |
| 348 | - } | |
| 332 | + if (sendRtpItem.isTcpActive()) { | |
| 333 | + startSendRtpStreamResult = startSendRtpPassive(mediaInfo, param); | |
| 334 | + System.out.println(JSON.toJSON(param)); | |
| 335 | + }else { | |
| 336 | + param.put("is_udp", is_Udp); | |
| 337 | + param.put("dst_url", sendRtpItem.getIp()); | |
| 338 | + param.put("dst_port", sendRtpItem.getPort()); | |
| 339 | + startSendRtpStreamResult = startSendRtpStream(mediaInfo, param); | |
| 349 | 340 | } |
| 350 | 341 | }else { |
| 351 | 342 | if (sendRtpItem.isTcpActive()) { | ... | ... |
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
| ... | ... | @@ -16,14 +16,10 @@ import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; |
| 16 | 16 | import com.genersoft.iot.vmp.gb28181.session.AudioBroadcastManager; |
| 17 | 17 | import com.genersoft.iot.vmp.gb28181.session.SSRCFactory; |
| 18 | 18 | import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager; |
| 19 | -import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder; | |
| 20 | 19 | import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform; |
| 21 | 20 | import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander; |
| 22 | 21 | import com.genersoft.iot.vmp.gb28181.utils.SipUtils; |
| 23 | -import com.genersoft.iot.vmp.media.zlm.AssistRESTfulUtils; | |
| 24 | -import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils; | |
| 25 | -import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory; | |
| 26 | -import com.genersoft.iot.vmp.media.zlm.ZlmHttpHookSubscribe; | |
| 22 | +import com.genersoft.iot.vmp.media.zlm.*; | |
| 27 | 23 | import com.genersoft.iot.vmp.media.zlm.dto.HookSubscribeFactory; |
| 28 | 24 | import com.genersoft.iot.vmp.media.zlm.dto.HookSubscribeForStreamChange; |
| 29 | 25 | import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem; |
| ... | ... | @@ -94,7 +90,7 @@ public class PlayServiceImpl implements IPlayService { |
| 94 | 90 | private IInviteStreamService inviteStreamService; |
| 95 | 91 | |
| 96 | 92 | @Autowired |
| 97 | - private DeferredResultHolder resultHolder; | |
| 93 | + private SendRtpPortManager sendRtpPortManager; | |
| 98 | 94 | |
| 99 | 95 | @Autowired |
| 100 | 96 | private ZLMRESTfulUtils zlmresTfulUtils; |
| ... | ... | @@ -235,9 +231,7 @@ public class PlayServiceImpl implements IPlayService { |
| 235 | 231 | sendRtpItem.setReceiveStream(stream + "_talk"); |
| 236 | 232 | |
| 237 | 233 | String callId = SipUtils.getNewCallId(); |
| 238 | - int port = zlmrtpServerFactory.keepPort(mediaServerItem, playSsrc, 0, ssrcFromCallback ->{ | |
| 239 | - return redisCatchStorage.querySendRTPServer(device.getDeviceId(), channelId, null, callId) != null; | |
| 240 | - }); | |
| 234 | + int port = sendRtpPortManager.getNextPort(mediaServerItem.getId()); | |
| 241 | 235 | //端口获取失败的ssrcInfo 没有必要发送点播指令 |
| 242 | 236 | if (port <= 0) { |
| 243 | 237 | logger.info("[语音对讲] 端口分配异常,deviceId={},channelId={}", device.getDeviceId(), channelId); |
| ... | ... | @@ -265,9 +259,6 @@ public class PlayServiceImpl implements IPlayService { |
| 265 | 259 | } |
| 266 | 260 | }, userSetting.getPlayTimeout()); |
| 267 | 261 | |
| 268 | - | |
| 269 | - | |
| 270 | - zlmrtpServerFactory.releasePort(mediaServerItem, playSsrc); | |
| 271 | 262 | Map<String, Object> param = new HashMap<>(12); |
| 272 | 263 | param.put("vhost","__defaultVhost__"); |
| 273 | 264 | param.put("app", sendRtpItem.getApp()); |
| ... | ... | @@ -1467,18 +1458,13 @@ public class PlayServiceImpl implements IPlayService { |
| 1467 | 1458 | // 如果是严格模式,需要关闭端口占用 |
| 1468 | 1459 | JSONObject startSendRtpStreamResult = null; |
| 1469 | 1460 | if (sendRtpItem.getLocalPort() != 0) { |
| 1470 | - if (zlmrtpServerFactory.releasePort(mediaInfo, sendRtpItem.getSsrc())) { | |
| 1471 | - if (sendRtpItem.isTcpActive()) { | |
| 1472 | - startSendRtpStreamResult = zlmrtpServerFactory.startSendRtpPassive(mediaInfo, param); | |
| 1473 | - } else { | |
| 1474 | - param.put("dst_url", sendRtpItem.getIp()); | |
| 1475 | - param.put("dst_port", sendRtpItem.getPort()); | |
| 1476 | - startSendRtpStreamResult = zlmrtpServerFactory.startSendRtpStream(mediaInfo, param); | |
| 1477 | - } | |
| 1478 | - }else { | |
| 1479 | - // TODO 释放失败的处理 | |
| 1461 | + if (sendRtpItem.isTcpActive()) { | |
| 1462 | + startSendRtpStreamResult = zlmrtpServerFactory.startSendRtpPassive(mediaInfo, param); | |
| 1463 | + } else { | |
| 1464 | + param.put("dst_url", sendRtpItem.getIp()); | |
| 1465 | + param.put("dst_port", sendRtpItem.getPort()); | |
| 1466 | + startSendRtpStreamResult = zlmrtpServerFactory.startSendRtpStream(mediaInfo, param); | |
| 1480 | 1467 | } |
| 1481 | - | |
| 1482 | 1468 | } else { |
| 1483 | 1469 | if (sendRtpItem.isTcpActive()) { |
| 1484 | 1470 | startSendRtpStreamResult = zlmrtpServerFactory.startSendRtpPassive(mediaInfo, param); | ... | ... |