Reducing bitrate with ffmpeg using `-b:v 500k` doesn't actually reduce bitrate to 500k

When re-encoding a file, you shouldn't just specify a bitrate. My guess is that ffmpeg tries to use the mpeg4 codec by default, and it refuses to use less than 2mbps because it simply can't go below with such a high resolution.

I suggest you re-encode with the H.264 codec which you can do like this :

ffmpeg -i ../../tos.avi -c:v libx264 -b:v 500k tos_500k.mp4

Please note however that this will use a 1-pass average bitrate method which is pretty bad for quality. Instead, you should try encoding with "constant rate factor", i.e. you target a certain quality and the encoder decides which average bitrate is the best for your file :

ffmpeg -i ../../tos.avi -c:v libx264 -crf 23 tos_500k.mp4

You're free to experiment with the crf value. Increasing it will mean lower bitrate and worse quality, lowering it vice versa.

If you absolutely want to target an average bitrate, you should checkout 2-pass encoding. Also, don't forget about presets !

As a side note, 500k for 1080p is way too low and you will get poor results. If you wish to target such a low bitrate, I suggest you downscale to 480p (854x480). 720p should have a minimum of 1,5mbps bitrate and 1080p 3mbps.

For your future questions, don't forget to post the input/output logs from ffmpeg, they're always helpful :-) .