FFmpeg recipe

FFmpeg: Change a Video's Frame Rate

fps=30 simply drops or duplicates frames to hit the target rate. For smoother motion (slow-mo, time-warp), use minterpolate instead.

Command

ffmpeg -i input.mp4 -vf fps=30 -c:v libx264 -crf 23 -c:a copy -y output_30fps.mp4
Prefer no terminal?
Use the FPS Converter in your browser
Open FPS Converter

What each flag does

-iInput file. Can be a video, audio, or image. Repeat for multiple inputs.
-vfVideo filter chain. e.g. scale=1280:720, crop=, fps=30.
-c:vVideo codec for output. e.g. libx264, libx265, libvpx-vp9.
-crfConstant Rate Factor — quality target (lower = better, larger file). 23 is visually lossless for libx264.
-c:aAudio codec for output. e.g. aac, libmp3lame, copy.
fps=30Target frame rate. fps filter does naive drop / duplicate — safe but not motion-interpolated.

Notes & gotchas

  • For smooth motion interpolation, use -vf "minterpolate=fps=60:mi_mode=mci". Slow but pretty.
  • For inverse telecine (24p in 60i), see -vf pullup,fps=24000/1001.

Related recipes