5

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

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

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

我该怎么办?

4

1 回答 1

10

在您的第一个命令中,您使用过滤器作为输入选项。我不知道 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使用or-qscale:v选项控制输出质量(仅-qscale在旧 ffmpeg 中调用)。mpeg* 的范围是 1-31,其中 31 是最差的质量。

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

于 2012-09-22T01:50:21.770 回答