如何用ffmpeg提取固定数量的帧?

时间:2016-03-10 09:26:32

标签: video ffmpeg frame extraction

我试图从一堆视频中统一提取固定数量的帧(比如每个视频50帧,总共10,000个视频)。

由于持续时间不同,我计算了每个视频的理想输出fps,并将其作为ffmpeg提取的参数,但未能获得所需的帧数。

有谁知道如何使用ffmpeg或其他工具提取固定数量的帧?谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用缩略图过滤器。它从每组n帧中选择一个代表性帧(默认为100)

因此,如果您的源视频长达10分钟且速度为25 fps,那么它总共有15000帧。因此,要选择50帧,您可以使用

ffmpeg -i input.mp4 -vf thumbnail=300,setpts=N/TB -r 1 -vframes 50 inputframes%03d.png

这将从每组300帧中选择一个代表性帧,因此从15000中选择50帧。尽管名称,缩略图只是选择帧,但它不会缩小它们以供缩略图使用。同时设置setptsr以避免重复或丢弃的帧。设置vframes,因此输出的图像不超过50张。

如果您需要严格选择每个nth框架,请使用

ffmpeg -i input.mp4 -vf select='not(mod(n\,300))',setpts=N/TB -r 1 -vframes 50 inputframes%03d.png