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

如何在FFmpeg拼接视频时添加统一时长的交叉淡入淡出过渡?

FFmpeg 视频拼接添加交叉淡入淡出过渡

修改后的命令(以1秒交叉淡入淡出为例)

ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -f lavfi -t 0.1 -i anullsrc -filter_complex "[0:v]scale=3840:2160:force_original_aspect_ratio=decrease,pad=3840:2160:-1:-1,setsar=1,fps=30,format=yuv420p[v0]; [1:v]scale=3840:2160:force_original_aspect_ratio=decrease,pad=3840:2160:-1:-1,setsar=1,fps=30,format=yuv420p[v1]; [2:v]scale=3840:2160:force_original_aspect_ratio=decrease,pad=3840:2160:-1:-1,setsar=1,fps=30,format=yuv420p[v2]; [v0][v1]xfade=transition=crossfade:duration=1:offset=auto[v01]; [v01][v2]xfade=transition=crossfade:duration=1:offset=auto[v]; [3:a]aloop=loop=-1:size=2e9[a]" -map "[v]" -map "[a]" -c:v libx264 -c:a aac -movflags +faststart output3.mp4

关键修改说明

  • 替换原有的concat滤镜为xfade滤镜链:
    • 用xfade滤镜实现交叉淡入淡出,transition=crossfade指定过渡类型,duration=1设置过渡时长(可自行调整,比如改为0.5即0.5秒过渡)
    • offset=auto参数让FFmpeg自动计算每段视频的过渡起始时间,无需手动提前获取视频时长
    • 按[前一段处理结果][下一段视频]xfade=...的格式,依次串联所有视频段
  • 音频部分新增aloop滤镜循环空音频,确保音频长度匹配添加过渡后的总视频时长

通用方法总结

只要所有预处理后的视频规格统一(分辨率、帧率、像素格式一致),就可以通过xfade的offset=auto参数实现自动过渡,不用手动计算每段视频的精确时长。如果要拼接更多视频,继续按相同的xfade串联逻辑扩展即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:40:40