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.BufferedReader;
|
import java.io.File;
|
import java.io.IOException;
|
import java.io.InputStreamReader;
|
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<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() {
|
if (webrtcEnabled) {
|
log.info("销毁webrtc-streamer");
|
if (CmdUtils.isProcessRunning(processName)) {
|
// 进程已经在运行,结束该进程
|
CmdUtils.stopProcess(processName);
|
}
|
}
|
}
|
}
|