diff --git a/sql/mysql.sql b/sql/mysql.sql index 7b5d943aa..8c6c7b0ba 100644 --- a/sql/mysql.sql +++ b/sql/mysql.sql @@ -48,6 +48,7 @@ CREATE TABLE `device` ( `ssrcCheck` int DEFAULT '0', `geoCoordSys` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `treeType` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `mediaServerId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'auto', PRIMARY KEY (`id`), UNIQUE KEY `device_deviceId_uindex` (`deviceId`) ) ENGINE=InnoDB AUTO_INCREMENT=36 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java index d00cb4215..afa2daadc 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java @@ -520,7 +520,6 @@ public class MediaServerServiceImpl implements IMediaServerService { Map param = new HashMap<>(); param.put("api.secret",mediaServerItem.getSecret()); // -profile:v Baseline - param.put("ffmpeg.cmd","%s -fflags nobuffer -i %s -c:a aac -strict -2 -ar 44100 -ab 48k -c:v libx264 -f flv %s"); param.put("hook.enable","1"); param.put("hook.on_flow_report",String.format("%s/on_flow_report", hookPrex)); param.put("hook.on_play",String.format("%s/on_play", hookPrex)); diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java index 08d673bd6..52e730e02 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java @@ -24,6 +24,8 @@ import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; +import org.springframework.util.StringUtils; import org.springframework.web.context.request.async.DeferredResult; import com.alibaba.fastjson.JSON; @@ -405,12 +407,11 @@ public class PlayServiceImpl implements IPlayService { if (device == null) { return null; } - String mediaServerId = device.getMediaServerId(); MediaServerItem mediaServerItem; - if (mediaServerId == null) { + if (ObjectUtils.isEmpty(device.getMediaServerId()) || "auto".equals(device.getMediaServerId())) { mediaServerItem = mediaServerService.getMediaServerForMinimumLoad(); } else { - mediaServerItem = mediaServerService.getOne(mediaServerId); + mediaServerItem = mediaServerService.getOne(device.getMediaServerId()); } if (mediaServerItem == null) { logger.warn("点播时未找到可使用的ZLM..."); diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java index aa197efac..f54147e74 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java @@ -98,7 +98,7 @@ public class StreamProxyServiceImpl implements IStreamProxyService { @Override public StreamInfo save(StreamProxyItem param) { MediaServerItem mediaInfo; - if (param.getMediaServerId() == null || "auto".equals(param.getMediaServerId())){ + if (ObjectUtils.isEmpty(param.getMediaServerId()) || "auto".equals(param.getMediaServerId())){ mediaInfo = mediaServerService.getMediaServerForMinimumLoad(); }else { mediaInfo = mediaServerService.getOne(param.getMediaServerId()); diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java index 7e8dd3c64..3f3301f62 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java @@ -93,6 +93,7 @@ public interface DeviceMapper { ", ssrcCheck=${ssrcCheck}" + ", geoCoordSys=#{geoCoordSys}" + ", treeType=#{treeType}" + + ", mediaServerId=#{mediaServerId}" + "WHERE deviceId='${deviceId}'"+ " "}) int update(Device device); diff --git a/src/main/java/com/genersoft/iot/vmp/utils/CollectionUtil.java b/src/main/java/com/genersoft/iot/vmp/utils/CollectionUtil.java deleted file mode 100644 index 4f7ca1f33..000000000 --- a/src/main/java/com/genersoft/iot/vmp/utils/CollectionUtil.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.genersoft.iot.vmp.utils; - -import java.util.Arrays; - -public class CollectionUtil { - - public static boolean contains(T[] array, final T element) { - return array != null && Arrays.stream(array).anyMatch((x) -> { - return ObjectUtils.nullSafeEquals(x, element); - }); - } -} diff --git a/src/main/java/com/genersoft/iot/vmp/utils/ObjectUtils.java b/src/main/java/com/genersoft/iot/vmp/utils/ObjectUtils.java deleted file mode 100644 index 1f429bc71..000000000 --- a/src/main/java/com/genersoft/iot/vmp/utils/ObjectUtils.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.genersoft.iot.vmp.utils; - -import java.util.Arrays; - -public class ObjectUtils { - public static boolean nullSafeEquals(Object o1, Object o2) { - if (o1 == o2) { - return true; - } else if (o1 != null && o2 != null) { - if (o1.equals(o2)) { - return true; - } else { - return o1.getClass().isArray() && o2.getClass().isArray() && arrayEquals(o1, o2); - } - } else { - return false; - } - } - - private static boolean arrayEquals(Object o1, Object o2) { - if (o1 instanceof Object[] && o2 instanceof Object[]) { - return Arrays.equals((Object[])((Object[])o1), (Object[])((Object[])o2)); - } else if (o1 instanceof boolean[] && o2 instanceof boolean[]) { - return Arrays.equals((boolean[])((boolean[])o1), (boolean[])((boolean[])o2)); - } else if (o1 instanceof byte[] && o2 instanceof byte[]) { - return Arrays.equals((byte[])((byte[])o1), (byte[])((byte[])o2)); - } else if (o1 instanceof char[] && o2 instanceof char[]) { - return Arrays.equals((char[])((char[])o1), (char[])((char[])o2)); - } else if (o1 instanceof double[] && o2 instanceof double[]) { - return Arrays.equals((double[])((double[])o1), (double[])((double[])o2)); - } else if (o1 instanceof float[] && o2 instanceof float[]) { - return Arrays.equals((float[])((float[])o1), (float[])((float[])o2)); - } else if (o1 instanceof int[] && o2 instanceof int[]) { - return Arrays.equals((int[])((int[])o1), (int[])((int[])o2)); - } else if (o1 instanceof long[] && o2 instanceof long[]) { - return Arrays.equals((long[])((long[])o1), (long[])((long[])o2)); - } else { - return o1 instanceof short[] && o2 instanceof short[] && Arrays.equals((short[]) ((short[]) o1), (short[]) ((short[]) o2)); - } - } -} diff --git a/web_src/src/components/dialog/deviceEdit.vue b/web_src/src/components/dialog/deviceEdit.vue index 12c0aa188..49322eb77 100644 --- a/web_src/src/components/dialog/deviceEdit.vue +++ b/web_src/src/components/dialog/deviceEdit.vue @@ -18,17 +18,17 @@ - - - - - - - - - - - + + + + + + +