Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ffmpeg keyframe extraction

I have been trying to extract keyframes from video using ffmpeg 0.11.1 . So far all the commands I have tried do not extract keyframes but return all the frames ie 25fps*total time number of frames in the output. I tried setting the keyint_min as 25 to make sure there is a amximum of 1 keyframe per second.

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

But still all the frames are returned.

Then i tried, to separate the keyframes by 20 seconds.

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

Again same result, all the frames are returned.

What should I do?

like image 976
Shikhar Shrivastav Avatar asked Sep 21 '12 22:09

Shikhar Shrivastav


1 Answers

In your first command you are using the filter as an input option. I don't know how ffmpeg will interpret that.

Try this:

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

Change 25 to the frame rate of your source: 30000/1001 for NTSC video, 24000/1001 for NTSC film, 25 for PAL, etc.

Control output quality with the -q:v or -qscale:v option (just called -qscale in old ffmpeg). Range for mpeg* is 1-31 where 31 is the worst quality.

Next time remember that ffmpeg usage questions are to be asked at superuser.com since stackoverflow is specifically for programming.

like image 192
llogan Avatar answered Nov 10 '22 11:11

llogan