如何解决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
相关产品推荐
相关产品推荐

