我是使用ffmpeg.exe来进行视频格式的转换的:
第一:我执行一个main方法,这时(java.exe)这个进程就会被load到内存中被执行,然后继续执行main的主线程。
第二:这时我又开了一个其他线程,来执行视频的格式转换,此时会帮我新创建出一个新进程(ffmpeg.exe)来。
第三:这时候出现了两个进程,随之而来的也出现了问题。
经过分析测试发现:
1、只有java.exe进程结束后,才会执行ffmpeg这个进程。这并不是我想要的。
2、我需要的执行顺序是这样:先执行java.exe进程,再转码进程ffmpeg.exe执行完,然后再继续java.exe进程
3、因为在执行ffmpeg.exe这个进程中,我需要通过java.exe进程 来检测ffmpeg.exe进程的视频转码是否完成,返回给客户端,判断是否继续执行
我的问题:
1、java在创建进程的时候是否可以设置该进程的优先级?
2、我可以通过java来获取一个进程的执行时间么?
3、为什么只有在java.exe进程结束后才会执行ffmpeg.exe进程?
4、默认的cpu调度进程的算法是什么算法啊?(windows)
特别说明:
1、可能我的表达不是很清楚,各位大神的帮忙,小弟不胜感激。
2、文字会比较多,如果看不太懂,我可以具体说说
你的需求就是在java的主进程中调用一个ffmpeg.exe,这个在java中应该是这样的代码:
String[] cmdArray = buildComStringArray(cmd);//忽略实现cmd就是你的fmpeg.exe
ProcessBuilder pb = new ProcessBuilder(cmdArray);
pb.redirectErrorStream(true);
Process child = pb.start();
然后就可以使用child.waitFor();等待结束后继续你的java其他业务逻辑.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。