![将视频的前几秒叠加在同一视频的最后几秒上](https://linux22.com/image/1584993/%E5%B0%86%E8%A7%86%E9%A2%91%E7%9A%84%E5%89%8D%E5%87%A0%E7%A7%92%E5%8F%A0%E5%8A%A0%E5%9C%A8%E5%90%8C%E4%B8%80%E8%A7%86%E9%A2%91%E7%9A%84%E6%9C%80%E5%90%8E%E5%87%A0%E7%A7%92%E4%B8%8A.png)
我想用 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 秒上。