From 5e82aa5f39981e6ba0909a493f091954cebd24c8 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期四, 20 六月 2024 20:04:48 +0800
Subject: [PATCH] 优化拉流代理国标级联点播
---
src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java | 79 ++++++++++++++++++++++++---------------
1 files changed, 48 insertions(+), 31 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
index b3c510d..3213eb9 100755
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
@@ -14,7 +14,7 @@
import com.genersoft.iot.vmp.media.event.media.MediaArrivalEvent;
import com.genersoft.iot.vmp.media.event.media.MediaDepartureEvent;
import com.genersoft.iot.vmp.media.service.IMediaServerService;
-import com.genersoft.iot.vmp.media.zlm.dto.MediaServer;
+import com.genersoft.iot.vmp.media.bean.MediaServer;
import com.genersoft.iot.vmp.media.zlm.dto.StreamAuthorityInfo;
import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
import com.genersoft.iot.vmp.media.zlm.dto.hook.OnStreamChangedHookParam;
@@ -156,10 +156,10 @@
@EventListener
public void onApplicationEvent(MediaDepartureEvent event) {
// 鍏煎娴佹敞閿�鏃剁被鍨嬩粠redis璁板綍鑾峰彇
- OnStreamChangedHookParam onStreamChangedHookParam = redisCatchStorage.getStreamInfo(
+ MediaInfo mediaInfo = redisCatchStorage.getStreamInfo(
event.getApp(), event.getStream(), event.getMediaServer().getId());
- if (onStreamChangedHookParam != null) {
- String type = OriginType.values()[onStreamChangedHookParam.getOriginType()].getType();
+ if (mediaInfo != null) {
+ String type = OriginType.values()[mediaInfo.getOriginType()].getType();
redisCatchStorage.removeStream(event.getMediaServer().getId(), type, event.getApp(), event.getStream());
if ("PUSH".equalsIgnoreCase(type)) {
// 鍐椾綑鏁版嵁锛岃嚜宸辩郴缁熶腑鑷敤
@@ -217,7 +217,7 @@
streamPushItem.setStream(item.getStream());
streamPushItem.setAliveSecond(item.getAliveSecond());
streamPushItem.setOriginSock(item.getOriginSock());
- streamPushItem.setTotalReaderCount(item.getTotalReaderCount() + "");
+ streamPushItem.setTotalReaderCount(item.getTotalReaderCount());
streamPushItem.setOriginType(item.getOriginType());
streamPushItem.setOriginTypeStr(item.getOriginTypeStr());
streamPushItem.setOriginUrl(item.getOriginUrl());
@@ -274,19 +274,19 @@
}
@Override
- public boolean stop(String app, String streamId) {
- logger.info("[鎺ㄦ祦 ] 鍋滄娴侊細 {}/{}", app, streamId);
- StreamPushItem streamPushItem = streamPushMapper.selectOne(app, streamId);
+ public boolean stop(String app, String stream) {
+ logger.info("[鎺ㄦ祦 ] 鍋滄娴侊細 {}/{}", app, stream);
+ StreamPushItem streamPushItem = streamPushMapper.selectOne(app, stream);
if (streamPushItem != null) {
gbStreamService.sendCatalogMsg(streamPushItem, CatalogEvent.DEL);
}
- platformGbStreamMapper.delByAppAndStream(app, streamId);
- gbStreamMapper.del(app, streamId);
- int delStream = streamPushMapper.del(app, streamId);
+ platformGbStreamMapper.delByAppAndStream(app, stream);
+ gbStreamMapper.del(app, stream);
+ int delStream = streamPushMapper.del(app, stream);
if (delStream > 0) {
MediaServer mediaServerItem = mediaServerService.getOne(streamPushItem.getMediaServerId());
- mediaServerService.closeStreams(mediaServerItem,app, streamId);
+ mediaServerService.closeStreams(mediaServerItem,app, stream);
}
return true;
}
@@ -302,8 +302,8 @@
List<StreamPushItem> pushList = getPushList(mediaServerId);
Map<String, StreamPushItem> pushItemMap = new HashMap<>();
// redis璁板綍
- List<OnStreamChangedHookParam> onStreamChangedHookParams = redisCatchStorage.getStreams(mediaServerId, "PUSH");
- Map<String, OnStreamChangedHookParam> streamInfoPushItemMap = new HashMap<>();
+ List<MediaInfo> mediaInfoList = redisCatchStorage.getStreams(mediaServerId, "PUSH");
+ Map<String, MediaInfo> streamInfoPushItemMap = new HashMap<>();
if (pushList.size() > 0) {
for (StreamPushItem streamPushItem : pushList) {
if (ObjectUtils.isEmpty(streamPushItem.getGbId())) {
@@ -311,9 +311,9 @@
}
}
}
- if (onStreamChangedHookParams.size() > 0) {
- for (OnStreamChangedHookParam onStreamChangedHookParam : onStreamChangedHookParams) {
- streamInfoPushItemMap.put(onStreamChangedHookParam.getApp() + onStreamChangedHookParam.getStream(), onStreamChangedHookParam);
+ if (mediaInfoList.size() > 0) {
+ for (MediaInfo mediaInfo : mediaInfoList) {
+ streamInfoPushItemMap.put(mediaInfo.getApp() + mediaInfo.getStream(), mediaInfo);
}
}
// 鑾峰彇鎵�鏈夋帹娴侀壌鏉冧俊鎭紝娓呯悊杩囨湡鐨�
@@ -352,21 +352,21 @@
}
}
- Collection<OnStreamChangedHookParam> offlineOnStreamChangedHookParamList = streamInfoPushItemMap.values();
- if (offlineOnStreamChangedHookParamList.size() > 0) {
+ Collection<MediaInfo> mediaInfos = streamInfoPushItemMap.values();
+ if (mediaInfos.size() > 0) {
String type = "PUSH";
- for (OnStreamChangedHookParam offlineOnStreamChangedHookParam : offlineOnStreamChangedHookParamList) {
+ for (MediaInfo mediaInfo : mediaInfos) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("serverId", userSetting.getServerId());
- jsonObject.put("app", offlineOnStreamChangedHookParam.getApp());
- jsonObject.put("stream", offlineOnStreamChangedHookParam.getStream());
+ jsonObject.put("app", mediaInfo.getApp());
+ jsonObject.put("stream", mediaInfo.getStream());
jsonObject.put("register", false);
jsonObject.put("mediaServerId", mediaServerId);
redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
// 绉婚櫎redis鍐呮祦鐨勪俊鎭�
- redisCatchStorage.removeStream(mediaServerItem.getId(), "PUSH", offlineOnStreamChangedHookParam.getApp(), offlineOnStreamChangedHookParam.getStream());
+ redisCatchStorage.removeStream(mediaServerItem.getId(), "PUSH", mediaInfo.getApp(), mediaInfo.getStream());
// 鍐椾綑鏁版嵁锛岃嚜宸辩郴缁熶腑鑷敤
- redisCatchStorage.removePushListItem(offlineOnStreamChangedHookParam.getApp(), offlineOnStreamChangedHookParam.getStream(), mediaServerItem.getId());
+ redisCatchStorage.removePushListItem(mediaInfo.getApp(), mediaInfo.getStream(), mediaServerItem.getId());
}
}
@@ -391,21 +391,21 @@
// 鍙戦�佹祦鍋滄娑堟伅
String type = "PUSH";
// 鍙戦�乺edis娑堟伅
- List<OnStreamChangedHookParam> streamInfoList = redisCatchStorage.getStreams(mediaServerId, type);
- if (streamInfoList.size() > 0) {
- for (OnStreamChangedHookParam onStreamChangedHookParam : streamInfoList) {
+ List<MediaInfo> mediaInfoList = redisCatchStorage.getStreams(mediaServerId, type);
+ if (mediaInfoList.size() > 0) {
+ for (MediaInfo mediaInfo : mediaInfoList) {
// 绉婚櫎redis鍐呮祦鐨勪俊鎭�
- redisCatchStorage.removeStream(mediaServerId, type, onStreamChangedHookParam.getApp(), onStreamChangedHookParam.getStream());
+ redisCatchStorage.removeStream(mediaServerId, type, mediaInfo.getApp(), mediaInfo.getStream());
JSONObject jsonObject = new JSONObject();
jsonObject.put("serverId", userSetting.getServerId());
- jsonObject.put("app", onStreamChangedHookParam.getApp());
- jsonObject.put("stream", onStreamChangedHookParam.getStream());
+ jsonObject.put("app", mediaInfo.getApp());
+ jsonObject.put("stream", mediaInfo.getStream());
jsonObject.put("register", false);
jsonObject.put("mediaServerId", mediaServerId);
redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
// 鍐椾綑鏁版嵁锛岃嚜宸辩郴缁熶腑鑷敤
- redisCatchStorage.removePushListItem(onStreamChangedHookParam.getApp(), onStreamChangedHookParam.getStream(), mediaServerId);
+ redisCatchStorage.removePushListItem(mediaInfo.getApp(), mediaInfo.getStream(), mediaServerId);
}
}
}
@@ -633,4 +633,21 @@
public Map<String, StreamPushItem> getAllAppAndStreamMap() {
return streamPushMapper.getAllAppAndStreamMap();
}
+
+ @Override
+ public void updatePush(OnStreamChangedHookParam param) {
+ StreamPushItem transform = transform(param);
+ StreamPushItem pushInDb = getPush(param.getApp(), param.getStream());
+ transform.setPushIng(param.isRegist());
+ transform.setUpdateTime(DateUtil.getNow());
+ transform.setPushTime(DateUtil.getNow());
+ transform.setSelf(userSetting.getServerId().equals(param.getSeverId()));
+ if (pushInDb == null) {
+ transform.setCreateTime(DateUtil.getNow());
+ streamPushMapper.add(transform);
+ }else {
+ streamPushMapper.update(transform);
+ gbStreamMapper.updateMediaServer(param.getApp(), param.getStream(), param.getMediaServerId());
+ }
+ }
}
--
Gitblit v1.8.0