我正在尝试使用ffmpeg将.mp4转换为.opus文件。我的桌面上有一个名为Indexing
的目录,其中有一个名为40.mp4
的测试文件。我已经尝试使用命令ffmpeg -i 40.mp4 -b:a 320k 40.opus
,它始终可以在Indexing目录中设置终端,但使用Java尝试相同的操作总是失败:
注意:我正在运行Kubuntu 17.10
private static final Path INDEXING_PATH = Paths.get("/home/sarah/Desktop/Indexing");
Process proc = new ProcessBuilder("ffmpeg -i 40.mp4 -b:a 320k 40.opus") .directory(INDEXING_PATH.toFile()).inheritIO().start();
收率:
Exception in thread "main" java.io.IOException: Cannot run program "ffmpeg -i 40.mp4 -b:a 320k 40.opus" (in directory "/home/sarah/Desktop/Indexing"): error=2, No such file or directory at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
答案 0 :(得分:1)
Java正在寻找一个名为ffmpeg -i 40.mp4 -b:a 320k 40.opus
的程序,实际上它应该以{{1}}作为参数调用ffmpeg
要解决此问题,请更改
-i 40.mp4 -b:a 320k 40.opus
到
Process proc = new ProcessBuilder("ffmpeg -i 40.mp4 -b:a 320k 40.opus")
.directory(INDEXING_PATH.toFile()).inheritIO().start();
请查看This了解更多
另外,尝试在命令的Process proc = new ProcessBuilder("ffmpeg", "-i", "40.mp4", "-b:a", "320k", "40.opus")
.directory(INDEXING_PATH.toFile()).inheritIO().start();
部分添加ffmpeg的完整路径