使用 runtime.exec()执行 shell 命令和直接在终端执行得到的结果不一样?

2017-06-25 21:49:24 +08:00
 mortonnex

用 java 代码是:

        List<String> command = new ArrayList<String>();
        command.add("ffmpeg");
        command.add("-i");
        command.add("/Users/welcome/Downloads/testVedio/test.mp4");
        command.add("-s");
        command.add("350x240");
        command.add("-y");
        command.add("-threads");
        command.add("4");
        command.add("/Users/welcome/Downloads/testVedio/test/%d.png");
        ProcessBuilder processBuilder = new ProcessBuilder();
        processBuilder.command(command);
        processBuilder.redirectErrorStream(true);
        processBuilder.start();

shell 命令是:

ffmpeg -i /Users/welcome/Downloads/testVedio/test.mp4 -s 350x240 -y -threads 4 /Users/welcome/Downloads/testVedio/test/%d.png

得出来的效果不一样,直接执行命令是正确的,java 代码执行会少生成很多截图

1923 次点击
所在节点    问与答
1 条回复
SoloCompany
2017-06-25 23:11:31 +08:00
你没有 waitFor

那么很可能进程刚启动就被杀死了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/370997

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX