You can find the documentation on the FFmpeg homepage.
fps filter has multiple options, one being
fps. So, to declare that option, you have to call:
↑ ↑ ↑
| | |
| | |__ value
| |______ option
You could also write
-vf fps="fps=1/60", of course.
So, when you use
1/60 that means 1/60 frames per second, or 1 frame per 60 seconds. In any case the difference between this and
-r 1/60 is that a filter is applied before any
-r option. Both commands you gave should work in theory, however the
-r one creates too many output frames for me (but I'm not the first one to notice). Stick with the
Note that there is another filter called
framerate, which is similar to
fps, but not the same. Instead of duplicating or dropping frames to achieve the target framerate, it will interpolate frames, i.e. merging adjacent frames to create new images.
If you dissect the command you will find that
image2 is the option value of
-f. This specifies the output format. In general, you can use it in
ffmpeg like this:
ffmpeg -f input-format -i input-file -f output-format output-file
In your example, we told
ffmpeg to use the
image2 muxer, which allows you to output single image files from video, by specifying a pattern like
%02d for the output name.
-f image2 is superfluous here as the muxer should be chosen automatically when you use an image output format.
image2 demuxer also has a
framerate option that allows you to specify the assumed input file framerate. For example, if you have a slideshow that consists of one picture every second, use
-framerate 1 as an input option. See here for some examples.