将视频的前几秒叠加在同一视频的最后几秒上

将视频的前几秒叠加在同一视频的最后几秒上

我想用 ffmpeg 执行以下操作:

替换最后一个n第一个视频的秒数n同一视频的秒数。前几秒n几秒钟的时间就会逐渐消失。

需要澄清的是,如果n= 2:

  • 取前 2 秒,从视频开头删除。
  • 将这 2 秒叠加到视频的最后 2 秒上,淡入淡出(淡入时间也可以是n

我已经尝试过这个命令:

ffmpeg -i media.mp4 -filter_complex "[0:v]trim=00:02,setpts=PTS-STARTPTS[v0]; [0:v]trim=02:10,setpts=PTS-STARTPTS[v1]; [v0][v1]concat=n=2:v=1:a=0[out]" -map "[out]" output.mp4

这完全没有任何效果,输出文件与我的输入文件相同。

有什么帮助吗?

谢谢 !

答案1

使用

ffmpeg -i media.mp4 -filter_complex "[0:v]trim=0:n,setpts=PTS-STARTPTS,fade=st=0:d=n,format=yuva420p[v0]; [0:v]trim=n,format=yuva420p,colorchannelmixer=aa=0,setpts=PTS-STARTPTS[v1]; [v1][v0]concat=n=2:v=1:a=0[ol];[0:v]overlay,trim=n,setpts=PTS-STARTPTS[out]" -map "[out]" output.mp4

提取前 n 秒并应用淡入淡出效果和添加不透明 alpha 通道。视频的其余部分添加了透明 alpha 通道。第一部分附加到第二部分。然后将整个流叠加在完整的原始视频流上。具有透明 alpha 的叠加部分不可见,因此基本视频可以显示出来,但叠加的最后 n 秒(实际上是应用了淡入淡出效果的视频的前 n 秒)叠加在基本视频的最后 n 秒上。

相关内容