ffmpeg关键帧提取

时间:2012-09-21 22:22:17

标签: ffmpeg keyframe

我一直在尝试使用ffmpeg 0.11.1从视频中提取关键帧。到目前为止,我尝试过的所有命令都不提取关键帧,而是返回所有帧,即25fps *输出中的总帧时间数。 我尝试将keyint_min设置为25,以确保每秒有一个关键帧的最大值。

ffmpeg -vf select="eq(pict_type\,PICT_TYPE_I)" -g 250 -keyint_min 25 -i C:\test.mp4 -vsync 2 -f image2 C:\testTemp\thumbnails-%02d.jpeg

但仍然会返回所有帧。

然后我尝试将关键帧分开20秒。

ffmpeg -i C:\test.mp4 -vf select='eq(pict_type\,I)*(isnan(prev_selected_t)+gte(t-prev_selected_t\,20))' -vsync 0 -f image2 C:\testTemp\%09d.jpg

同样的结果,返回所有帧。

我该怎么办?

1 个答案:

答案 0 :(得分:9)

在第一个命令中,您使用过滤器作为输入选项。我不知道ffmpeg将如何解释它。

试试这个:

ffmpeg -i C:\test.mp4 -vf select='eq(pict_type\,I)',setpts='N/(25*TB)' C:\testTemp\%09d.jpg

25更改为信号源的帧速率:NTSC视频为30000/1001,NTSC电影为24000/1001,PAL为25,等等。

使用-q:v-qscale:v选项控制输出质量(在旧ffmpeg中仅称为-qscale)。 mpeg *的范围是1-31,其中31是最差的质量。

下次记得在superuser.com上询问ffmpeg使用问题,因为stackoverflow专门用于编程。