ffmpeg使用crossfade连接3个视频

时间:2017-01-10 06:30:25

标签: ffmpeg

我试图加入3个视频并加上淡入淡出效果。

我可以为2个视频工作(来自stackoverflow,但无法找到链接):

ffmpeg -y -i part1.mp4 -i part2.mp4 -f lavfi -i color=black:s=1920x1080 -filter_complex \
"[0:v]format=pix_fmts=yuva420p,fade=t=out:st=10:d=1:alpha=1,setpts=PTS-STARTPTS[va0]; \
 [1:v]format=pix_fmts=yuva420p,fade=t=in:st=0:d=1:alpha=1,setpts=PTS-STARTPTS+10/TB[va1]; \
 [2:v]trim=duration=20[over]; \
 [over][va0]overlay[over1]; \
 [over1][va1]overlay=format=yuv420[outv]" \
-vcodec libx264 -map [outv] merged.mp4

但是无法弄清楚如何为3个视频制作这个作品。

我不需要任何音频。有什么想法吗?

干杯,

2 个答案:

答案 0 :(得分:4)

好吧所以我不确定这是否是最好的方法,但我得到了它的工作:

ffmpeg -y -i part1.mp4 -i part2.mp4  -i part3.mp4 -f lavfi -i color=black:s=1920x1080 -filter_complex \
"[0:v]format=pix_fmts=yuva420p,fade=t=out:st=10:d=1:alpha=1,setpts=PTS-STARTPTS[v0]; \
 [1:v]format=pix_fmts=yuva420p,fade=t=in:st=0:d=1:alpha=1,fade=t=out:st=10:d=1:alpha=1,setpts=PTS-STARTPTS+10/TB[v1]; \
 [2:v]format=pix_fmts=yuva420p,fade=t=in:st=0:d=1:alpha=1,fade=t=out:st=10:d=1:alpha=1,setpts=PTS-STARTPTS+20/TB[v2]; \
 [3:v]trim=duration=30[over]; \
 [over][v0]overlay[over1]; \
 [over1][v1]overlay[over2]; \
 [over2][v2]overlay=format=yuv420[outv]" \
-vcodec libx264 -map [outv] merge.mp4

答案 1 :(得分:2)

ffmpeg-concat是实现所需内容的最简单方法,允许您使用一堆性感的OpenGL过渡,默认为交叉渐变。

ffmpeg-concat 0.mp4 1.mp4 2.mp4 -o out.mp4

ffmpeg-gl-transition是一个更复杂的自定义ffmpeg过滤器,它允许您使用GLSL在两个视频流之间平滑过渡。此过滤器比此处列出的替代方案更易于使用和自定义。

./ffmpeg -i 0.mp4 -i 1.mp4 -filter_complex "gltransition=duration=4:offset=1.5" out.mp4