From e48fa711a3664bece9b3e58840a75fe7c05bc47c Mon Sep 17 00:00:00 2001 From: panlinlin <648540858@qq.com> Date: 星期六, 08 五月 2021 17:14:05 +0800 Subject: [PATCH] 添加截图(快照)功能 --- src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java | 53 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 47 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java index 472c7fd..cbaa404 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java @@ -2,7 +2,9 @@ import java.util.*; +import com.genersoft.iot.vmp.common.StreamInfo; import com.genersoft.iot.vmp.gb28181.bean.*; +import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager; import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem; import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; @@ -10,6 +12,8 @@ import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.stereotype.Component; @@ -27,6 +31,9 @@ @SuppressWarnings("rawtypes") @Component public class VideoManagerStoragerImpl implements IVideoManagerStorager { + + private Logger logger = LoggerFactory.getLogger(VideoManagerStoragerImpl.class); + @Autowired DataSourceTransactionManager dataSourceTransactionManager; @@ -59,6 +66,9 @@ @Autowired private GbStreamMapper gbStreamMapper; + + @Autowired + private VideoStreamSessionManager streamSession; /** @@ -106,6 +116,7 @@ public synchronized void updateChannel(String deviceId, DeviceChannel channel) { String channelId = channel.getChannelId(); channel.setDeviceId(deviceId); + channel.setStreamId(streamSession.getStreamId(deviceId, channel.getChannelId())); DeviceChannel deviceChannel = deviceChannelMapper.queryChannel(deviceId, channelId); if (deviceChannel == null) { deviceChannelMapper.add(channel); @@ -195,9 +206,22 @@ */ @Override public boolean delete(String deviceId) { - int result = deviceMapper.del(deviceId); - - return result > 0; + TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); + boolean result = false; + try { + if (platformChannelMapper.delChannelForDeviceId(deviceId) <0 // 鍒犻櫎涓庡浗鏍囧钩鍙扮殑鍏宠仈 + || deviceChannelMapper.cleanChannelsByDeviceId(deviceId) < 0 // 鍒犻櫎浠栫殑閫氶亾 + || deviceMapper.del(deviceId) < 0 // 绉婚櫎璁惧淇℃伅 + ) { + //浜嬪姟鍥炴粴 + dataSourceTransactionManager.rollback(transactionStatus); + } + result = true; + dataSourceTransactionManager.commit(transactionStatus); //鎵嬪姩鎻愪氦 + }catch (Exception e) { + dataSourceTransactionManager.rollback(transactionStatus); + } + return result; } /** @@ -213,7 +237,7 @@ return false; } device.setOnline(1); - System.out.println("鏇存柊璁惧鍦ㄧ嚎"); + logger.info("鏇存柊璁惧鍦ㄧ嚎: " + deviceId); return deviceMapper.update(device) > 0; } @@ -225,11 +249,23 @@ */ @Override public synchronized boolean outline(String deviceId) { - System.out.println("鏇存柊璁惧绂荤嚎: " + deviceId); + logger.info("鏇存柊璁惧绂荤嚎: " + deviceId); Device device = deviceMapper.getDeviceByDeviceId(deviceId); if (device == null) return false; device.setOnline(0); return deviceMapper.update(device) > 0; + } + + /** + * 鏇存柊鎵�鏈夎澶囩绾� + * + * @return true锛氭洿鏂版垚鍔� false锛氭洿鏂板け璐� + */ + @Override + public synchronized boolean outlineForAll() { + logger.info("鏇存柊鎵�鏈夎澶囩绾�"); + int result = deviceMapper.outlineForAll(); + return result > 0; } /** @@ -521,7 +557,7 @@ @Override public void updateMediaList(List<StreamPushItem> streamPushItems) { if (streamPushItems == null || streamPushItems.size() == 0) return; - System.out.printf("updateMediaList: " + streamPushItems.size()); + logger.info("updateMediaList: " + streamPushItems.size()); streamPushMapper.addAll(streamPushItems); // TODO 寰呬紭鍖� for (int i = 0; i < streamPushItems.size(); i++) { @@ -550,4 +586,9 @@ public void mediaOutline(String app, String streamId) { gbStreamMapper.setStatus(app, streamId, false); } + + @Override + public void updateParentPlatformStatus(String platformGbID, boolean online) { + platformMapper.updateParentPlatformStatus(platformGbID, online); + } } -- Gitblit v1.8.0