Commit 4362a5b499692ff31ae02744428696a5894f2439

Authored by 648540858
1 parent 26bdf2e7

主线合并对讲broadcast级联模式

src/main/java/com/genersoft/iot/vmp/conf/redis/RedisConfig.java
... ... @@ -10,7 +10,6 @@ import org.springframework.context.annotation.Bean;
10 10 import org.springframework.context.annotation.Configuration;
11 11 import org.springframework.core.annotation.Order;
12 12 import org.springframework.data.redis.connection.RedisConnectionFactory;
13   -import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
14 13 import org.springframework.data.redis.core.RedisTemplate;
15 14 import org.springframework.data.redis.listener.PatternTopic;
16 15 import org.springframework.data.redis.listener.RedisMessageListenerContainer;
... ... @@ -50,8 +49,6 @@ public class RedisConfig extends CachingConfigurerSupport {
50 49  
51 50 @Bean
52 51 public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
53   - LettuceConnectionFactory lettuceConnectionFactory = (LettuceConnectionFactory) redisConnectionFactory;
54   - lettuceConnectionFactory.afterPropertiesSet();
55 52  
56 53 RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
57 54 // 使用fastJson序列化
... ... @@ -63,7 +60,7 @@ public class RedisConfig extends CachingConfigurerSupport {
63 60 // key的序列化采用StringRedisSerializer
64 61 redisTemplate.setKeySerializer(new StringRedisSerializer());
65 62 redisTemplate.setHashKeySerializer(new StringRedisSerializer());
66   - redisTemplate.setConnectionFactory(lettuceConnectionFactory);
  63 + redisTemplate.setConnectionFactory(redisConnectionFactory);
67 64 return redisTemplate;
68 65 }
69 66  
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/bean/AudioBroadcastCatch.java
... ... @@ -109,30 +109,6 @@ public class AudioBroadcastCatch {
109 109 return sipTransactionInfo;
110 110 }
111 111  
112   - public String getApp() {
113   - return app;
114   - }
115   -
116   - public void setApp(String app) {
117   - this.app = app;
118   - }
119   -
120   - public String getStream() {
121   - return stream;
122   - }
123   -
124   - public void setStream(String stream) {
125   - this.stream = stream;
126   - }
127   -
128   - public void setSipTransactionInfo(SipTransactionInfo sipTransactionInfo) {
129   - this.sipTransactionInfo = sipTransactionInfo;
130   - }
131   -
132   - public void setSipTransactionInfoByRequset(SIPResponse response) {
133   - this.sipTransactionInfo = new SipTransactionInfo(response, false);
134   - }
135   -
136 112 public MediaServerItem getMediaServerItem() {
137 113 return mediaServerItem;
138 114 }
... ... @@ -141,14 +117,6 @@ public class AudioBroadcastCatch {
141 117 this.mediaServerItem = mediaServerItem;
142 118 }
143 119  
144   - public AudioBroadcastEvent getEvent() {
145   - return event;
146   - }
147   -
148   - public void setEvent(AudioBroadcastEvent event) {
149   - this.event = event;
150   - }
151   -
152 120 public String getApp() {
153 121 return app;
154 122 }
... ... @@ -173,11 +141,19 @@ public class AudioBroadcastCatch {
173 141 isFromPlatform = fromPlatform;
174 142 }
175 143  
176   - public MediaServerItem getMediaServerItem() {
177   - return mediaServerItem;
  144 + public void setSipTransactionInfo(SipTransactionInfo sipTransactionInfo) {
  145 + this.sipTransactionInfo = sipTransactionInfo;
178 146 }
179 147  
180   - public void setMediaServerItem(MediaServerItem mediaServerItem) {
181   - this.mediaServerItem = mediaServerItem;
  148 + public AudioBroadcastEvent getEvent() {
  149 + return event;
  150 + }
  151 +
  152 + public void setEvent(AudioBroadcastEvent event) {
  153 + this.event = event;
  154 + }
  155 +
  156 + public void setSipTransactionInfoByRequset(SIPResponse sipResponse) {
  157 + this.sipTransactionInfo = new SipTransactionInfo(sipResponse);
182 158 }
183 159 }
... ...
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRTPServerFactory.java
... ... @@ -357,11 +357,11 @@ public class ZLMRTPServerFactory {
357 357  
358 358 public JSONObject startSendRtp(MediaServerItem mediaInfo, SendRtpItem sendRtpItem) {
359 359 String is_Udp = sendRtpItem.isTcp() ? "0" : "1";
360   - logger.info("rtp/{}开始向上级推流, 目标={}:{},SSRC={}", sendRtpItem.getStreamId(), sendRtpItem.getIp(), sendRtpItem.getPort(), sendRtpItem.getSsrc());
  360 + logger.info("rtp/{}开始向上级推流, 目标={}:{},SSRC={}", sendRtpItem.getStream(), sendRtpItem.getIp(), sendRtpItem.getPort(), sendRtpItem.getSsrc());
361 361 Map<String, Object> param = new HashMap<>(12);
362 362 param.put("vhost","__defaultVhost__");
363 363 param.put("app",sendRtpItem.getApp());
364   - param.put("stream",sendRtpItem.getStreamId());
  364 + param.put("stream",sendRtpItem.getStream());
365 365 param.put("ssrc", sendRtpItem.getSsrc());
366 366 param.put("src_port", sendRtpItem.getLocalPort());
367 367 param.put("pt", sendRtpItem.getPt());
... ...
src/main/java/com/genersoft/iot/vmp/service/IPlayService.java
... ... @@ -12,9 +12,7 @@ import com.genersoft.iot.vmp.service.bean.PlayBackCallback;
12 12 import com.genersoft.iot.vmp.service.bean.SSRCInfo;
13 13 import com.genersoft.iot.vmp.vmanager.bean.AudioBroadcastResult;
14 14 import com.genersoft.iot.vmp.vmanager.gb28181.play.bean.AudioBroadcastEvent;
15   -import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
16 15 import gov.nist.javax.sip.message.SIPResponse;
17   -import org.springframework.web.context.request.async.DeferredResult;
18 16  
19 17 import javax.sip.InvalidArgumentException;
20 18 import javax.sip.SipException;
... ... @@ -63,8 +61,6 @@ public interface IPlayService {
63 61  
64 62 void stopAudioBroadcast(String deviceId, String channelId);
65 63  
66   - void audioBroadcastCmd(Device device, String channelId, int timeout, MediaServerItem mediaServerItem, String sourceApp, String sourceStream, AudioBroadcastEvent event) throws InvalidArgumentException, ParseException, SipException;
67   -
68 64 void pauseRtp(String streamId) throws ServiceException, InvalidArgumentException, ParseException, SipException;
69 65  
70 66 void resumeRtp(String streamId) throws ServiceException, InvalidArgumentException, ParseException, SipException;
... ...
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
... ... @@ -999,7 +999,7 @@ public class PlayServiceImpl implements IPlayService {
999 999 if (streamReady) {
1000 1000 logger.warn("[语音对讲] 进行中: {}", channelId);
1001 1001 event.call("语音对讲进行中");
1002   - return;
  1002 + return false;
1003 1003 } else {
1004 1004 stopTalk(device, channelId);
1005 1005 }
... ... @@ -1026,7 +1026,7 @@ public class PlayServiceImpl implements IPlayService {
1026 1026 if (sendRtpItem != null && sendRtpItem.isOnlyAudio()) {
1027 1027 // 查询流是否存在,不存在则认为是异常状态
1028 1028 MediaServerItem mediaServerServiceOne = mediaServerService.getOne(sendRtpItem.getMediaServerId());
1029   - Boolean streamReady = zlmrtpServerFactory.isStreamReady(mediaServerServiceOne, sendRtpItem.getApp(), sendRtpItem.getStreamId());
  1029 + Boolean streamReady = zlmrtpServerFactory.isStreamReady(mediaServerServiceOne, sendRtpItem.getApp(), sendRtpItem.getStream());
1030 1030 if (streamReady) {
1031 1031 logger.warn("语音广播通道使用中: {}", channelId);
1032 1032 return true;
... ... @@ -1073,6 +1073,7 @@ public class PlayServiceImpl implements IPlayService {
1073 1073 }
1074 1074 }
1075 1075  
  1076 +
1076 1077 @Override
1077 1078 public void zlmServerOnline(String mediaServerId) {
1078 1079 // TODO 查找之前的点播,流如果不存在则给下级发送bye
... ...
web_src/src/components/dialog/devicePlayer.vue
... ... @@ -655,7 +655,7 @@ export default {
655 655 method: 'get',
656 656 url: '/api/play/broadcast/' + this.deviceId + '/' + this.channelId + "?timeout=30&broadcastMode=" + this.broadcastMode
657 657 }).then( (res)=> {
658   - if (res.data.code == 0) {
  658 + if (res.data.code === 0) {
659 659 let streamInfo = res.data.data.streamInfo;
660 660 if (document.location.protocol.includes("https")) {
661 661 this.startBroadcast(streamInfo.rtcs)
... ...