[英]A blocked external process in a swing GUI
我正在使用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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.