ffmpeg - 使用交叉淡入淡出进行无缝循环

ffmpeg - make a seamless loop with a crossfade

我想对视频的最后 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 通道在第一个流中淡入淡出,因此它交叉淡入。