我有 20 分钟长的视频。使用 -ss 和 -ti 提取了此视频的某些部分,并在某种视频编辑工具(例如 After Effects)中对其进行了编辑。现在我想将这些部分放回其原始位置。这些部分不需要在“0 毫秒位置”开始或结束,这意味着带有选项 enable=between(t,start_sec,end_sec) 的过滤器“overlay”对我来说不是一个选项。我该怎么做?如果我可以在一次 ffmpeg 传递中叠加多个片段,那就太好了
答案1
使用 concat 过滤器重新连接各部分。假设您有 2-3 分钟 | 5-6 分钟 | 12-13 分钟的部分,并想将它们重新连接到原始视频:
ffmpeg -i original.mp4 -i Edited_Part_1.mp4 -i Edited_Part_2.mp4 -i Edited_Part_3.mp4 -filter_complex "[0]select='between(t,0,60)'[Orig_Part_1]; ^
[0]select='between(t,180,300)'[Orig_Part_2]; ^
[0]select='between(t,360,720)'[Orig_Part_3]; ^
[0]select='between(t,780,1200)'[Orig_Part_4]; ^
[Orig_Part_1][1][Orig_Part_2][2][Orig_Part_3][3][Orig_Part_4]concat=n=7:v=1:a=1[video];[video]setpts=N/FRAME_RATE/TB[video]" -c:v libx264 Output.mp4