xfade 过渡耗时

xfade 过渡耗时

大家好,我在使用 xfade concat 时遇到了一些问题。

我有 4 个视频:

第一有20秒。

第二个有6秒。

第三有5秒。

第四名9秒。

全部的:40秒。

ffmpeg -y -c:v h264_cuvid -i 0.mp4 -i 1.mp4 -i 2.mp4 -i 3.mp4 -filter_complex " [0][1]xfade=transition=fade:duration=1:offset=20,format=yuv420p[1v];[1v][2]xfade=transition=fade:duration=1:offset=26,format=yuv420p[2v];[2v][3]xfade=transition=fade:duration=1:offset=31,format=yuv420p[v] " -c:v h264_nvenc -b:v 10M -r 25 -map "[v]" finalVideo.mp4

通过这个命令我设法获得了 40 秒的视频,但它在中间被阻挡了,所以它不起作用。

ffmpeg -y -c:v h264_cuvid -i 0.mp4 -i 1.mp4 -i 2.mp4 -i 3.mp4 -filter_complex " [0][1]xfade=transition=fade:duration=1:offset=19,format=yuv420p[1v];[1v][2]xfade=transition=fade:duration=1:offset=24,format=yuv420p[2v];[2v][3]xfade=transition=fade:duration=1:offset=29,format=yuv420p[v] " -c:v h264_nvenc -b:v 10M -r 25 -map "[v]" finalVideo.mp4

使用第二条命令,我设法让它工作,但现在它有 38 秒。那么秒数去哪儿了?我使用了这个工具,https://romander.github.io/ffmpeg-script-generator/

https://i.stack.imgur.com/LA2se.png

但还是不太好。

我想要 40 秒的过渡时间。

这是另一次尝试@llogan

https://i.stack.imgur.com/3XU3X.png

答案1

xfade 过渡耗时

转变淡入淡出占用时间,因此输出持续时间不会等于输入持续时间的总和。

简单举例:每个输入时长 3 秒,视频重叠处的淡入淡出过渡时长 1 秒。结果是 5 秒的输出。

12345
===
  ===

在每个视频结尾添加定格画面

您可以使用平板过滤器添加更多时间到视频中以牺牲淡入淡出。但由于定格效果,结果可能看起来很奇怪。

ffmpeg -i input0.mp4 -i input1.mp4 -filter_complex "[0:v]tpad=stop_mode=clone:stop_duration=1[v0];[v0][1:v]xfade=transition=fade:duration=1:offset=10" output.mp4

使用淡入淡出 + 连接滤镜

如果你想避免输出持续时间较短,那么另一种方法是使用黑色淡入淡出(或你想要的任何颜色)褪色过滤并连接连接筛选:

ffmpeg -i 20sec.mp4 -i 6sec.mp4 -i 5sec.mp4 -i 9sec.mp4 -filter_complex "[0]fade=t=out:st=19.5:d=0.5[fade1];[1]fade=t=in:st=0:d=0.5,fade=t=out:st=5.5:d=0.5[fade2];[2]fade=t=in:st=0:d=0.5,fade=t=out:st=4.5:d=0.5[fade3];[3]fade=t=in:st=0:d=0.5[fade4];[fade1][fade2][fade3][fade4]concat=n=4:v=1:a=0" output.mp4

相关内容