我能够在linux命令行中执行ffmpeg,如下所示:
./ffmpeg -i input.mp3 -af 'volume=2' output.mp3
但是当我尝试使用Java执行相同的ffmpeg可执行文件时,就像这样:
String ffmpegCommand = "%s -i %s -af 'volume=2' %s";
String command = String.format(ffmpegCommand,"ffmpeg","input.mp3", "output.mp3");
Runtime.getRuntime().exec(command);
我收到以下错误:
No such filter: 'volume=2'
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
这两个命令对我来说似乎不一样,为什么java代码exec失败?
更新:
在删除volume=2
周围的单引号后,它工作正常。最终的Java代码如下所示:
String ffmpegCommand = "%s -i %s -af volume=2 %s";
String command = String.format(ffmpegCommand,"ffmpeg","input.mp3", "output.mp3");
Runtime.getRuntime().exec(command);