Commit 963a74d2809d92384f6666cfe10fc84423d89555

Authored by 648540858
2 parents a797cd1c 2bac0b3c

Merge remote-tracking branch 'origin/wvp-28181-2.0' into wvp-28181-2.0

src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
... ... @@ -10,7 +10,7 @@ public class VideoManagerConstants {
10 10  
11 11 public static final String WVP_SERVER_PREFIX = "VMP_SIGNALLING_SERVER_INFO_";
12 12  
13   - public static final String WVP_SERVER_STREAM_PUSH_PREFIX = "VMP_SIGNALLING_STREAM_PUSH_";
  13 + public static final String WVP_SERVER_STREAM_PUSH_PREFIX = "VMP_SIGNALLING_STREAM_";
14 14  
15 15 public static final String MEDIA_SERVER_PREFIX = "VMP_MEDIA_SERVER_";
16 16  
... ...
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
... ... @@ -11,6 +11,7 @@ import com.genersoft.iot.vmp.conf.UserSetup;
11 11 import com.genersoft.iot.vmp.gb28181.bean.Device;
12 12 import com.genersoft.iot.vmp.media.zlm.dto.MediaItem;
13 13 import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
  14 +import com.genersoft.iot.vmp.media.zlm.dto.OriginType;
14 15 import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
15 16 import com.genersoft.iot.vmp.service.IMediaServerService;
16 17 import com.genersoft.iot.vmp.service.IMediaService;
... ... @@ -315,24 +316,23 @@ public class ZLMHttpHookListener {
315 316 }else {
316 317 if (!"rtp".equals(app)){
317 318  
318   - boolean pushChange = false;
319   -
320 319 MediaServerItem mediaServerItem = mediaServerService.getOne(mediaServerId);
321 320 if (regist) {
322   - if ((item.getOriginType() == 1 || item.getOriginType() == 2 || item.getOriginType() == 8)) {
323   - pushChange = true;
  321 + StreamInfo streamInfo = mediaService.getStreamInfoByAppAndStream(mediaServerItem, app, streamId, tracks);
  322 + redisCatchStorage.addStream(mediaServerItem, OriginType.values()[item.getOriginType()].getType(), app, streamId, streamInfo);
  323 + if (item.getOriginType() == OriginType.RTSP_PUSH.ordinal()
  324 + || item.getOriginType() == OriginType.RTMP_PUSH.ordinal()
  325 + || item.getOriginType() == OriginType.RTC_PUSH.ordinal() ) {
324 326 zlmMediaListManager.addMedia(item);
325   - StreamInfo streamInfo = mediaService.getStreamInfoByAppAndStream(mediaServerItem, app, streamId, tracks);
326   - redisCatchStorage.addPushStream(mediaServerItem, app, streamId, streamInfo);
327 327 }
328 328 }else {
329   - int result = zlmMediaListManager.removeMedia( app, streamId);
330   - redisCatchStorage.removePushStream(mediaServerItem, app, streamId);
331   - if (result > 0) {
332   - pushChange = true;
333   - }
  329 + zlmMediaListManager.removeMedia( app, streamId);
  330 + redisCatchStorage.removeStream(mediaServerItem, OriginType.values()[item.getOriginType()].getType(), app, streamId);
  331 +
334 332 }
335   - if(pushChange) {
  333 + if (item.getOriginType() == OriginType.RTSP_PUSH.ordinal()
  334 + || item.getOriginType() == OriginType.RTMP_PUSH.ordinal()
  335 + || item.getOriginType() == OriginType.RTC_PUSH.ordinal() ) {
336 336 // 发送流变化redis消息
337 337 JSONObject jsonObject = new JSONObject();
338 338 jsonObject.put("serverId", userSetup.getServerId());
... ...
src/main/java/com/genersoft/iot/vmp/media/zlm/dto/OriginType.java 0 → 100644
  1 +package com.genersoft.iot.vmp.media.zlm.dto;
  2 +
  3 +public enum OriginType {
  4 + UNKNOWN("UNKNOWN"),
  5 + RTMP_PUSH("PUSH"),
  6 + RTSP_PUSH("PUSH"),
  7 + RTP_PUSH("RTP"),
  8 + RTC_PUSH("PUSH"),
  9 + PULL("PULL"),
  10 + FFMPEG_PULL("PULL"),
  11 + MP4_VOD("MP4_VOD"),
  12 + DEVICE_CHN("DEVICE_CHN");
  13 +
  14 + private final String type;
  15 + OriginType(String type) {
  16 + this.type = type;
  17 + }
  18 +
  19 + public String getType() {
  20 + return type;
  21 + }
  22 +}
... ...
src/main/java/com/genersoft/iot/vmp/storager/IRedisCatchStorage.java
... ... @@ -135,7 +135,7 @@ public interface IRedisCatchStorage {
135 135 * @param app
136 136 * @param streamId
137 137 */
138   - void addPushStream(MediaServerItem mediaServerItem, String app, String streamId, StreamInfo streamInfo);
  138 + void addStream(MediaServerItem mediaServerItem, String type, String app, String streamId, StreamInfo streamInfo);
139 139  
140 140 /**
141 141 * 移除流信息从redis
... ... @@ -143,7 +143,7 @@ public interface IRedisCatchStorage {
143 143 * @param app
144 144 * @param streamId
145 145 */
146   - void removePushStream(MediaServerItem mediaServerItem, String app, String streamId);
  146 + void removeStream(MediaServerItem mediaServerItem, String type, String app, String streamId);
147 147  
148 148 /**
149 149 * 开始下载录像时存入
... ...
src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java
... ... @@ -3,6 +3,7 @@ package com.genersoft.iot.vmp.storager.impl;
3 3 import com.alibaba.fastjson.JSONObject;
4 4 import com.genersoft.iot.vmp.common.StreamInfo;
5 5 import com.genersoft.iot.vmp.common.VideoManagerConstants;
  6 +import com.genersoft.iot.vmp.conf.UserSetup;
6 7 import com.genersoft.iot.vmp.gb28181.bean.*;
7 8 import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
8 9 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
... ... @@ -24,6 +25,9 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
24 25 @Autowired
25 26 private DeviceChannelMapper deviceChannelMapper;
26 27  
  28 + @Autowired
  29 + private UserSetup userSetup;
  30 +
27 31 private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
28 32  
29 33 /**
... ... @@ -313,15 +317,18 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
313 317 }
314 318  
315 319 @Override
316   - public void addPushStream(MediaServerItem mediaServerItem, String app, String streamId, StreamInfo streamInfo) {
317   - String key = VideoManagerConstants.WVP_SERVER_STREAM_PUSH_PREFIX + app + "_" + streamId + "_" + mediaServerItem.getId();
  320 + public void addStream(MediaServerItem mediaServerItem, String type, String app, String streamId, StreamInfo streamInfo) {
  321 + String key = VideoManagerConstants.WVP_SERVER_STREAM_PUSH_PREFIX + userSetup.getServerId() + "_" + type + "_" + app + "_" + streamId + "_" + mediaServerItem.getId();
318 322 redis.set(key, streamInfo);
319 323 }
320 324  
321 325 @Override
322   - public void removePushStream(MediaServerItem mediaServerItem, String app, String streamId) {
323   - String key = VideoManagerConstants.WVP_SERVER_STREAM_PUSH_PREFIX + app + "_" + streamId + "_" + mediaServerItem.getId();
324   - redis.del(key);
  326 + public void removeStream(MediaServerItem mediaServerItem, String type, String app, String streamId) {
  327 + String key = VideoManagerConstants.WVP_SERVER_STREAM_PUSH_PREFIX + userSetup.getServerId() + "_*_" + app + "_" + streamId + "_" + mediaServerItem.getId();
  328 + List<Object> streams = redis.scan(key);
  329 + for (Object stream : streams) {
  330 + redis.del((String) stream);
  331 + }
325 332 }
326 333  
327 334 @Override
... ...