ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minio/MinioUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ard-work/src/main/java/com/ruoyi/media/service/impl/MinioService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ard-work/src/main/java/com/ruoyi/media/service/impl/WebrtcService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ard-work/src/main/java/com/ruoyi/utils/pagehelper/JpaPageHelper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ard-work/src/main/java/com/ruoyi/utils/pagehelper/JpaPageInfo.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ard-work/src/main/java/com/ruoyi/utils/tools/CmdUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
lib/minio/minio.exe | 补丁 | 查看 | 原始文档 | blame | 历史 |
ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minio/MinioUtils.java
@@ -1,5 +1,6 @@ package com.ruoyi.device.hiksdk.util.minio; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.device.hiksdk.config.MinioClientSingleton; import io.minio.*; @@ -32,6 +33,10 @@ public static boolean exitsBucket(String bucketName) { boolean found = false; try { if(StringUtils.isEmpty(bucketName)) { return false; } BucketExistsArgs bucketExistsArgs = BucketExistsArgs.builder().bucket(bucketName).build(); found = MinioClientSingleton.getMinioClient().bucketExists(bucketExistsArgs); } catch (Exception ex) { @@ -45,6 +50,10 @@ */ public static boolean createBucket(String bucketName) { try { if(StringUtils.isEmpty(bucketName)) { return false; } /*å建桶*/ MakeBucketArgs makeBucketArgs = MakeBucketArgs.builder().bucket(bucketName).build(); MinioClientSingleton.getMinioClient().makeBucket(makeBucketArgs); @@ -133,6 +142,10 @@ log.error("minioçæå¤±æurlå¼å¸¸", ex.getMessage()); } } else { createBucket(bucketName); } return url; } @@ -145,6 +158,10 @@ * @ä¿®æ¹äººåå ¶å®ä¿¡æ¯ */ public static String putObjectAndGetUrl(String bucketName, MultipartFile file) { if(!exitsBucket(bucketName)) { createBucket(bucketName); } //夿æä»¶æ¯å¦ä¸ºç©º if (null == file || 0 == file.getSize()) { log.error("ä¸ä¼ minioæä»¶æå¡å¨é误ï¼ä¸ä¼ æä»¶ä¸ºç©º"); @@ -197,6 +214,10 @@ * @ä¿®æ¹äººåå ¶å®ä¿¡æ¯ */ public static String putObjectAndGetUrl(String bucketName, String folder, MultipartFile file) { if(!exitsBucket(bucketName)) { createBucket(bucketName); } //夿æä»¶æ¯å¦ä¸ºç©º if (null == file || 0 == file.getSize()) { log.error("ä¸ä¼ minioæä»¶æå¡å¨é误ï¼ä¸ä¼ æä»¶ä¸ºç©º"); @@ -351,6 +372,10 @@ */ public static boolean uploadObject(String bucketName, String objectName, InputStream stream, long size, String contextType) { try { if(!exitsBucket(bucketName)) { createBucket(bucketName); } PutObjectArgs putObjectArgs = PutObjectArgs.builder() .bucket(bucketName) .object(objectName) @@ -375,6 +400,10 @@ */ public static boolean uploadObject(String bucketName, String objectName, File file, String contextType) { try { if(!exitsBucket(bucketName)) { createBucket(bucketName); } FileInputStream fileInputStream = new FileInputStream(file); PutObjectArgs putObjectArgs = PutObjectArgs.builder() .bucket(bucketName) @@ -400,13 +429,9 @@ */ public static boolean uploadObject(String bucketName, String objectName, MultipartFile multipartFile, String contextType) { try { if (bucketName.isEmpty()) { log.error("bucketå称为空"); return false; } if (objectName.isEmpty()) { log.error("对象å称为空"); return false; if(!exitsBucket(bucketName)) { createBucket(bucketName); } InputStream inputStream = multipartFile.getInputStream(); PutObjectArgs putObjectArgs = PutObjectArgs.builder() @@ -433,6 +458,10 @@ */ public static boolean uploadObject(String bucketName, MultipartFile multipartFile, String contextType) { try { if(!exitsBucket(bucketName)) { createBucket(bucketName); } if (multipartFile == null) { log.error("ä¸ä¼ æä»¶ä¸ºç©º"); return false; @@ -461,11 +490,11 @@ * @param localFilePathName * @return */ public static boolean uploadObject(String bulkName, String objectName, String localFilePathName, String contextType) { public static boolean uploadObject(String bucketName, String objectName, String localFilePathName, String contextType) { try { if (!exitsBucket(bulkName)) { log.debug(bulkName + "ä¸åå¨"); return false; if(!exitsBucket(bucketName)) { createBucket(bucketName); } File file = new File(localFilePathName); if (!file.exists()) { @@ -473,7 +502,7 @@ return false; } UploadObjectArgs uploadObjectArgs = UploadObjectArgs.builder() .bucket(bulkName) .bucket(bucketName) .object(objectName) .filename(localFilePathName) .contentType(contextType) ard-work/src/main/java/com/ruoyi/media/service/impl/MediaService.java
@@ -15,6 +15,7 @@ import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import javax.annotation.Resource; import java.io.BufferedReader; import java.io.File; @@ -33,33 +34,47 @@ * @Version: 1.0 **/ @Service @Slf4j @Slf4j(topic = "cmd") public class MediaService implements IMediaService { @Resource MediaClient mediaClient; @Value("${mediamtx.host}") String mediamtxHost; @Value("${mediamtx.enabled}") Boolean mediamtxEnabled; String processName = "mediamtx.exe"; @PostConstruct public void initMediaMtx() { if (Platform.isWindows()) { String processName="mediamtx.exe"; String exePath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "mediamtx" + File.separator + "mediamtx.exe"; String ymlPath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "mediamtx" + File.separator + "mediamtx.yml"; if (mediamtxEnabled) { if (Platform.isWindows()) { String exePath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "mediamtx" + File.separator + "mediamtx.exe"; String ymlPath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "mediamtx" + File.separator + "mediamtx.yml"; List<String> cmd = new ArrayList<>(); cmd.add(exePath); cmd.add(ymlPath); if (CmdUtils.isProcessRunning(processName)) { // è¿ç¨å·²ç»å¨è¿è¡ï¼ç»æè¯¥è¿ç¨ CmdUtils.stopProcess(processName); } // å¯å¨åå°è¿ç¨ CmdUtils.commandStart(processName,cmd); // å¯å¨cmdçªå£ List<String> cmd = new ArrayList<>(); cmd.add(exePath); cmd.add(ymlPath); if (CmdUtils.isProcessRunning(processName)) { // è¿ç¨å·²ç»å¨è¿è¡ï¼ç»æè¯¥è¿ç¨ CmdUtils.stopProcess(processName); } // å¯å¨åå°è¿ç¨ CmdUtils.commandStart(processName, cmd, null); // å¯å¨cmdçªå£ // String[] command = {"cmd","/c","start",exePath,ymlPath}; // CmdUtils.commandStart(command); } } } @PreDestroy public void destroyMediaMtx() { log.info("鿝mediaMtx"); if (CmdUtils.isProcessRunning(processName)) { // è¿ç¨å·²ç»å¨è¿è¡ï¼ç»æè¯¥è¿ç¨ CmdUtils.stopProcess(processName); } } ard-work/src/main/java/com/ruoyi/media/service/impl/MinioService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,70 @@ package com.ruoyi.media.service.impl; import com.ruoyi.utils.tools.CmdUtils; import com.sun.jna.Platform; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @Description: * @ClassName: MinioService * @Author: åèä¹ * @Date: 2023å¹´08æ04æ¥10:32:40 * @Version: 1.0 **/ @Component @Slf4j(topic = "cmd") public class MinioService { String processName = "minio.exe"; @Value("${minio.path}") String minioPath; @Value("${minio.accessKey}") String accessKey; @Value("${minio.secretKey}") String secretKey; @Value("${minio.enabled}") Boolean minioEnabled; @PostConstruct public void init() { if (minioEnabled) { if (Platform.isWindows()) { String exePath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "minio" + File.separator + processName; List<String> cmd = new ArrayList<>(); cmd.add(exePath); cmd.add("server"); cmd.add(minioPath); if (CmdUtils.isProcessRunning(processName)) { // è¿ç¨å·²ç»å¨è¿è¡ï¼ç»æè¯¥è¿ç¨ CmdUtils.stopProcess(processName); } // å¯å¨åå°è¿ç¨ Map<String, String> envMap = new HashMap<>(); envMap.put("MINIO_ROOT_USER", accessKey); envMap.put("MINIO_ROOT_PASSWORD", secretKey); CmdUtils.commandStart(processName, cmd, envMap); // å¯å¨cmdçªå£ // String[] command = {"cmd", "/c", "start", exePath, "-H127.0.0.1:8000", "-o"}; // CmdUtils.commandStart(command); } } } @PreDestroy public void destroyMediaMtx() { log.info("鿝minio"); if (CmdUtils.isProcessRunning(processName)) { // è¿ç¨å·²ç»å¨è¿è¡ï¼ç»æè¯¥è¿ç¨ CmdUtils.stopProcess(processName); } } } ard-work/src/main/java/com/ruoyi/media/service/impl/WebrtcService.java
@@ -2,9 +2,12 @@ import com.ruoyi.utils.tools.CmdUtils; import com.sun.jna.Platform; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import java.io.BufferedReader; import java.io.File; import java.io.IOException; @@ -20,25 +23,42 @@ * @Version: 1.0 **/ @Component @Slf4j(topic = "cmd") public class WebrtcService { String processName = "webrtc-streamer.exe"; @Value("${webrtc.host}") String webrtcHost; @Value("${webrtc.enabled}") Boolean webrtcEnabled; @PostConstruct public void init() { if (Platform.isWindows()) { String processName = "webrtc-streamer.exe"; // æ¿æ¢ä¸ºå®é çexeç¨åºåç§° String exePath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "webrtc" + File.separator + processName; List<String> cmd = new ArrayList<>(); cmd.add(exePath); cmd.add("-H127.0.0.1:8000"); cmd.add("-o"); if (CmdUtils.isProcessRunning(processName)) { // è¿ç¨å·²ç»å¨è¿è¡ï¼ç»æè¯¥è¿ç¨ CmdUtils.stopProcess(processName); } // å¯å¨åå°è¿ç¨ CmdUtils.commandStart(processName,cmd); // å¯å¨cmdçªå£ if (webrtcEnabled) { if (Platform.isWindows()) { String exePath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "webrtc" + File.separator + processName; List<String> cmd = new ArrayList<>(); cmd.add(exePath); cmd.add("-H" + webrtcHost); cmd.add("-o"); if (CmdUtils.isProcessRunning(processName)) { // è¿ç¨å·²ç»å¨è¿è¡ï¼ç»æè¯¥è¿ç¨ CmdUtils.stopProcess(processName); } // å¯å¨åå°è¿ç¨ CmdUtils.commandStart(processName, cmd, null); // å¯å¨cmdçªå£ // String[] command = {"cmd", "/c", "start", exePath, "-H127.0.0.1:8000", "-o"}; // CmdUtils.commandStart(command); } } } @PreDestroy public void destroyMediaMtx() { log.info("鿝webrtc-streamer"); if (CmdUtils.isProcessRunning(processName)) { // è¿ç¨å·²ç»å¨è¿è¡ï¼ç»æè¯¥è¿ç¨ CmdUtils.stopProcess(processName); } } } ard-work/src/main/java/com/ruoyi/utils/pagehelper/JpaPageHelper.java
@@ -1,7 +1,7 @@ package com.ruoyi.utils.pagehelper; /** * @Description: * @Description: å页帮å©ç±» * @ClassName: JpaPageHelper * @Author: åèä¹ * @Date: 2023å¹´07æ31æ¥10:42:16 ard-work/src/main/java/com/ruoyi/utils/pagehelper/JpaPageInfo.java
@@ -2,7 +2,7 @@ import java.util.List; /** * @Description: * @Description: å页信æ¯ç±» * @ClassName: JpaPageInfo * @Author: åèä¹ * @Date: 2023å¹´07æ31æ¥10:42:40 ard-work/src/main/java/com/ruoyi/utils/tools/CmdUtils.java
@@ -7,6 +7,7 @@ import java.io.InputStreamReader; import java.nio.charset.Charset; import java.util.List; import java.util.Map; /** * @Description: cmdå½ä»¤å·¥å ·ç±» @@ -18,10 +19,20 @@ @Slf4j(topic = "cmd") public class CmdUtils { //å¯å¨å½ä»¤1 public static void commandStart(String processName, List<String> command) { log.debug("å¯å¨å¤é¨ç¨åº:" + processName); command.forEach(v -> log.debug(v + " ")); public static void commandStart(String processName, List<String> command, Map<String, String> env) { log.debug("å¯å¨å¤é¨ç¨åº:ã" + processName+"ã"); // command.forEach(v -> log.debug(v + " ")); log.debug(String.join(" ", command)); ProcessBuilder builder = new ProcessBuilder(); // è·ååè¿ç¨çç¯å¢åéæ å° if (env != null) { env.entrySet().forEach(entry -> { log.debug(entry.getKey() + ":" + entry.getValue()); }); Map<String, String> envMap = builder.environment(); envMap.putAll(env); } //æ£å¸¸ä¿¡æ¯åé误信æ¯åå¹¶è¾åº builder.redirectErrorStream(true); builder.command(command); @@ -36,13 +47,13 @@ // System.out.println(line); // } } catch (IOException e) { e.printStackTrace(); log.error("cmdå¼å¸¸:" + e.getMessage()); } } // ç»ææå®åç§°çè¿ç¨ public static void stopProcess(String processName) { log.debug("å°è¯ç»æè¿ç¨:"+processName); log.debug("å°è¯ç»æè¿ç¨:" + processName); ProcessBuilder builder = new ProcessBuilder("taskkill", "/F", "/IM", processName); Process process; try { lib/minio/minio.exeBinary files differ