From c226deacff2135751247d2e31d7e12c8b6db5314 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期二, 07 二月 2023 10:04:15 +0800
Subject: [PATCH] 修复语音对讲发送页
---
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java | 75 ++++++++++---------------------------
1 files changed, 20 insertions(+), 55 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 6f40ef8..ba95972 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
@@ -19,6 +19,7 @@
import com.genersoft.iot.vmp.service.*;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
+import com.genersoft.iot.vmp.vmanager.bean.StreamContent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -344,70 +345,34 @@
}
}else if ("broadcast".equals(param.getApp())){
// 璇煶瀵硅鎺ㄦ祦 stream闇�瑕佹弧瓒虫牸寮廳eviceId_channelId
- if (param.isRegist() && param.getStream().indexOf("_") > 0) {
+ if (param.getStream().indexOf("_") > 0) {
String[] streamArray = param.getStream().split("_");
if (streamArray.length == 2) {
String deviceId = streamArray[0];
String channelId = streamArray[1];
Device device = deviceService.getDevice(deviceId);
if (device != null) {
- DeviceChannel deviceChannel = storager.queryChannel(deviceId, channelId);
- if (deviceChannel != null) {
+ if (param.isRegist()) {
if (audioBroadcastManager.exit(deviceId, channelId)) {
- // 鐩存帴鎺ㄦ祦
- SendRtpItem sendRtpItem = redisCatchStorage.querySendRTPServer(null, null, param.getStream(), null);
- if (sendRtpItem == null) {
- // TODO 鍙兘鏁版嵁閿欒锛岄噸鏂板紑鍚闊抽�氶亾
- }else {
- String is_Udp = sendRtpItem.isTcp() ? "0" : "1";
- 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", is_Udp);
- 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);
- }else {
- logger.info("[璇煶瀵硅] 鎺ㄦ祦澶辫触, 缁撴灉锛� {}", jsonObject);
- }
-
- }
- }else {
- // 寮�鍚闊冲璁查�氶亾
- try {
- playService.audioBroadcastCmd(device, channelId, 60, (msg)->{
- logger.info("[璇煶瀵硅] 閫氶亾寤虹珛鎴愬姛, device: {}, channel: {}", deviceId, channelId);
- });
- } catch (InvalidArgumentException | ParseException | SipException e) {
- logger.error("[鍛戒护鍙戦�佸け璐 璇煶瀵硅: {}", e.getMessage());
- }
+ 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());
+ }
}else {
- logger.info("[璇煶瀵硅] 鏈壘鍒伴�氶亾锛歿}", channelId);
+ // 娴佹敞閿�
+ playService.stopAudioBroadcast(deviceId, channelId);
}
- }else{
+ } else{
logger.info("[璇煶瀵硅] 鏈壘鍒拌澶囷細{}", deviceId);
}
}
}
-
}else if ("talk".equals(param.getApp())){
// 璇煶瀵硅鎺ㄦ祦 stream闇�瑕佹弧瓒虫牸寮廳eviceId_channelId
if (param.isRegist() && param.getStream().indexOf("_") > 0) {
@@ -481,7 +446,7 @@
}
StreamInfo streamInfoByAppAndStream = mediaService.getStreamInfoByAppAndStream(mediaServerItem,
param.getApp(), param.getStream(), param.getTracks(), callId);
- param.setStreamInfo(streamInfoByAppAndStream);
+ param.setStreamInfo(new StreamContent(streamInfoByAppAndStream));
redisCatchStorage.addStream(mediaServerItem, type, param.getApp(), param.getStream(), param);
if (param.getOriginType() == OriginType.RTSP_PUSH.ordinal()
|| param.getOriginType() == OriginType.RTMP_PUSH.ordinal()
@@ -499,7 +464,7 @@
}
GbStream gbStream = storager.getGbStream(param.getApp(), param.getStream());
if (gbStream != null) {
-// eventPublisher.catalogEventPublishForStream(null, gbStream, CatalogEvent.OFF);
+// eventPublisher.catalogEventPublishForStream(null, gbStream, CatalogEvent.OFF);
}
zlmMediaListManager.removeMedia(param.getApp(), param.getStream());
}
@@ -570,7 +535,7 @@
logger.info("[ZLM HOOK]娴佹棤浜鸿鐪嬶細{]->{}->{}/{}" + param.getMediaServerId(), param.getSchema(), param.getApp(), param.getStream());
JSONObject ret = new JSONObject();
ret.put("code", 0);
- // 褰曞儚涓嬭浇
+ // 鍥芥爣绫诲瀷鐨勬祦
if ("rtp".equals(param.getApp())){
ret.put("close", userSetting.getStreamOnDemand());
// 鍥芥爣娴侊紝 鐐规挱/褰曞儚鍥炴斁/褰曞儚涓嬭浇
@@ -677,7 +642,7 @@
@ResponseBody
@PostMapping(value = "/on_stream_not_found", produces = "application/json;charset=UTF-8")
public JSONObject onStreamNotFound(@RequestBody OnStreamNotFoundHookParam param){
- logger.info("[ZLM HOOK] 娴佹湭鎵惧埌锛歿}->{}->{}/{}" + param.getMediaServerId(), param.getSchema(), param.getApp(), param.getStream());
+ logger.info("[ZLM HOOK] 娴佹湭鎵惧埌锛歿}->{}->{}/{}", param.getMediaServerId(), param.getSchema(), param.getApp(), param.getStream());
taskExecutor.execute(()->{
MediaServerItem mediaInfo = mediaServerService.getOne(param.getMediaServerId());
if (userSetting.isAutoApplyPlay() && mediaInfo != null) {
@@ -745,7 +710,7 @@
@PostMapping(value = "/on_send_rtp_stopped", produces = "application/json;charset=UTF-8")
public JSONObject onSendRtpStopped(HttpServletRequest request, @RequestBody OnSendRtpStoppedHookParam param){
- logger.info("[ZLM HOOK] 鍙戦�乺tp琚姩鍏抽棴锛歿}->{}/{}", param.getMediaServerId(), param.getApp(), param.getStream());
+ logger.info("[ZLM HOOK] rtp鍙戦�佸叧闂細{}->{}/{}", param.getMediaServerId(), param.getApp(), param.getStream());
JSONObject ret = new JSONObject();
ret.put("code", 0);
--
Gitblit v1.8.0