Commit db8971302a848875e50acfb7c2a5403461567efc

Authored by 648540858
1 parent d5f26faf

完善支持语音级联

src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java
@@ -92,7 +92,7 @@ public class ZLMRTPServerFactory { @@ -92,7 +92,7 @@ public class ZLMRTPServerFactory {
92 return result; 92 return result;
93 } 93 }
94 94
95 - public int createRTPServer(MediaServerItem mediaServerItem, String streamId, int ssrc, Integer port) { 95 + public int createRTPServer(MediaServerItem mediaServerItem, String streamId, int ssrc, Integer port, Boolean onlyAuto) {
96 int result = -1; 96 int result = -1;
97 // 查询此rtp server 是否已经存在 97 // 查询此rtp server 是否已经存在
98 JSONObject rtpInfo = zlmresTfulUtils.getRtpInfo(mediaServerItem, streamId); 98 JSONObject rtpInfo = zlmresTfulUtils.getRtpInfo(mediaServerItem, streamId);
@@ -108,7 +108,7 @@ public class ZLMRTPServerFactory { @@ -108,7 +108,7 @@ public class ZLMRTPServerFactory {
108 JSONObject jsonObject = zlmresTfulUtils.closeRtpServer(mediaServerItem, param); 108 JSONObject jsonObject = zlmresTfulUtils.closeRtpServer(mediaServerItem, param);
109 if (jsonObject != null ) { 109 if (jsonObject != null ) {
110 if (jsonObject.getInteger("code") == 0) { 110 if (jsonObject.getInteger("code") == 0) {
111 - return createRTPServer(mediaServerItem, streamId, ssrc, port); 111 + return createRTPServer(mediaServerItem, streamId, ssrc, port, onlyAuto);
112 }else { 112 }else {
113 logger.warn("[开启rtpServer], 重启RtpServer错误"); 113 logger.warn("[开启rtpServer], 重启RtpServer错误");
114 } 114 }
@@ -131,6 +131,9 @@ public class ZLMRTPServerFactory { @@ -131,6 +131,9 @@ public class ZLMRTPServerFactory {
131 param.put("port", port); 131 param.put("port", port);
132 } 132 }
133 param.put("ssrc", ssrc); 133 param.put("ssrc", ssrc);
  134 + if (onlyAuto != null) {
  135 + param.put("only_audio", onlyAuto?"1":"0");
  136 + }
134 JSONObject openRtpServerResultJson = zlmresTfulUtils.openRtpServer(mediaServerItem, param); 137 JSONObject openRtpServerResultJson = zlmresTfulUtils.openRtpServer(mediaServerItem, param);
135 logger.info(JSONObject.toJSONString(openRtpServerResultJson)); 138 logger.info(JSONObject.toJSONString(openRtpServerResultJson));
136 if (openRtpServerResultJson != null) { 139 if (openRtpServerResultJson != null) {
src/main/java/com/genersoft/iot/vmp/service/IMediaServerService.java
@@ -47,7 +47,7 @@ public interface IMediaServerService { @@ -47,7 +47,7 @@ public interface IMediaServerService {
47 47
48 SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, String ssrc, boolean ssrcCheck, boolean isPlayback); 48 SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, String ssrc, boolean ssrcCheck, boolean isPlayback);
49 49
50 - SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, String ssrc, boolean ssrcCheck, boolean isPlayback, Integer port); 50 + SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, String ssrc, boolean ssrcCheck, boolean isPlayback, Integer port, Boolean onlyAuto);
51 51
52 void closeRTPServer(MediaServerItem mediaServerItem, String streamId); 52 void closeRTPServer(MediaServerItem mediaServerItem, String streamId);
53 53
src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java
1 package com.genersoft.iot.vmp.service.impl; 1 package com.genersoft.iot.vmp.service.impl;
2 2
3 -import java.time.LocalDateTime;  
4 -import java.util.ArrayList;  
5 -import java.util.Collections;  
6 -import java.util.HashMap;  
7 -import java.util.List;  
8 -import java.util.Map;  
9 -import java.util.Set;  
10 -  
11 -import com.genersoft.iot.vmp.media.zlm.ZLMRunner;  
12 -import com.genersoft.iot.vmp.service.IStreamProxyService;  
13 -import com.genersoft.iot.vmp.storager.IVideoManagerStorage;  
14 import com.alibaba.fastjson2.JSON; 3 import com.alibaba.fastjson2.JSON;
15 import com.alibaba.fastjson2.JSONArray; 4 import com.alibaba.fastjson2.JSONArray;
16 import com.alibaba.fastjson2.JSONObject; 5 import com.alibaba.fastjson2.JSONObject;
@@ -39,8 +28,6 @@ import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; @@ -39,8 +28,6 @@ import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
39 import okhttp3.OkHttpClient; 28 import okhttp3.OkHttpClient;
40 import okhttp3.Request; 29 import okhttp3.Request;
41 import okhttp3.Response; 30 import okhttp3.Response;
42 -import java.time.LocalDateTime;  
43 -import java.util.*;  
44 import org.slf4j.Logger; 31 import org.slf4j.Logger;
45 import org.slf4j.LoggerFactory; 32 import org.slf4j.LoggerFactory;
46 import org.springframework.beans.factory.annotation.Autowired; 33 import org.springframework.beans.factory.annotation.Autowired;
@@ -134,7 +121,8 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -134,7 +121,8 @@ public class MediaServerServiceImpl implements IMediaServerService {
134 } 121 }
135 122
136 @Override 123 @Override
137 - public SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, String presetSsrc, boolean ssrcCheck, boolean isPlayback, Integer port) { 124 + public SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, String presetSsrc, boolean ssrcCheck,
  125 + boolean isPlayback, Integer port, Boolean onlyAuto) {
138 if (mediaServerItem == null || mediaServerItem.getId() == null) { 126 if (mediaServerItem == null || mediaServerItem.getId() == null) {
139 logger.info("[openRTPServer] 失败, mediaServerItem == null || mediaServerItem.getId() == null"); 127 logger.info("[openRTPServer] 失败, mediaServerItem == null || mediaServerItem.getId() == null");
140 return null; 128 return null;
@@ -163,7 +151,7 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -163,7 +151,7 @@ public class MediaServerServiceImpl implements IMediaServerService {
163 } 151 }
164 int rtpServerPort; 152 int rtpServerPort;
165 if (mediaServerItem.isRtpEnable()) { 153 if (mediaServerItem.isRtpEnable()) {
166 - rtpServerPort = zlmrtpServerFactory.createRTPServer(mediaServerItem, streamId, ssrcCheck?Integer.parseInt(ssrc):0, port); 154 + rtpServerPort = zlmrtpServerFactory.createRTPServer(mediaServerItem, streamId, ssrcCheck?Integer.parseInt(ssrc):0, port, onlyAuto);
167 } else { 155 } else {
168 rtpServerPort = mediaServerItem.getRtpProxyPort(); 156 rtpServerPort = mediaServerItem.getRtpProxyPort();
169 } 157 }
@@ -174,7 +162,7 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -174,7 +162,7 @@ public class MediaServerServiceImpl implements IMediaServerService {
174 162
175 @Override 163 @Override
176 public SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, String ssrc, boolean ssrcCheck, boolean isPlayback) { 164 public SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, String ssrc, boolean ssrcCheck, boolean isPlayback) {
177 - return openRTPServer(mediaServerItem, streamId, ssrc, ssrcCheck, isPlayback, null); 165 + return openRTPServer(mediaServerItem, streamId, ssrc, ssrcCheck, isPlayback, null, null);
178 } 166 }
179 167
180 @Override 168 @Override
src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java
@@ -367,7 +367,7 @@ public class PlatformServiceImpl implements IPlatformService { @@ -367,7 +367,7 @@ public class PlatformServiceImpl implements IPlatformService {
367 } 367 }
368 // 默认不进行SSRC校验, TODO 后续可改为配置 368 // 默认不进行SSRC校验, TODO 后续可改为配置
369 boolean ssrcCheck = false; 369 boolean ssrcCheck = false;
370 - SSRCInfo ssrcInfo = mediaServerService.openRTPServer(mediaServerItem, streamId, ssrcCheck, false); 370 + SSRCInfo ssrcInfo = mediaServerService.openRTPServer(mediaServerItem, streamId, null, ssrcCheck, false, null, true);
371 if (ssrcInfo == null || ssrcInfo.getPort() < 0) { 371 if (ssrcInfo == null || ssrcInfo.getPort() < 0) {
372 logger.info("[国标级联] 发起语音喊话 开启端口监听失败, platform: {}, channel: {}", platform.getServerGBId(), channelId); 372 logger.info("[国标级联] 发起语音喊话 开启端口监听失败, platform: {}, channel: {}", platform.getServerGBId(), channelId);
373 errorEvent.response(new SipSubscribe.EventResult(-1, "端口监听失败")); 373 errorEvent.response(new SipSubscribe.EventResult(-1, "端口监听失败"));
@@ -449,7 +449,8 @@ public class PlatformServiceImpl implements IPlatformService { @@ -449,7 +449,8 @@ public class PlatformServiceImpl implements IPlatformService {
449 // 关闭rtp server 449 // 关闭rtp server
450 mediaServerService.closeRTPServer(mediaServerItem, ssrcInfo.getStream()); 450 mediaServerService.closeRTPServer(mediaServerItem, ssrcInfo.getStream());
451 // 重新开启ssrc server 451 // 重新开启ssrc server
452 - mediaServerService.openRTPServer(mediaServerItem, ssrcInfo.getStream(), ssrcInResponse, false, false, ssrcInfo.getPort()); 452 + mediaServerService.openRTPServer(mediaServerItem, ssrcInfo.getStream(), ssrcInResponse, false, false, ssrcInfo.getPort(), true);
  453 +
453 454
454 } 455 }
455 } 456 }
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
@@ -535,7 +535,7 @@ public class PlayServiceImpl implements IPlayService { @@ -535,7 +535,7 @@ public class PlayServiceImpl implements IPlayService {
535 // 关闭rtp server 535 // 关闭rtp server
536 mediaServerService.closeRTPServer(mediaServerItem, ssrcInfo.getStream()); 536 mediaServerService.closeRTPServer(mediaServerItem, ssrcInfo.getStream());
537 // 重新开启ssrc server 537 // 重新开启ssrc server
538 - mediaServerService.openRTPServer(mediaServerItem, ssrcInfo.getStream(), ssrcInResponse, device.isSsrcCheck(), false, ssrcInfo.getPort()); 538 + mediaServerService.openRTPServer(mediaServerItem, ssrcInfo.getStream(), ssrcInResponse, device.isSsrcCheck(), false, ssrcInfo.getPort(), false);
539 539
540 } 540 }
541 } 541 }
@@ -776,7 +776,7 @@ public class PlayServiceImpl implements IPlayService { @@ -776,7 +776,7 @@ public class PlayServiceImpl implements IPlayService {
776 // 关闭rtp server 776 // 关闭rtp server
777 mediaServerService.closeRTPServer(mediaServerItem, ssrcInfo.getStream()); 777 mediaServerService.closeRTPServer(mediaServerItem, ssrcInfo.getStream());
778 // 重新开启ssrc server 778 // 重新开启ssrc server
779 - mediaServerService.openRTPServer(mediaServerItem, ssrcInfo.getStream(), ssrcInResponse, device.isSsrcCheck(), true, ssrcInfo.getPort()); 779 + mediaServerService.openRTPServer(mediaServerItem, ssrcInfo.getStream(), ssrcInResponse, device.isSsrcCheck(), true, ssrcInfo.getPort(), false);
780 } 780 }
781 } 781 }
782 } 782 }
src/main/resources/logback-spring-local.xml
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 <springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/> 4 <springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/>
5 <property name="LOG_HOME" value="logs" /> 5 <property name="LOG_HOME" value="logs" />
6 6
7 - <substitutionProperty name="log.pattern" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(---){faint} %clr(%-80.80logger{79}){cyan} %clr(:){faint} %m%n%wEx"/> 7 + <substitutionProperty name="log.pattern" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(---){faint} %clr(%-1.30logger{0}){cyan} %clr(:){faint} %m%n%wEx"/>
8 8
9 <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/> 9 <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
10 <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/> 10 <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>