From 93c632f2082ba00feed0cba441dd73e8cdb26556 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期五, 10 二月 2023 16:47:04 +0800
Subject: [PATCH] 合并主线
---
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java | 66 +++++++++++++++-----------------
1 files changed, 31 insertions(+), 35 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
index dae42c7..a5f815a 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
@@ -274,6 +274,9 @@
logger.info("[ZLM HOOK] 娴佹敞閿�, {}->{}->{}/{}", param.getMediaServerId(), param.getSchema(), param.getApp(), param.getStream());
}
+ JSONObject ret = new JSONObject();
+ ret.put("code", 0);
+ ret.put("msg", "success");
JSONObject json = (JSONObject) JSON.toJSON(param);
taskExecutor.execute(() -> {
@@ -330,7 +333,7 @@
}
}else if ("broadcast".equals(param.getApp())){
// 璇煶瀵硅鎺ㄦ祦 stream闇�瑕佹弧瓒虫牸寮廳eviceId_channelId
- if (param.getStream().indexOf("_") > 0) {
+ if (param.isRegist() && param.getStream().indexOf("_") > 0) {
String[] streamArray = param.getStream().split("_");
if (streamArray.length == 2) {
String deviceId = streamArray[0];
@@ -339,15 +342,28 @@
if (device != null) {
if (param.isRegist()) {
if (audioBroadcastManager.exit(deviceId, channelId)) {
- playService.stopAudioBroadcast(deviceId, channelId);
- }
- // 寮�鍚闊冲璁查�氶亾
- try {
- playService.audioBroadcastCmd(device, channelId, 60, (msg)->{
- logger.info("[璇煶瀵硅] 閫氶亾寤虹珛鎴愬姛, device: {}, channel: {}", deviceId, channelId);
- });
- } catch (InvalidArgumentException | ParseException | SipException e) {
- logger.error("[鍛戒护鍙戦�佸け璐 璇煶瀵硅: {}", e.getMessage());
+ // 鐩存帴鎺ㄦ祦
+ SendRtpItem sendRtpItem = redisCatchStorage.querySendRTPServer(null, null, param.getStream(), null);
+ if (sendRtpItem == null) {
+ // TODO 鍙兘鏁版嵁閿欒锛岄噸鏂板紑鍚闊抽�氶亾
+ }else {
+ JSONObject jsonObject = zlmrtpServerFactory.startSendRtp(mediaInfo, sendRtpItem);
+ if (jsonObject != null && jsonObject.getInteger("code") == 0 ) {
+ logger.info("[璇煶鍠婅瘽] 鑷姩鎺ㄦ祦鎴愬姛, device: {}, channel: {}", device.getDeviceId(), channelId);
+ }else {
+ logger.info("[璇煶鍠婅瘽] 鎺ㄦ祦澶辫触, 缁撴灉锛� {}", jsonObject);
+ }
+
+ }
+ }else {
+ // 寮�鍚闊冲枈璇濋�氶亾
+ try {
+ playService.audioBroadcastCmd(device, channelId, mediaInfo, param.getApp(), param.getStream(),60, false, (msg)->{
+ logger.info("[璇煶鍠婅瘽] 閫氶亾寤虹珛鎴愬姛, device: {}, channel: {}", deviceId, channelId);
+ });
+ } catch (InvalidArgumentException | ParseException | SipException e) {
+ logger.error("[鍛戒护鍙戦�佸け璐 璇煶鍠婅瘽: {}", e.getMessage());
+ }
}
}else {
// 娴佹敞閿�
@@ -356,10 +372,12 @@
} else{
logger.info("[璇煶瀵硅] 鏈壘鍒拌澶囷細{}", deviceId);
}
+ }else {
+ logger.info("[璇煶鍠婅瘽] 鎺ㄦ祦鏍煎紡鏈夎, 鏍煎紡涓猴細 broadcast/璁惧缂栧彿_閫氶亾缂栧彿 ");
}
}
}else if ("talk".equals(param.getApp())){
- // 璇煶瀵硅鎺ㄦ祦 stream闇�瑕佹弧瓒虫牸寮廳eviceId_channelId
+ // 璇煶鍠婅瘽鎺ㄦ祦 stream闇�瑕佹弧瓒虫牸寮廳eviceId_channelId
if (param.isRegist() && param.getStream().indexOf("_") > 0) {
String[] streamArray = param.getStream().split("_");
if (streamArray.length == 2) {
@@ -375,33 +393,11 @@
if (sendRtpItem == null) {
// TODO 鍙兘鏁版嵁閿欒锛岄噸鏂板紑鍚闊抽�氶亾
}else {
- MediaServerItem mediaInfo = mediaServerService.getOne(sendRtpItem.getMediaServerId());
logger.info("rtp/{}寮�濮嬪悜涓婄骇鎺ㄦ祦, 鐩爣={}:{}锛孲SRC={}", sendRtpItem.getStreamId(), sendRtpItem.getIp(), sendRtpItem.getPort(), sendRtpItem.getSsrc());
- Map<String, Object> sendParam = new HashMap<>(12);
- sendParam.put("vhost","__defaultVhost__");
- sendParam.put("app",sendRtpItem.getApp());
- sendParam.put("stream",sendRtpItem.getStreamId());
- sendParam.put("ssrc", sendRtpItem.getSsrc());
- sendParam.put("src_port", sendRtpItem.getLocalPort());
- sendParam.put("pt", sendRtpItem.getPt());
- sendParam.put("use_ps", sendRtpItem.isUsePs() ? "1" : "0");
- sendParam.put("only_audio", sendRtpItem.isOnlyAudio() ? "1" : "0");
-
- JSONObject jsonObject;
- if (sendRtpItem.isTcpActive()) {
- jsonObject = zlmrtpServerFactory.startSendRtpPassive(mediaInfo, sendParam);
- } else {
- sendParam.put("is_udp", sendRtpItem.isTcp() ? "0" : "1");
- sendParam.put("dst_url", sendRtpItem.getIp());
- sendParam.put("dst_port", sendRtpItem.getPort());
- jsonObject = zlmrtpServerFactory.startSendRtpStream(mediaInfo, sendParam);
- }
- if (jsonObject != null && jsonObject.getInteger("code") == 0) {
- logger.info("[璇煶瀵硅] 鑷姩鎺ㄦ祦鎴愬姛, device: {}, channel: {}", deviceId, channelId);
- }
+ zlmrtpServerFactory.startSendRtp(mediaInfo, sendRtpItem);
}
}else {
- // 寮�鍚闊冲璁查�氶亾
+ // 寮�鍚闊冲枈璇濋�氶亾
MediaServerItem mediaServerItem = mediaServerService.getOne(param.getMediaServerId());
playService.talk(mediaServerItem, device, channelId, (mediaServer, jsonObject)->{
System.out.println("寮�濮嬫帹娴�");
--
Gitblit v1.8.0