Java中用ffmpeg-cli-wrapper拼接视频遇Filter concat输出未连接问题
解决FFmpegBuilder中添加-map "[v]" -map "[a]"的问题
直接用FFmpegBuilder的addOutputMap()方法就能实现终端里-map "[v]" -map "[a]"的效果,把滤镜输出的标签作为参数传进去就行,下面是完整的示例代码:
// 假设你有一个动态的输入文件列表 List<String> inputFiles = Arrays.asList("video1.mp4", "video2.mp4", "video3.mp4"); int inputCount = inputFiles.size(); FFmpegBuilder builder = new FFmpegBuilder(); // 循环添加所有输入文件 for (String input : inputFiles) { builder.addInput(input); } // 添加concat滤镜,n是输入数量,v=1/a=1表示保留1路视频/音频流,输出标签[v][a] builder.addFilter(String.format("concat=n=%d:v=1:a=1[v][a]", inputCount)); // 关键:添加映射,对应终端的-map "[v]"和-map "[a]" builder.addOutputMap("[v]"); builder.addOutputMap("[a]"); // 设置输出文件及相关参数(比如编码格式,按需添加) builder.addOutput("final_output.mp4") .setVideoCodec("libx264") .setAudioCodec("aac") .done(); // 后续执行FFmpeg命令的代码 FFmpegExecutor executor = new FFmpegExecutor(FFmpeg.atPath()); executor.createJob(builder).run();
原理很简单:concat滤镜生成的[v]和[a]是未连接的输出流,必须通过addOutputMap()明确告诉FFmpeg要把这些流映射到输出文件里,这样就不会再出现“Filter concat has an unconnected output”的错误了。
内容的提问来源于stack exchange,提问作者Thor
相关产品推荐
相关产品推荐

