From 28b5cc39d0a2d9939f70b4c980a31d9b27fc1e4c Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期二, 19 七月 2022 14:27:30 +0800 Subject: [PATCH] 修复更新推流状态sql错误 --- src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java | 114 ++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 96 insertions(+), 18 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 3876309..693dda1 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,25 +1,33 @@ package com.genersoft.iot.vmp.media.zlm; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.genersoft.iot.vmp.media.zlm.dto.IMediaServerItem; -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.conf.UserSetting; import com.genersoft.iot.vmp.gb28181.bean.GbStream; +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 com.genersoft.iot.vmp.utils.DateUtil; +import org.checkerframework.checker.units.qual.C; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.regex.Matcher; +import java.util.regex.Pattern; -@SuppressWarnings("unchecked") +/** + * @author lin + */ @Component public class ZLMMediaListManager { @@ -32,7 +40,7 @@ private IRedisCatchStorage redisCatchStorage; @Autowired - private IVideoManagerStorager storager; + private IVideoManagerStorage storager; @Autowired private GbStreamMapper gbStreamMapper; @@ -44,7 +52,18 @@ private IStreamPushService streamPushService; @Autowired + private IStreamProxyService streamProxyService; + + @Autowired + private StreamPushMapper streamPushMapper; + + @Autowired private ZLMHttpHookSubscribe subscribe; + + @Autowired + private UserSetting userSetting; + + private Map<String, ChannelOnlineEvent> channelOnlineEvents = new ConcurrentHashMap<>(); public void updateMediaList(MediaServerItem mediaServerItem) { @@ -52,7 +71,9 @@ // 浣跨敤寮傛鐨勫綋鏃舵洿鏂板獟浣撴祦鍒楄〃 zlmresTfulUtils.getMediaList(mediaServerItem, (mediaList ->{ - if (mediaList == null) return; + if (mediaList == null) { + return; + } String dataStr = mediaList.getString("data"); Integer code = mediaList.getInteger("code"); @@ -76,7 +97,7 @@ jsonObject.put("stream", streamPushItem.getStream()); jsonObject.put("mediaServerId", mediaServerItem.getId()); subscribe.addSubscribe(ZLMHttpHookSubscribe.HookType.on_play,jsonObject, - (IMediaServerItem mediaServerItemInuse, JSONObject response)->{ + (MediaServerItem mediaServerItemInuse, JSONObject response)->{ updateMedia(mediaServerItem, response.getString("app"), response.getString("stream")); } ); @@ -86,17 +107,61 @@ } - public void addMedia(IMediaServerItem mediaServerItem, String app, String streamId) { + public void addMedia(MediaServerItem mediaServerItem, String app, String streamId) { //浣跨敤寮傛鏇存柊鎺ㄦ祦 updateMedia(mediaServerItem, app, streamId); } + public StreamPushItem addPush(MediaItem mediaItem) { + // 鏌ユ壘姝ょ洿鎾祦鏄惁瀛樺湪redis棰勮gbId + StreamPushItem transform = streamPushService.transform(mediaItem); + StreamPushItem pushInDb = streamPushService.getPush(mediaItem.getApp(), mediaItem.getStream()); + transform.setUpdateTime(DateUtil.getNow()); + transform.setPushTime(DateUtil.getNow()); + if (pushInDb == null) { + transform.setCreateTime(DateUtil.getNow()); + streamPushMapper.add(transform); + }else { + streamPushMapper.update(transform); - public void updateMedia(IMediaServerItem mediaServerItem, String app, String streamId) { + +// if (!StringUtils.isEmpty(pushInDb.getGbId())) { +// List<GbStream> gbStreamList = gbStreamMapper.selectByGBId(transform.getGbId()); +// if (gbStreamList != null && gbStreamList.size() == 1) { +// transform.setGbStreamId(gbStreamList.get(0).getGbStreamId()); +// transform.setPlatformId(gbStreamList.get(0).getPlatformId()); +// transform.setCatalogId(gbStreamList.get(0).getCatalogId()); +// transform.setGbId(gbStreamList.get(0).getGbId()); +// gbStreamMapper.update(transform); +// streamPushMapper.del(gbStreamList.get(0).getApp(), gbStreamList.get(0).getStream()); +// }else { +// transform.setCreateTime(DateUtil.getNow()); +// transform.setUpdateTime(DateUtil.getNow()); +// gbStreamMapper.add(transform); +// } + // 閫氱煡閫氶亾涓婄嚎 +// if (transform != null) { +// if (channelOnlineEvents.get(transform.getGbId()) != null) { +// channelOnlineEvents.get(transform.getGbId()).run(transform.getApp(), transform.getStream(), transform.getServerId()); +// channelOnlineEvents.remove(transform.getGbId()); +// } +// } +// } + } + + + + return transform; + } + + + public void updateMedia(MediaServerItem mediaServerItem, String app, String streamId) { //浣跨敤寮傛鏇存柊鎺ㄦ祦 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"); @@ -117,16 +182,29 @@ } - public void removeMedia(String app, String streamId) { + public int removeMedia(String app, String streamId) { // 鏌ユ壘鏄惁鍏宠仈浜嗗浗鏍囷紝 鍏宠仈浜嗕笉鍒犻櫎锛� 缃负绂荤嚎 - StreamProxyItem streamProxyItem = gbStreamMapper.selectOne(app, streamId); - if (streamProxyItem == null) { - storager.removeMedia(app, streamId); + GbStream gbStream = gbStreamMapper.selectOne(app, streamId); + int result; + if (gbStream == null) { + result = storager.removeMedia(app, streamId); }else { - storager.mediaOutline(app, streamId); + // TODO 鏆備笉璁剧疆涓虹绾� + result =storager.mediaOffline(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() { // logger.info("娓呯┖鎵�鏈夊浗鏍囩浉鍏崇殑session"); // JSONObject allSessionJSON = zlmresTfulUtils.getAllSession(); -- Gitblit v1.8.0