簡體   English   中英

swing GUI中被阻止的外部進程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM