How to extract a frame out of a video using ffmpeg

Use the select filter:

ffmpeg -i <input> -vf "select=eq(n\,34)" -vframes 1 out.png

counting starts at 0, so 35th = n value of 34.


Two quick-and-dirty ways:

Use the FFmpeg executable with the seek option. You'll need to convert to a time first, e.g. if I want frame 150 and my video is 29.97 FPS the command will be ffmpeg -ss 00:00:05.01 -i myvideo.avi -frames:v 1 myimage.jpg. This might be slightly inaccurate. To seek by exact frame you'd need to use the FFmpeg library with C++.

Another 'hacky' way is using VLC media player. Check menu View -> Advanced controls. Pause video and click the Frame-by-frame button 34 times.

Tags:

Ffmpeg