首页 > 解决方案 > FFMPEG 保存多个帧并用作电影

问题描述

我有一个视频,我正试图从中创建跳投。例如,我希望我的命令输出显示原始剪辑的第 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 的编码需要这么长时间。

任何帮助将非常感激!

标签: ffmpeg

解决方案


利用

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 过滤器将用克隆的帧填补这些空白。


推荐阅读