From d739bfa5976e36ced26f906ab16f83c20c8cb27c Mon Sep 17 00:00:00 2001 From: xiaoxie <hotcoffie@163.com> Date: 星期一, 23 五月 2022 09:44:21 +0800 Subject: [PATCH] 处理冲突 --- src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java | 44 +++++++++++++++++++++++++++++++++----------- 1 files changed, 33 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java index fa4aa35..9beac16 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java @@ -1,20 +1,18 @@ package com.genersoft.iot.vmp.media.zlm; import com.alibaba.fastjson.JSONObject; -import com.genersoft.iot.vmp.conf.UserSetup; +import com.genersoft.iot.vmp.conf.UserSetting; import com.genersoft.iot.vmp.gb28181.bean.GbStream; -import com.genersoft.iot.vmp.media.zlm.dto.MediaItem; -import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem; -import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem; -import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem; +import com.genersoft.iot.vmp.media.zlm.dto.*; import com.genersoft.iot.vmp.service.IStreamProxyService; import com.genersoft.iot.vmp.service.IStreamPushService; import com.genersoft.iot.vmp.service.bean.ThirdPartyGB; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; -import com.genersoft.iot.vmp.storager.IVideoManagerStorager; +import com.genersoft.iot.vmp.storager.IVideoManagerStorage; import com.genersoft.iot.vmp.storager.dao.GbStreamMapper; import com.genersoft.iot.vmp.storager.dao.PlatformGbStreamMapper; import com.genersoft.iot.vmp.storager.dao.StreamPushMapper; +import org.checkerframework.checker.units.qual.C; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -22,6 +20,7 @@ import org.springframework.util.StringUtils; import java.util.*; +import java.util.concurrent.ConcurrentHashMap; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -37,7 +36,7 @@ private IRedisCatchStorage redisCatchStorage; @Autowired - private IVideoManagerStorager storager; + private IVideoManagerStorage storager; @Autowired private GbStreamMapper gbStreamMapper; @@ -58,7 +57,9 @@ private ZLMHttpHookSubscribe subscribe; @Autowired - private UserSetup userSetup; + private UserSetting userSetting; + + private Map<String, ChannelOnlineEvent> channelOnlineEvents = new ConcurrentHashMap<>(); public void updateMediaList(MediaServerItem mediaServerItem) { @@ -66,7 +67,9 @@ // 浣跨敤寮傛鐨勫綋鏃舵洿鏂板獟浣撴祦鍒楄〃 zlmresTfulUtils.getMediaList(mediaServerItem, (mediaList ->{ - if (mediaList == null) return; + if (mediaList == null) { + return; + } String dataStr = mediaList.getString("data"); Integer code = mediaList.getInteger("code"); @@ -109,7 +112,7 @@ // 鏌ユ壘姝ょ洿鎾祦鏄惁瀛樺湪redis棰勮gbId StreamPushItem transform = streamPushService.transform(mediaItem); // 浠巗treamId鍙栧嚭鏌ヨ鍏抽敭鍊� - Pattern pattern = Pattern.compile(userSetup.getThirdPartyGBIdReg()); + Pattern pattern = Pattern.compile(userSetting.getThirdPartyGBIdReg()); Matcher matcher = pattern.matcher(mediaItem.getStream());// 鎸囧畾瑕佸尮閰嶇殑瀛楃涓� String queryKey = null; if (matcher.find()) { //姝ゅfind锛堬級姣忔琚皟鐢ㄥ悗锛屼細鍋忕Щ鍒颁笅涓�涓尮閰� @@ -157,7 +160,15 @@ transform.setCreateStamp(System.currentTimeMillis()); gbStreamMapper.add(transform); } + if (transform != null) { + if (channelOnlineEvents.get(transform.getGbId()) != null) { + channelOnlineEvents.get(transform.getGbId()).run(transform.getApp(), transform.getStream()); + channelOnlineEvents.remove(transform.getGbId()); + } + } } + + storager.updateMedia(transform); return transform; } @@ -167,7 +178,9 @@ //浣跨敤寮傛鏇存柊鎺ㄦ祦 zlmresTfulUtils.getMediaList(mediaServerItem, app, streamId, "rtmp", json->{ - if (json == null) return; + if (json == null) { + return; + } String dataStr = json.getString("data"); Integer code = json.getInteger("code"); @@ -195,11 +208,20 @@ if (streamProxyItem == null) { result = storager.removeMedia(app, streamId); }else { + // TODO 鏆備笉璁剧疆涓虹绾� result =storager.mediaOutline(app, streamId); } return result; } + public void addChannelOnlineEventLister(String key, ChannelOnlineEvent callback) { + this.channelOnlineEvents.put(key,callback); + } + + public void removedChannelOnlineEventLister(String key) { + this.channelOnlineEvents.remove(key); + } + // public void clearAllSessions() { -- Gitblit v1.8.0