This being the first result I got from searching, I decided to use WYSIWYG answer and write a bash script that simplifies this significantly (at least for me):
#!/bin/bash
if [[ -z $6 ]];then
printf "Usage:\n"
printf " $0 [input file] [output file] [top crop] [bottom crop] [left crop] [right crop]\n"
printf "Any edges you do not want to crop, enter 0.\n"
printf "For example, to crop 10 pixels from the top, 11 from the botom, none from the left and 8 from the right:\n"
printf " $0 input-file.jpg output-file.jpg 10 11 0 8\n"
exit 2
fi
inpFile=$1
outFile=$2
tCrop=$3
bCrop=$4
lCrop=$5
rCrop=$6
let xCrop=$lCrop+$rCrop
let yCrop=$tCrop+$bCrop
ffmpeg -i $inpFile -vf crop=iw-$xCrop:ih-$yCrop:$lCrop:$tCrop $outFile
exit $?
Run this script without any arguments to get a how-to printout.
When you specify your crop values for each edge, it does the math for you. Saves you from having to add up your top & bottom / left & right crops.
A full explanation for the ffmpeg's crop
formatting is below. Each of these values represent what they should be in the output file.
crop=w:h:x:y
w = width.
h = height.
x = X (horizontal) position the output should start at, from the left. AKA how many pixels to lose from the left.
y = Y (vertical) position the output should start at, from the top. AKA how many pixels to lose from the top.
As you can see, width and height support "iw" and "ih" respectively to keep those values from the input file. And, you can perform math on those within the command. That's where the "iw-30" comes from in WYSIWYG's answer.