ffmpeg里转场transition

主要思路

使用复杂滤镜 filter_complex 里的 xfade

简化思路

直接用简单滤镜 fade

详情

单个转场滤境是很简单的,就是使用 xfade滤镜,里面支持非常多的算法,详见参考。

ffmpeg -i v1.mp4 -i v2.mp4 -filter_complex "xfade=transition=rectcrop:duration=1:offset=1" -y t1.mp4

-i 就是输入视频文件,转场是使用filter_complex,xfade要求至少2个输入视频

-filter_complex 就是用过滤器,xfade就是转场过滤器,注意要使用最新版,旧版不保证有这个功能,transition=rectcrop:duration=1:offset=1 这一串是xfade的内部参数,transition是效果,参见文章最后。duration是指转场的持续时长,offset是指前一个视频做转场的起始位置,是从视频头开始算。

相当于两个视频有一部分要重合起来,那么重合多少是由 offset来定的, duration则是来制作多长时间的转场效果,就是将这部分重合的用算法生成多长时间的视频。

下面是示意图

        |<==offset
        |<==duration==>|
AAAAAAAAAAAAAAAAAAAAAAAA
        BBBBBBBBBBBBBBBBBBBBBBBBBBB

-y 很简单就是强制覆盖文件不再询问

如果多个视频怎么办,实际上ffmpeg可以在一行命令里运行多个视频,但是未必就是件好事,因为参数会变得很混乱,可以考虑多次处理。

还有种简单思路,如果要求不高,那么其实不需要把两个视频连起来,只要在后面那个视频开头加上一个fade效果,当然这个已经算不上转场了,但是实现起来便捷,效果也还可以,也是让制作者把重心放在内容上。

fade滤镜基本上是这样用的

ffmpeg -i input.mp4 -vf fade=t=in:s=0:d=1 -y out.mp4

参考

所有转场效果: Xfade – FFmpeg

xfade官方文档:FFmpeg Filters Documentation

fade滤镜:FFmpeg Filters Documentation

你可能感兴趣的:(ffmpeg,视频编解码)