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

如何使用FFmpeg实现3段视频的交叉淡入淡出过渡?

实现三段视频的交叉淡入淡出(基于你的两段逻辑扩展)

嘿,我明白你已经搞定两段视频的交叉淡入淡出了,想扩展到三段对吧?其实核心思路就是把两段的逻辑重复叠加——每两段之间都做一次淡入淡出过渡,咱们一步步拆解怎么做:

首先,咱们延续你原来的滤镜逻辑,以三段视频video1.mp4、video2.mp4、video3.mp4为例,设置每段交叉淡入淡出时长为1秒(你可以按需调整),具体命令如下:

ffmpeg -report -i "video1.mp4" -i "video2.mp4" -i "video3.mp4" -an \
-filter_complex \
# 处理第一段视频的主体部分(截取前9秒,可根据实际时长修改end值)
"[0:v]trim=start=0:end=9,setpts=PTS-STARTPTS[a_main]; \
# 第一段的淡出过渡段(最后1秒)
[0:v]trim=start=9:end=10,setpts=PTS-STARTPTS[a_fadeout_src]; \
[a_fadeout_src]format=pix_fmts=yuva420p,fade=t=out:st=0:d=1:alpha=1[a_fadeout]; \

# 第二段的主体部分(去掉开头1秒和结尾1秒的中间段)
[1:v]trim=start=1:end=9,setpts=PTS-STARTPTS[b_main]; \
# 第二段的淡入过渡段(开头1秒)
[1:v]trim=start=0:end=1,setpts=PTS-STARTPTS[b_fadein_src]; \
[b_fadein_src]format=pix_fmts=yuva420p,fade=t=in:st=0:d=1:alpha=1[b_fadein]; \
# 第二段的淡出过渡段(最后1秒)
[1:v]trim=start=9:end=10,setpts=PTS-STARTPTS[b_fadeout_src]; \
[b_fadeout_src]format=pix_fmts=yuva420p,fade=t=out:st=0:d=1:alpha=1[b_fadeout]; \

# 第三段的主体部分(从开头1秒开始)
[2:v]trim=start=1,setpts=PTS-STARTPTS[c_main]; \
# 第三段的淡入过渡段(开头1秒)
[2:v]trim=start=0:end=1,setpts=PTS-STARTPTS[c_fadein_src]; \
[c_fadein_src]format=pix_fmts=yuva420p,fade=t=in:st=0:d=1:alpha=1[c_fadein]; \

# 生成A→B的交叉过渡层
[a_fadeout][b_fadein]overlay[ab_crossfade]; \
# 生成B→C的交叉过渡层
[b_fadeout][c_fadein]overlay[bc_crossfade]; \

# 按顺序拼接所有片段:A主体 → A→B过渡 → B主体 → B→C过渡 → C主体
[a_main][ab_crossfade][b_main][bc_crossfade][c_main]concat=n=5:v=1:a=0[v]" \
-map "[v]" output.mp4

关键参数自定义说明:

  • 片段时长调整:把trim=start=X:end=Y里的X/Y换成你的视频实际时长,比如视频总时长15秒,那主体部分就设为end=14,过渡段设为start=14:end=15。
  • 淡入淡出时长:修改fade滤镜里的d=1,比如要0.5秒过渡就写d=0.5。
  • 拼接片段数:concat=n=5里的数字对应拼接的总片段数,三段视频的过渡逻辑下是5个片段,要是调整过渡方式记得同步修改这个数字。

额外注意:

如果你的视频分辨率、帧率不一致,建议先添加scale、fps滤镜统一参数,避免拼接时出错;如果需要保留音频,去掉-an参数,同时用afade滤镜给音频做对应时长的交叉淡入淡出即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:11:56