14

I think it has a "blackness" video filter, which can determine if a picture sequence is black. Maybe it also has a filter to determine crop values automatically to remove black borders form edges of a video. Or maybe it is possible somehow to write a script using the "blackness" filter.

19

Yes, it is possible.

First play your video to see if it is OK:

ffplay -i YourMovie.mp4 -vf "cropdetect=24:16:0"

The cropdetect filter values are:

cropdetect=limit:round:reset

limit = black threshold (default 24)
round = output resolution must be divisible to this
reset = after how many frames the detection process will start over

If it looks OK, crop it:

ffmpeg -i YourMovie.mp4 -vf "crop=640:256:0:36" YourCroppedMovie.mp4

Source and more info: René Calles blog renevolution.com

  • 4
    It might be helpful to put a start point (-ss 00:05:00) in when using cropdetect (before input -i) as some video will have a solid black screen when starting. – user465731 Jul 4 '15 at 13:45
  • I would like to use this to crop python matplotlib.animation videos, which have a white border. Is it possible to alter the color of the border being detected? – ryanjdillon Oct 8 '15 at 11:51
  • 1
    Can you specify something else than black as border color? White for example? – DanMan Mar 8 '18 at 13:03
  • This does not answer the question as you still need to do manual action – Freedo Sep 8 at 8:32
  • Hey @Cornelius can you please help me to find one command - i want to crop video.mp4 from Square to Round using ffmpeg - not want to use overlay command for this – Adil Sep 13 at 7:08
12

From: https://stackoverflow.com/questions/17265381/ffmpeg-get-value-from-cropdetect

ffmpeg -i input -t 1 -vf cropdetect -f null - 2>&1 | awk '/crop/ { print $NF }' | tail -1
  • 1
    ok, this will generate the "crop values" to use with ffmpeg in a simple and very clear way :), thx! – Aquarius Power Apr 13 '16 at 0:11
4

Putting the other two answers together into a script:

#!/bin/sh
#ffmpeg_zoom ver 20180128202453
I="$@";X=${I##*.};O=${I%.*}_zoomed.${X};f=$(which ffmpeg 2>/dev/null)
if [ ! "$f" ]||[ "$f" = '' ];then echo "Install ffmpeg";exit 1;fi
C=$($f -i "$I" -t 1 -vf cropdetect -f null - 2>&1|awk '/crop/{print $NF}'|tail -n1)
echo $f -i "$I" -vf "$C" "$O"; $f -i "$I" -vf "$C" "$O"

This question has some relevant ffmpeg examples

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.