相关疑难解决方法(0)

ProcessBuilder在Mac上提供"没有这样的文件或目录",而Runtime().exec()工作正常

我有一个在Playframework上运行的应用程序,它需要对一些视频文件进行编码.我用了

Process pr = Runtime.getRuntime().exec(execCode)
Run Code Online (Sandbox Code Playgroud)

为此(它完美地工作),但由于我需要输出流和错误流,我试图使用ProcessBuilder(也建议使用).

但我无法让它工作(在MacBook上测试).Runtime方法和ProcessBuilder之间有根本区别吗?

这是我的ProcessBuilder代码(替换时完全相同的代码Runtime.getRuntime().exec())

    String execCode = "/opt/local/bin/ffmpeg -i file [...]"; 
    ProcessBuilder pb = new ProcessBuilder(execCode);
    pb.redirectErrorStream(true);
    pb.directory(new File("/Users/[...]/data/"));
    Process pr = pb.start();
Run Code Online (Sandbox Code Playgroud)

这是控制台输出:

11:00:18,277 ERROR ~ There was a problem with with processing MediaFile[13] with error Error during coding process: Cannot run program "/opt/local/bin/ffmpeg -i /Users/[...]/data/media/1/1/test.mov [...] /Users/[...]/data/media/1/13/encoded.mp3" (in directory "/Users/[...]/data"): error=2, No such file or directory
java.lang.Exception: Error during coding process: Cannot run program "/opt/local/bin/ffmpeg -i /Users/Luuk/Documents/Java/idoms-server/data/media/1/1/test.mov -y -f mpegts -acodec libmp3lame …
Run Code Online (Sandbox Code Playgroud)

java runtime.exec processbuilder playframework

29
推荐指数
1
解决办法
3万
查看次数