ffmpeg-使用交叉渐变制作无缝循环

ffmpeg-使用交叉渐变制作无缝循环,ffmpeg,cross-fade,Ffmpeg,Cross Fade,我想对视频的最后x帧和前x帧应用交叉淡入淡出,以获得无缝循环 我该怎么做呢?假设您的视频长度为30秒,淡入度为1秒。你的命令是 ffmpeg -i video.mp4 -filter_complex "[0]split[body][pre]; [pre]trim=duration=1,format=yuva420p,fade=d=1:alpha=1,setpts=PTS+(28/TB)[jt]; [body]trim=1,setpts=PTS-

我想对视频的最后x帧和前x帧应用交叉淡入淡出,以获得无缝循环


我该怎么做呢?

假设您的视频长度为30秒,淡入度为1秒。你的命令是

ffmpeg -i video.mp4 -filter_complex
        "[0]split[body][pre];
         [pre]trim=duration=1,format=yuva420p,fade=d=1:alpha=1,setpts=PTS+(28/TB)[jt];
         [body]trim=1,setpts=PTS-STARTPTS[main];
         [main][jt]overlay"   output.mp4

视频被分成两个相同的流。第一个将被修剪为仅第一秒,添加了alpha通道,然后褪色。第一个流上的最后一个过滤器将其延迟28秒,因为最终输出将修剪原始剪辑的第一秒并与最后一秒重叠。第二个流被修剪为从
t=1
开始,处理后的第一个流覆盖在第二个流上。由于alpha通道在第一个流中淡入淡出,因此它会交叉淡入。

这太棒了!对于30秒的视频,我必须将
(28/TB)
更改为
(29/TB)
。我已将其转换为一个通用bashscript,可以猜测持续时间: