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

如何在C#中使用FFmpeg的xfade转场滤镜拼接多个视频为单个文件

多视频带转场拼接的最优方案

你当前的两两拼接思路存在明显缺陷:多次重复编码会导致不必要的画质损失,同时拼接耗时会随视频数量成倍增长,不推荐使用。

最优方案是直接调用ffmpeg的xfade(视频交叉淡入淡出)+acrossfade(音频交叉淡入淡出)滤镜链,单次编码即可完成所有视频的拼接,仅需一次生成最终文件,无额外画质损失。

具体操作步骤

  • 第一步:先把所有待拼接的视频参数统一,确保分辨率、帧率、音频采样率完全一致,避免滤镜执行报错
  • 第二步:构造ffmpeg滤镜参数,假设你有4个待拼接视频,转场时长设为1秒,示例命令如下:
ffmpeg -i input1.mp4 -i input2.mp4 -i input3.mp4 -i input4.mp4 \
-filter_complex \
"[0:v][1:v]xfade=transition=fade:duration=1:offset=9[v1]; \
[v1][2:v]xfade=transition=fade:duration=1:offset=18[v2]; \
[v2][3:v]xfade=transition=fade:duration=1:offset=27[vout]; \
[0:a][1:a]acrossfade=d=1[a1]; \
[a1][2:a]acrossfade=d=1[a2]; \
[a2][3:a]acrossfade=d=1[aout]" \
-map "[vout]" -map "[aout]" output.mp4

命令里的offset参数填写前一个视频的总时长减去转场时长即可,比如第一个视频总时长10秒,转场设置为1秒,offset就填9

  • 如果你需要批量生成参数,可以用简单的Python脚本读取所有视频的时长自动拼接滤镜参数,比shell脚本更容易上手调试

无转场场景的极速方案

如果你的视频参数完全一致且不需要添加转场效果,直接用ffmpeg的concat demuxer是速度最快的方案,无需重编码:

  1. 新建filelist.txt,按拼接顺序写入所有视频路径:
file 'input1.mp4'
file 'input2.mp4'
file 'input3.mp4'
  1. 运行合并命令:
ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:15:02