我有一个正在尝试从中创建跳投的视频。例如,我希望命令的输出将原始剪辑的第5帧显示30帧,将OG剪辑的第25帧显示30帧。
假设OG片段为30 FPS
ffmpeg -t 1 -i og_clip.mp4 -filter_complex "
[0]select=eq(n\,5)[H1];[0][H1]overlay[O1];
[0]select=eq(n\,25)[H2];[0][H2]overlay[O2];
[O1][O2]concat=n=2[Merge]" -map "[Merge]" out.mp4
以上方法无法正常工作。
到目前为止,我一直在做的事情包括两个部分:
ffmpeg -i og_clip.mp4 -vf "select=eq(n\,5)" -vframes 1 -y out_0.png
ffmpeg -i og_clip.mp4 -vf "select=eq(n\,25)" -vframes 1 -y out_1.png
ffmpeg -t 1 -i og_clip.mp4 -i out_0.png -i out_1.png -filter_complex "
[0][1]overlay[H1];[0][2]overlay[H2];
[H1][H2]concat=n=2[Merge]" -map "[Merge]" out.mp4
一直在为我工作。唯一的问题是,我要使用的每帧首先转换为png的过程都花费了很长时间。我试图将所有内容压缩为一个命令。我认为png的编码需要这么长时间。
任何帮助将不胜感激!
答案 0 :(得分:1)
使用
ffmpeg -t 1 -i og_clip.mp4 -filter_complex "[0]select=eq(n\,5)+eq(n\,25),settb=1/30,setpts=N*30,fps=30" -an out.mp4
选择帧后,将时间戳调整为相隔30帧。然后fps过滤器会用克隆的帧填补这些空白。