我需要使用ffmpeg-normalize(https://github.com/slhck/ffmpeg-normalize)来正确规范我的Java程序中的音频文件,但是ffmpeg-normalize需要手动安装和使用命令。
我认为我可以使用ProcessBuilder在Java中将其自动化,但是事实证明这是不可能的。
ffmpeg-normalize用python编写,因此我尝试了与在Java中运行python命令相关的每个stackoverflow问题。它们都不起作用,似乎Windows只是拒绝让Java通常运行命令。
我也将python添加到了环境变量中。没有骰子。 Windows不断告诉我它无法识别python
,py
或pip
为有效的内部或外部命令。
这是我的最终代码,在此之前,我尝试了所有其他解决方案,包括Runtime.exe(使用“ cmd / c start”以及所有其他衍生版本)。
我的最后一次尝试是从java cmd处理器运行.bat文件,然后让.bat完成其余工作,但不仅是Windows,而且失败。
直接在cmd.exe的cmd中运行pip
(我的意思是在Java程序之外),它可以正常运行并向我显示pip的帮助菜单。从Java应用程序打开cmd时,Windows拒绝一起确认python的存在,如下图所示。
Process process = Runtime.getRuntime().exec("cmd /c start " + installerBat.getAbsolutePath(), null, ffNormExtractDir);
StreamGobbler errorGobbler = new StreamGobbler(process.getErrorStream());
StreamGobbler outputGobbler = new StreamGobbler(process.getInputStream());
errorGobbler.start();
outputGobbler.start();
try {
process.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
我希望Java出生的cmd能够立即且完美地运行命令,但它只是拒绝运行它们。
那么,使ffmpeg-normalize轻而易举地安装到用户的最佳方法是什么?