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

Flutter使用ffmpeg合并视频时出现单视频重复拼接、音频失效问题

问题根因
  • 视频重复拼接:你的concat滤镜输入流声明为[0:v][0:v],两次都调用了第一个输入文件的视频流,没有用到第二个视频的内容,自然会出现第一个视频重复拼接两次的问题。
  • 输出无音频:concat参数中的a=0代表关闭音频流输出,同时你也没有将两个输入文件的音频流传入滤镜处理,最终输出自然没有音频。
修复后的实现代码
final appDir = await getExternalStorageDirectory();
String rawDocumentPath = appDir!.path;
final outputPath = '$rawDocumentPath/videomerge.mp4';

final FlutterFFmpeg _flutterFFmpeg = FlutterFFmpeg();

// 修正后的ffmpeg命令
String commandToExecute = '-y -i ${VideoFiles[0].path} -i ${VideoFiles[1].path} '
    '-filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[outv][outa]" '
    '-map "[outv]" -map "[outa]" $outputPath';

_flutterFFmpeg.execute(commandToExecute).then((rc) => print("FFmpeg process exited with rc $rc"));
可选优化说明
  • 如果两个待拼接的视频编码、分辨率、帧率完全一致,可以在命令末尾加上-c:v copy -c:a copy,直接复用原有编码无需转码,大幅提升拼接速度。
  • 如果两个视频参数不一致,不要添加copy参数,让ffmpeg自动转码统一参数,避免出现拼接后画面异常、音画不同步的问题。

内容的提问来源于stack exchange,提问作者Madhusri J

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 02:24:03