Try 512×384 (ideal), 528×396, 544×408 if you can go over a bit (and maybe crop).
Rich pointed at one way to do the math. Here’s another:
720×480 non square is also 640×480 square pixels.
You can think of moving up or down frame size by 32×24.
Because of the way most codecs work when they encode in blocks, keeping things divisible by 16 evenly is a good rule. At the very least the number should be divisible by 4 or 8.
Here’s an example:
4×3 (odd number not good)
8×6 (6 is not evenly divisible by 8 or 4)
16×12 (12 is divisible by 4 but not 8 or 16)
32×24 (it’s 4×3 ratio and both numbers are divisible by 8, that’s good). So this is a pretty good base unit of measure.
64×48 (this is ideal since both numbers are divisible by 16 evenly).
Keeping these ratios in mind, divisible by 16 best, 8 good, 4 ok, you’ll find that:
512×384 is divisible by 16.
544×408 is divisible by 8.
528×396 is divisible by 8.
540×400 is close to 544×408 so the distortion might be too small for your eye to notice. You could go with that and crop a few pixels so it doesn’t distort instead.
BTW, you might see some sites use
240×180 (divisible by 8) for their smallest frame size and others use 256×192 (divisible by 16). 320×240 is divisible by 16.
For those who want to look at this another way. With 720×480 non square which is 640×480 square, you can get target frame size by:
64 by 48 multiplied by n (best frame sizes)
32 by 24 multiplied by n (best and good frame sizes)
16 by 12 multiplied by n (best, good and “passable” frame sizes)
I hope I haven’t muddied the waters too much but I thought the above might explain some ways to figure out frame sizes that don’t distort and work well for encoders.