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.mp4Prefer no terminal?
Use the FPS Converter in your browser
What each flag does
| -i | Input file. Can be a video, audio, or image. Repeat for multiple inputs. |
|---|---|
| -vf | Video filter chain. e.g. scale=1280:720, crop=, fps=30. |
| -c:v | Video codec for output. e.g. libx264, libx265, libvpx-vp9. |
| -crf | Constant Rate Factor — quality target (lower = better, larger file). 23 is visually lossless for libx264. |
| -c:a | Audio codec for output. e.g. aac, libmp3lame, copy. |
| fps=30 | Target 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
Resize to 1080p · Any video
Resize any video to 1080p (1920×1080) with FFmpeg scale filter. Preserves aspect ratio with -1 trick.
Crop to 9:16 · Any video
Crop a 16:9 video to 9:16 vertical with FFmpeg crop filter. Centered crop for TikTok, Reels, Shorts.
Speed up 2x · Any video
Speed up a video 2× (or any factor) with FFmpeg. Uses setpts for video and atempo for audio without pitch shift.
Reverse a video · Any video
Reverse video and audio with FFmpeg using reverse + areverse filters. Useful for boomerangs and easter eggs.