При перекодировании файла вы не должны просто указывать битрейт. Я предполагаю, что ffmpeg пытается использовать кодек mpeg4 по умолчанию и отказывается использовать менее 2 Мбит / с, потому что он просто не может опуститься ниже с таким высоким разрешением.
Я предлагаю вам перекодировать с помощью кодека H.264, который вы можете сделать так:
ffmpeg -i ../../tos.avi -c:v libx264 -b:v 500k tos_500k.mp4
Тем не менее, обратите внимание, что при этом будет использоваться метод средней скорости передачи данных за 1 проход, что довольно плохо сказывается на качестве. Вместо этого вы должны попробовать кодирование с «коэффициентом постоянной скорости», то есть вы нацеливаетесь на определенное качество, и кодировщик решает, какой средний битрейт является лучшим для вашего файла:
ffmpeg -i ../../tos.avi -c:v libx264 -crf 23 tos_500k.mp4
Вы можете экспериментировать со значением crf. Увеличение его будет означать более низкий битрейт и худшее качество, а наоборот - снижение.
Если вы абсолютно хотите выбрать среднюю скорость передачи данных, вам следует воспользоваться 2-проходной кодировкой . Также не забывайте про пресеты !
Как примечание: 500k для 1080p слишком мало, и вы получите плохие результаты. Если вы хотите использовать такой низкий битрейт, я советую уменьшить его до 480p (854x480). 720p должен иметь битрейт не менее 1,5 Мбит / с и 3 Мбит / с 1080p.
Для ваших будущих вопросов, не забудьте опубликовать журналы ввода / вывода из ffmpeg, они всегда полезны :-).