package com.ruoyi.media.service.impl; import com.ruoyi.utils.process.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.List; /** * @Description: * @ClassName: webrtcService * @Author: 刘苏义 * @Date: 2023年07月26日13:43:07 * @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 (webrtcEnabled) { if (Platform.isWindows()) { String exePath = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "webrtc" + File.separator + processName; List 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() { if (webrtcEnabled) { log.info("销毁webrtc-streamer"); if (CmdUtils.isProcessRunning(processName)) { // 进程已经在运行,结束该进程 CmdUtils.stopProcess(processName); } } } }