How do I resize a video to make it smaller with FFmpeg? (e.g. from 1024x576 to 720x480.)
The most basic example is this:
ffmpeg -i input.avi -s 720x480 -c:a copy output.mkv
scale filter will provide more flexibility:
ffmpeg -i input.avi -filter:v scale=720:-1 -c:a copy output.mkv
-1 will tell ffmpeg to automatically choose the correct height in relation to the provided width to preserve the aspect ratio.
-1 can also be used for width if you provide a given height.
One downside of scale when using
libx264 is that this encoder requires even values and scale may automatically choose an odd value resulting in an error:
width or height not divisible by 2. You can tell scale to choose an even value for a given height (720 in this example):
...or a given width (1280 in this example):
Note that your ffmpeg build could complain about not recognizing
-filter options. It also may not support
scale. In that case you should use a newer ffmpeg, which you can download as a static build, or compile yourself.
I use following commands to do rescaling for videos and images. For fixed width and height -
ffmpeg -i input.avi -vf scale="720:480" output.avi
and if you want to retain aspect ratio just give height as -1 and it will automatically resize based on the width -
ffmpeg -i input.avi -vf scale="720:-1" output.avi
If you want to scale based on input size e.g. lets say reduce the width/height to half you can do -
ffmpeg -i input.avi -vf scale="iw/2:ih/2" output.avi
iw : input width ih : input height
Static build can be downloaded from - https://johnvansickle.com/ffmpeg/
Documentation : https://ffmpeg.org/ffmpeg.html#filter_005foption