我试图加入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个视频制作这个作品。
我不需要任何音频。有什么想法吗?
干杯,
答案 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