当前位置: 首页 > 面试题库 >

从Java的processbuilder执行的ffmpeg在Windows 7下不会返回

鲜于喜
2023-03-14
问题内容

我试图建立一个调用ffmpeg二进制文件的ProcessBuilder。我的问题是调用它,它在MacOs,Ubuntu和WindowsXp下完美返回,但是在Windows7下,waitFor()永不返回。

有谁在Windows 7下有类似的经历?任何帮助,将不胜感激!

我的命令:

ProcessBuilder pb = new ProcessBuilder( );

pb.command( "C:\\Windows\\System32\\cmd.exe", "/c", "c:\\ffmpeg\\bin\\ffmpeg.exe", "-version" );

也尝试过这些:

pb.command( "c:\\ffmpeg\\bin\\ffmpeg.exe", "-version" ); 
pb.command( "C:\\Windows\\System32\\cmd.exe", "/c", "start c:\\ffmpeg\\bin\\ffmpeg.exe -version" );

结果是一样的。:(


问题答案:

看起来您的进程在其输出和/或错误流中写入了一些内容。它们的缓冲区溢出和处理块。为了避免这种情况,您应该读出并错误处理流。

有关更多信息,请参见“
当Runtime.exec()不会出现时




 类似资料:
  • 问题内容: 当我使用执行命令时,它如何知道在哪里寻找该命令?使用此技巧,我将PATH变量(通过检查进行了验证)修改为错误(空,工作目录等),但ProcessBuilder仍然可以执行sort,echo,bash等。它是怎么做到的? 注意:我特定的开发环境是OSX,但是此代码也将在Red Hat Enterprise Linux上运行。 问题答案: 该文件说 一个命令,一个字符串列表,表示要调用的外

  • 堆栈跟踪: cat://opt/mapr/zookeeper/zookeeeperversion:没有这样的文件或目录16/10/25 07:41:12信息Sqoop.Sqoop:运行Sqoop版本:1.4.6-mapr-1609 16/10/25 07:41:12警告工具。basesqooptool:在命令行设置密码不安全。考虑改用-p。16/10/25 07:41:13错误tool.bases

  • 问题内容: 我正在尝试使用Linux下的ProcessBuilder类将mp3文件解码为wav文件。由于某些原因,该过程不会停止,因此我必须手动取消它。 有人可以给我一个提示。我认为引用的代码很容易重现: jstack的输出 问题答案: 您需要清空进程的输出(通过)和错误(通过)流,否则可能会阻塞。 引用过程文档: 由于某些本机平台仅为标准输入和输出流提供有限的缓冲区大小,因此未能及时写入子流程的

  • 我试图使用Java的类来执行包含管道的命令。例如: 然而,我得到了一个错误: 然后: 尽管该命令在命令行中运行得很好,但我无法让执行将其输出重定向到另一个的命令。 有没有办法做到这一点?

  • 问题内容: 我有一个Java应用程序,用于准备操作系统命令并给我一个对象。(实际的os命令是使用cygwin在ssh上进行rsync的)。 这在Windows中运行良好,但是,如果我想停止使用它的进程将不会杀死子ssh和rsync进程……..我必须使用Windows任务管理器手动将其杀死。 是否有可能在我打电话之前以某种方式获取该进程的信息并发送ctrl-c ? 如果有人对解决方法有任何想法,那就

  • 我正在编写一个脚本,将MKV或AVI等视频文件转换成MP4,然后从web流媒体中准备它们。我希望我的输出使用H.264和AAC编解码器。 到目前为止,我的命令如下所示: 然而,当编解码器已经是H.264时,它仍然对其进行多路复用,它表示:(H264->libx264)。 如果我将'-vcodec h264'替换为'-vcodec copy',当编解码器是H.264时,它的速度会快得多,但如果输入文