wuhaobin 5 months ago
parent 390789a775
commit 1579bfb6ee

@ -2,12 +2,87 @@ package com.cauc.deaudio;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.CommandLineRunner;
import org.springframework.context.annotation.Bean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.BufferedReader;
import java.io.InputStreamReader;
@SpringBootApplication
public class DeaudioApplication {
private static final Logger logger = LoggerFactory.getLogger(DeaudioApplication.class);
public static void main(String[] args) {
SpringApplication.run(DeaudioApplication.class, args);
}
@Bean
public CommandLineRunner startSpleeterService() {
return args -> {
logger.info("正在启动Spleeter服务...");
// 检查Spleeter服务是否已经在运行
if (!isSpleeterServiceRunning()) {
// 启动Spleeter服务
startSpleeterServiceProcess();
logger.info("Spleeter服务启动完成运行在端口5000");
} else {
logger.info("Spleeter服务已在运行");
}
logger.info("DeAudio应用启动完成运行在端口8081");
};
}
private boolean isSpleeterServiceRunning() {
try {
ProcessBuilder processBuilder = new ProcessBuilder("netstat", "-an");
Process process = processBuilder.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
if (line.contains(":5000") && line.contains("LISTENING")) {
return true;
}
}
process.waitFor();
} catch (Exception e) {
logger.warn("检查Spleeter服务状态时出错: {}", e.getMessage());
}
return false;
}
private void startSpleeterServiceProcess() {
try {
// 构建启动Spleeter服务的命令
ProcessBuilder processBuilder = new ProcessBuilder(
"python", "spleeter_service.py"
);
// 设置工作目录为Spleeter服务所在目录
processBuilder.directory(new java.io.File("F:\\traeprojects\\DeAudio\\project"));
// 启动进程
Process process = processBuilder.start();
// 记录启动信息
logger.info("Spleeter服务进程已启动PID: {}", process.pid());
// 添加关闭钩子确保应用退出时关闭Spleeter服务
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
if (process.isAlive()) {
process.destroy();
logger.info("Spleeter服务已关闭");
}
}));
} catch (Exception e) {
logger.error("启动Spleeter服务失败: {}", e.getMessage());
}
}
}

Loading…
Cancel
Save