如何将字符串发送到ffmpeg';Java中的输入
我对java非常陌生,尽管我可能会尝试,但我找不到任何示例来帮助我。我正在将ffmpeg作为一个进程运行,并解析stderr以获取各种数据位—所有这些都工作正常,但我想从gui菜单项向ffmpeg的输入发送一个“q\n”命令,以便在必要时正常退出它。所以我要做的就是以编程方式向ffmpeg发送一个字符串,相当于从终端发送q return。提前谢谢 编辑这里是代码的相关(简化)部分如何将字符串发送到ffmpeg';Java中的输入,java,ffmpeg,stdin,Java,Ffmpeg,Stdin,我对java非常陌生,尽管我可能会尝试,但我找不到任何示例来帮助我。我正在将ffmpeg作为一个进程运行,并解析stderr以获取各种数据位—所有这些都工作正常,但我想从gui菜单项向ffmpeg的输入发送一个“q\n”命令,以便在必要时正常退出它。所以我要做的就是以编程方式向ffmpeg发送一个字符串,相当于从终端发送q return。提前谢谢 编辑这里是代码的相关(简化)部分 private void jButton1ActionPerformed(java.awt.event.Actio
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { Thread thread = new Thread() {
public void run()
BufferedReader error_reader,input_reader;
InputStreamReader error_isr,input_isr;
String ffmpeg_command = "ffmpeg " + overwrite + " -i " + "\"" + currentfilestring + "\"" + " " + stream + " " + test + " " + findsilence + " " + videocodec + " -b:v " + videoqual + " " + audiocodec + " -ac 2 -ab " + audioqual + " " + res + " " + aspectratio + " " + framerate + " " + "\"" + destdir + destfile + "\"";
System.out.println(ffmpeg_command);
try {
OutputStream stdout;
InputStream stdin;
InputStream stderr;
String errorstr,inputstr;
//Run the ffmpeg
Process ffmpeg = Runtime.getRuntime().exec(ffmpeg_command, null, new File(userDir));
//Get stdin,stderr + stdout
stdin = ffmpeg.getInputStream();
stderr = ffmpeg.getErrorStream();
stdout = ffmpeg.getOutputStream();
stdout.write("\r\n".getBytes());
stdout.flush();
stdout.close();
error_isr = new InputStreamReader(stderr);
error_reader = new BufferedReader(error_isr);
input_reader = new BufferedReader(input_isr);
while (!error_reader.ready()) {
}
while ((errorstr = error_reader.readLine()) != null) {
if(stopconv =="yes"){
//-------------------------------------------------------------------------------------
// TRYING TO INPUT "q\n" TO FFMPEG HERE
//-------------------------------------------------------------------------------------
}
error_isr.close();
error_reader.close();
stdin.close();
stderr.close();
jProgressBar1.setValue(0);
ffmpeg.destroy();
} catch (Exception e) {
e.printStackTrace();
}
};
thread.start();
}
您可能需要添加一个代码示例,说明您正在尝试执行的操作。我认为您可以使用
进程并使用输入流Yohanes传递输入,因为进程已经在运行它启动ffmpeg,。已经关注了你的链接谢谢你可能会回答问题Yohannes,尝试从你发送的链接改编,但他们没有工作,我担心