ffmpeg配了环境变量,在cmd中可以正常使用,Java使用processbuilder调用cmd命令就报错无法执行?

ffmpeg配了环境变量,在cmd中可以正常使用,Java使用processbuilder调用cmd命令就报错无法执行,

public void test3() throws Exception {
        ProcessBuilder builder = new ProcessBuilder("ffmpeg -i E:\\football.mp4");
        builder.redirectErrorStream(true);
        try {
            Process process = builder.start();
            final StringBuilder stringBuilder = new StringBuilder();
            final InputStream inputStream = process.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream,"GBK"));
            String line;
            int i = 1;
            try {
                while ((line = reader.readLine()) != null) {
                    System.out.println("读取第"+ i++ +"行:"+line);
                    stringBuilder.append(line);
                }
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();

            }
        } catch (Exception e) {
            throw new RuntimeException("ffmpeg执行异常" + e.getMessage());
        }
    }

报错信息

java.lang.RuntimeException: ffmpeg执行异常Cannot run program "ffmpeg -i E:\football.mp4": CreateProcess error=2, 系统找不到指定的文件。

文件位置是对的,也是存在的 同样的命令 cmd直接执行时可以的

文件权限和ffmpeg文件夹的权限也修改过:
D:\ffmpeg /T /E /C /G everyone:F

到底是为什么啊?

2个回答

我也出现这个问题,原因是ffmpeg是在Java进程启动过后,才后添加ffmpeg的环境变量,一开始怎么找都没找到原因,后来想想,会不会是jvm加载环境变量机制不一样,随后我就重启了电脑,再执行程序,就没出现这个问题了。初步猜测就是JVM加载环境变量的机制问题,具体得验证一下才知道

python 可以解决
先安装包

pip install pydub

导入

from pydub import AudioSegment

使用

def trans_mp3_to_wav(filepath):
    song = AudioSegment.from_mp3(filepath)
    song.export("now.wav", format="wav")
trans_mp3_to_wav('f:\\MyAudio_1.mp3')

即可用pydub使用 ffmpeg

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐