Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将字符串发送到ffmpeg';Java中的输入_Java_Ffmpeg_Stdin - Fatal编程技术网

如何将字符串发送到ffmpeg';Java中的输入

如何将字符串发送到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

我对java非常陌生,尽管我可能会尝试,但我找不到任何示例来帮助我。我正在将ffmpeg作为一个进程运行,并解析stderr以获取各种数据位—所有这些都工作正常,但我想从gui菜单项向ffmpeg的输入发送一个“q\n”命令,以便在必要时正常退出它。所以我要做的就是以编程方式向ffmpeg发送一个字符串,相当于从终端发送q return。提前谢谢 编辑这里是代码的相关(简化)部分

 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,尝试从你发送的链接改编,但他们没有工作,我担心