Making a video smaller (downscaling) or bigger (upscaling) with FFmpeg is actually very easy. Here are some FFmpeg commands to help you out:
Upscale with FFmpeg
To change a video file to be 1080p in FFmpeg:
ffmpeg -i input.mp4 -vf scale=1920x1080:flags=lanczos output_1080p.mp4
This uses FFmpeg scaling with Lanczos resampling. For an excellent source on resampling methods go here.
The 3 main types are:
- Bilinear
- Bicubic
- Lanczos
whilst Lanczos in most cases wont be the sharpest it combines sharpness with smooth to make the footage look better overall, Avoiding blocky footage.
To upscale a video to 1080p whilst encoding it:
ffmpeg -i input.mp4 -vf scale=1920x1080:flags=lanczos -c:v libx264 -preset slow -crf 21 output_compress_1080p.mp4
To upscale to 4k video:
ffmpeg -i input.mp4 -vf scale=3840x2560:flags=lanczos -c:v libx264 -preset slow -crf 21 output_compress_4k.mp4
Downscale with FFmpeg
To downscale video all you need to know is popular dimensions. Given you have a source video of 1280 x 720; 640 x 480, 480 x 360 and 426 x240.
ffmpeg -i input.mp4 -vf scale=640x480:flags=lanczos -c:v libx264 -preset slow -crf 21 output_compress_480p.mp4
All you need to do is change the scale= to the dimension you want, then change the output to indicate the video dimensions.
The end result is going to depend on your source footage. A high bitrate 720p video can look good at 1080p and maybe work at 4k. A low quality 480p will struggle to make it at 1080p.