因业务需要,我使用Java调用命令行执行ffmpeg命令
String command = "ffmpeg -i E:\\translation\\target\\classes\\mediaFile\\xinwen_20191019_0600_0630.mp4 -acodec libmp3lame -ac 1 -ar 16000 E:\\translation\\target\\classes\\mediaFile\\xinwen_20191019_0600_0630.mp3";
ProcessBuilder builder = new ProcessBuilder(command);
Process process = builder.start();
该命令放到windos shell里面可以直接执行,但是用Java调用却报错
Caused by: java.io.IOException: CreateProcess error=2, 系统找不到指定的文件。
今天我在进程工作空间内放置了一个text.bat
并执行命令:
成功执行,也就是说,processBuilder会从工作空间找命令,不在工作空间内的命令无效,但我还是很纠结,我不可能把ffmepg和class文件放在一起啊。
而且用 Runtime.getRuntime().exec去调用ffmepg完全没有问题,为什么啊,为什么用processBuilder调就不行啊
浪费大佬时间了,参数明明是一个字符串数组,我扔了一整个字符串进行,简直要蠢死.
Java拿字符串数组的第一个值确定要调用什么程序,我把一整个命令变成一个字符串肯定是不行的