且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

使用ffmpeg和xfade过滤器合并多个视频文件

更新时间:2022-04-26 02:08:47

您的偏移量不正确.试试:

Your offsets are incorrect. Try:

ffmpeg -i v0.mp4 -i v1.mp4 -i v2.mp4 -i v3.mp4 -i v4.mp4 -filter_complex \
"[0][1]xfade=transition=fade:duration=0.5:offset=3.5[V01]; \
 [V01][2]xfade=transition=fade:duration=0.5:offset=12.1[V02]; \
 [V02][3]xfade=transition=fade:duration=0.5:offset=15.1[V03]; \
 [V03][4]xfade=transition=fade:duration=0.5:offset=22.59,format=yuv420p[video]; \
 [0:a][1:a]acrossfade=d=0.5:c1=tri:c2=tri[A01]; \
 [A01][2:a]acrossfade=d=0.5:c1=tri:c2=tri[A02]; \
 [A02][3:a]acrossfade=d=0.5:c1=tri:c2=tri[A03]; \
 [A03][4:a]acrossfade=d=0.5:c1=tri:c2=tri[audio]" \
-map "[video]" -map "[audio]" -movflags +faststart out.mp4

如何获取xfade offset 值:

How to get xfade offset values:

输入 输入持续时间 + 上一个xfade offset - xfade duration =
v0.mp4 4.00 + 0 - 0.5 3.5
v1.mp4 9.19 + 3.5 - 0.5 12.1
v2.mp4 3.41 + 12.1 - 0.5 15.1
v3.mp4 7.99 + 15.1 - 0.5 22.59
input input duration + previous xfade offset - xfade duration =
v0.mp4 4.00 + 0 - 0.5 3.5
v1.mp4 9.19 + 3.5 - 0.5 12.1
v2.mp4 3.41 + 12.1 - 0.5 15.1
v3.mp4 7.99 + 15.1 - 0.5 22.59

  • 请参见 xfade 使用 ffprobe 获取输入持续时间.
    • See xfade and acrossfade filter documentation for more info.
    • You can get input durations with ffprobe.