From 74ad4235f1738ea8ca954bd396a35ddf90a6e37b Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期六, 01 七月 2023 13:01:56 +0800
Subject: [PATCH] 修复tcp主动的推流
---
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java | 13 ++++++-------
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java | 18 +++++++++++-------
2 files changed, 17 insertions(+), 14 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 666083a..e39474f 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
@@ -302,7 +302,6 @@
param.put("port", localPort);
param.put("enable_tcp", 1);
param.put("stream_id", ssrc);
- param.put("re_use_port", 1);
JSONObject jsonObject = zlmresTfulUtils.openRtpServer(serverItem, param);
if (jsonObject.getInteger("code") == 0) {
localPort = jsonObject.getInteger("port");
@@ -313,7 +312,7 @@
(MediaServerItem mediaServerItem, HookParam hookParam)->{
logger.info("[涓婄骇鐐规挱] {}->鐩戝惉绔彛鍒版湡缁х画淇濇寔鐩戝惉: {}", ssrc, finalLocalPort);
OnRtpServerTimeoutHookParam rtpServerTimeoutHookParam = (OnRtpServerTimeoutHookParam) hookParam;
- if (ssrc.equals(rtpServerTimeoutHookParam.getSsrc())) {
+ if (ssrc.equals(rtpServerTimeoutHookParam.getStream_id())) {
if (keepPortCallback.keep(ssrc)) {
logger.info("[涓婄骇鐐规挱] {}->鐩戝惉绔彛鍒版湡缁х画淇濇寔鐩戝惉", ssrc);
keepPort(serverItem, ssrc, finalLocalPort, keepPortCallback);
@@ -337,11 +336,6 @@
public boolean releasePort(MediaServerItem serverItem, String ssrc) {
logger.info("[淇濇寔绔彛] {}->閲婃斁鐩戝惉绔彛", ssrc);
boolean closeRTPServerResult = closeRtpServer(serverItem, ssrc);
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- throw new RuntimeException(e);
- }
HookSubscribeForRtpServerTimeout hookSubscribeForRtpServerTimeout = HookSubscribeFactory.on_rtp_server_timeout(ssrc, null, serverItem.getId());
// 璁㈤槄 zlm鍚姩浜嬩欢, 鏂扮殑zlm涔熶細浠庤繖閲岃繘鍏ョ郴缁�
hookSubscribe.removeSubscribe(hookSubscribeForRtpServerTimeout);
@@ -359,6 +353,11 @@
* 璋冪敤zlm RESTFUL API 鈥斺�� startSendRtpPassive
*/
public JSONObject startSendRtpPassive(MediaServerItem mediaServerItem, Map<String, Object>param) {
+ System.out.println("=====================");
+ for (String s : param.keySet()) {
+ System.out.println(s + ": " + param.get(s));
+ }
+ System.out.println("=========END============");
return zlmresTfulUtils.startSendRtpPassive(mediaServerItem, param);
}
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
index 0d048ed..fffdb4d 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
@@ -1467,14 +1467,18 @@
// 濡傛灉鏄弗鏍兼ā寮忥紝闇�瑕佸叧闂鍙e崰鐢�
JSONObject startSendRtpStreamResult = null;
if (sendRtpItem.getLocalPort() != 0) {
- zlmrtpServerFactory.releasePort(mediaInfo, sendRtpItem.getSsrc());
- if (sendRtpItem.isTcpActive()) {
- startSendRtpStreamResult = zlmrtpServerFactory.startSendRtpPassive(mediaInfo, param);
- } else {
- param.put("dst_url", sendRtpItem.getIp());
- param.put("dst_port", sendRtpItem.getPort());
- startSendRtpStreamResult = zlmrtpServerFactory.startSendRtpStream(mediaInfo, param);
+ if (zlmrtpServerFactory.releasePort(mediaInfo, sendRtpItem.getSsrc())) {
+ if (sendRtpItem.isTcpActive()) {
+ startSendRtpStreamResult = zlmrtpServerFactory.startSendRtpPassive(mediaInfo, param);
+ } else {
+ param.put("dst_url", sendRtpItem.getIp());
+ param.put("dst_port", sendRtpItem.getPort());
+ startSendRtpStreamResult = zlmrtpServerFactory.startSendRtpStream(mediaInfo, param);
+ }
+ }else {
+ // TODO 閲婃斁澶辫触鐨勫鐞�
}
+
} else {
if (sendRtpItem.isTcpActive()) {
startSendRtpStreamResult = zlmrtpServerFactory.startSendRtpPassive(mediaInfo, param);
--
Gitblit v1.8.0