You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决ProcessBuilder执行FFmpeg音频合并命令的报错问题?

解决ProcessBuilder执行FFmpeg合并立体声的错误

问题出在你给-filter_complex和-map的参数加了多余的引号。ProcessBuilder会自动处理命令参数的分隔,不需要手动给参数加引号——这些转义后的引号会被FFmpeg当成过滤链的一部分,导致解析时出现"Trailing garbage"错误。

修正后的代码如下:

List<String> command = new ArrayList<>();
command.add("ffmpeg");
command.add("-i");
command.add(file1Path);
command.add("-i");
command.add(file2Path);
command.add("-filter_complex");
// 去掉参数前后的引号
command.add("[0]apad[a];[a][1]amerge[aout]");
command.add("-map");
// 同样去掉引号
command.add("[aout]");
command.add(outputFilePath);

ProcessBuilder processBuilder = new ProcessBuilder(command);
Process process = processBuilder.start();

额外建议:添加错误流读取逻辑,方便后续调试排查问题:

// 读取FFmpeg的错误输出,便于定位问题
InputStream errorStream = process.getErrorStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(errorStream));
String line;
while ((line = reader.readLine()) != null) {
    System.err.println(line);
}
// 等待进程执行完成
process.waitFor();

内容的提问来源于stack exchange,提问作者Ansh Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 14:33:00