gpt4 book ai didi

java - 在cmd上执行进程,不处理

转载 作者:行者123 更新时间:2023-12-01 15:14:47 25 4
gpt4 key购买 nike

我正在从 Java 运行 ffmpeg。使用它可以将 flv 文件转换为 mp3。

当我运行下面的代码时,ffmpeg 启动,创建一个新文件(.mp3 文件),但以 0% 的 CPU 运行。当我停止 JAVA 应用程序(来自 netbeans)时,ffmpeg 保持打开状态,并且每个 Windows 任务管理器 (CTRL-ALT-DEL) 从 0% 变为 99%。另一件奇怪的事情正在发生。 ffmpeg 的输出没有被打印。

线程正在启​​动,但由于某种原因 java 没有给它任何时间来进行处理。

关于如何解决这个问题有什么建议吗?谢谢。

public class ConverterThread extends Thread {

String fileToConvert;
String fileToCreate;
GetSong getSong;



public ConverterThread(String downloadLocationOnDisk, GetSong getSong) {
this.fileToConvert = downloadLocationOnDisk;
this.getSong = getSong;
}


public void run(){
try {
Thread cur=Thread.currentThread();
cur.setPriority(Thread.MAX_PRIORITY);

String downloadLocationOnDisk = fileToConvert;

if(downloadLocationOnDisk.contains(".flv"))
fileToCreate = downloadLocationOnDisk.replace(".flv", ".mp3");

if(downloadLocationOnDisk.contains(".m4a"))
fileToCreate = downloadLocationOnDisk.replace(".m4a", ".mp3");



String cmdLine = "ffmpeg/bin/ffmpeg -i \"" + fileToConvert + "\" \"" + fileToCreate +"\"";

System.err.println(cmdLine);

// run the Unix "ps -ef" command
// using the Runtime exec method:
Process p = Runtime.getRuntime().exec(cmdLine);


BufferedReader stdInput = new BufferedReader(new
InputStreamReader(p.getInputStream()));

BufferedReader stdError = new BufferedReader(new
InputStreamReader(p.getErrorStream()));

String s;

// read the output from the command
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}

// read any errors from the attempted command
System.out.println("Here is the standard error of the command (if any):\n");
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}

} catch (IOException ex) {
Logger.getLogger(ConverterThread.class.getName()).log(Level.SEVERE, null, ex);
}

最佳答案

关于java - 在cmd上执行进程,不处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11783116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com