收集的命令
我正在使用java swing和ffmpeg开发编码器。我创建了一个GUI界面,在其中指定输入(devices, frame rate, bitrate..)
。然后调用ffmpeg
进行编码和流。
我的问题是编码类从主类执行得很好,但从swing接口(特别是jButtonactionperformed()
)调用时被阻塞。
有人能帮我吗?
这是我的按钮动作
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
Encode s = new Encode();
s.Encode(cmdLine);
}
这是我的编码方法
public void Encode(String cmdLine) {
try {
Process p2 = Runtime.getRuntime().exec(cmdLine);
//logProcessOutputAndErrors(p2);
}
catch(Exception ex) {
ex.printStackTrace();
}
}
Ps: Cmdline是我从输入
首先,将Encode方法转换为Runnable类。
public class Encode implements Runnable {
protected String cmdLine;
public Encode(String cmdLine) {
this.cmdLine = cmdLine;
}
@Override
public void run() {
try {
Process p2 = Runtime.getRuntime().exec(cmdLine);
// logProcessOutputAndErrors(p2);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
然后,将类实例化为Thread,并启动它。
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
Encode s = new Encode(cmdLine);
new Thread(s).start();
}