I have an MP4 file of a screen recording that I need to crop down. How can I accomplish this without using expensive tools like Adobe Premier or Final Cut? I prefer ffmpeg because I have used it before.
Use the crop filter:
ffmpeg -i in.mp4 -filter:v "crop=out_w:out_h:x:y" out.mp4
Where the options are as follows:
out_wis the width of the output rectangleout_his the height of the output rectanglexandyspecify the top left corner of the output rectangle
Original image

Original 320x240 image
Example 1

To crop a 80×60 section, starting from position (200, 100):
ffmpeg -i in.mp4 -filter:v "crop=80:60:200:100" -c:a copy out.mp4
- The audio is stream copied in this example, so re-encoding is avoided.
Example 2

To crop the bottom right quarter:
ffmpeg -i in.mp4 -filter:v "crop=in_w/2:in_h/2:in_w/2:in_h/2" -c:a copy out.mp4
This is the same as:
ffmpeg -i in.mp4 -filter:v "crop=320/2:240/2:320/2:240/2" -c:a copy out.mp4
Which is the same as:
ffmpeg -i in.mp4 -filter:v "crop=160:120:160:120" -c:a copy out.mp4
- You can refer to the input image size with
in_wandin_has shown in this first example. The output width and height can also be used without_wandout_h.
Example 3

Crop 20 pixels from the top, and 20 from the bottom:
ffmpeg -i in.mp4 -filter:v "crop=in_w:in_h-40" -c:a copy out.mp4
- The filter will automatically center the crop if
xandyare omitted such as in this example.
Previewing
You can take a crop (heh heh) and preview it live with ffplay:
ffplay -i input -vf "crop=in_w:in_h-40"
This way you can experiment and adjust your cropping without the need to encode, view, repeat.
Notes
Default encoder for MP4 is
libx264(H.264 video) ormpeg4(MPEG-4 Part 2 video) depending on yourffmpegbuild. See FFmpeg Wiki: H.264 Video Encoding Guide for more info.Instead of cropping and re-encoding, consider cropping upon playback. This is possible with any player worth using.
Ancient
ffmpegbuilds used-croptop,-cropbottom,-cropleft,-croprightoptions instead of thecropfilter. If this is the case for you then get a modernffmpeg. Development is very active and there is no reason to use an antique.
-
3
-
3worth to mention this technique (with the
cropfilter) re-encodes the video, see stackoverflow.com/questions/33378548/… if re-encoding matters for you – abernier Oct 14 '17 at 9:58 -
1edited to change the outdated
-filter:vto the more up to date and simpler to type-vf. Cheers! – Elder Geek Dec 15 '17 at 0:35 -
4If you're trying to remove black bars around your video (piallarbox, letterbox, windowbox etc.) use
cropdetectfirst to have ffmpeg print cropping parameters for you:ffmpeg.exe -i vid.mp4 -vf cropdetect out.mp4– Shayan Sep 6 '19 at 21:38 -
1This crop filter works great! In order to determine the bounding box needed to crop a video, I exported a video frame to an image with ffmpeg. Then open the image with GIMP where I can draw a bounding box for the area I wanted to crop the video and then I can get the X,Y,W, H info from the pointer window. Ask if this is not clear enough. – Harry Jan 4 at 21:53