基本的FFmpeg转换错误?

时间:2018-03-26 16:25:49

标签: java file ubuntu video ffmpeg

我正在尝试使用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)

这是该文件夹的快照: Snapshot

1 个答案:

答案 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的完整路径