The Computer Oracle

Remove .mp4 video top and bottom black bars using ffmpeg

--------------------------------------------------
Hire the world's top talent on demand or became one of them at Toptal: https://topt.al/25cXVn
and get $2,000 discount on your first invoice
--------------------------------------------------

Music by Eric Matyas
https://www.soundimage.org
Track title: The Builders

--

Chapters
00:00 Remove .Mp4 Video Top And Bottom Black Bars Using Ffmpeg
00:19 Accepted Answer Score 80
01:34 Answer 2 Score 1
02:13 Thank you

--

Full question
https://superuser.com/questions/810471/r...

--

Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...

--

Tags
#ffmpeg #mp4

#avk47



ACCEPTED ANSWER

Score 80


FFmpeg cropdetect and crop filters

1. Get crop parameters

cropdetect can be used to provide the parameters for the crop filter. In this example the first 90 seconds is skipped and 10 frames are processed:

$ ffmpeg -ss 90 -i input.mp4 -vframes 10 -vf cropdetect -f null -
...
[Parsed_cropdetect_0 @ 0x220cdc0] x1:0 x2:1279 y1:0 y2:719 w:1280 h:720 x:0 y:0 pts:215 t:0.215000 crop=1280:720:0:0
[Parsed_cropdetect_0 @ 0x220cdc0] x1:0 x2:1279 y1:0 y2:719 w:1280 h:720 x:0 y:0 pts:257 t:0.257000 crop=1280:720:0:0
[Parsed_cropdetect_0 @ 0x220cdc0] x1:0 x2:1279 y1:0 y2:719 w:1280 h:720 x:0 y:0 pts:299 t:0.299000 crop=1280:720:0:0

At the end of each line, you can see it says crop=1280:720:0:0. So according to cropdetect we can use crop=1280:720:0:0.

2. Preview with ffplay

$ ffplay -vf crop=1280:720:0:0 input.mp4

3. Re-encode using the crop filter

$ ffmpeg -i input.mp4 -vf crop=1280:720:0:0 -c:a copy output.mp4

In this example the audio is just stream copied (re-muxed) since you probably don't need to re-encode it.

Also see


Crop during playback

As you've seen above with the ffplay example some players allow you to crop upon playback. This has the advantage of:

  • Instant gratification; no need to re-encode
  • The quality is preserved



ANSWER 2

Score 1


@LordNeckbeard 's answer is great. I would recommend it in most cases.

ffplay worked great and previewed well, but the version of ffmpeg I was using struggled with the audio from this video I was using.

st:1 error, non monotone timestamps 

I ended up having trouble with the proposed answer both with -c:a not being supported with the version I was running and with a problem with bitrate conversion with the video I was using.

Note: -c:a can be replaced with: -acodec

The easiest alternative free solution I found was to use handbrake.

It's autocrop removed the black bars without much trouble.

Hope that helps.