Igore108: maxrate -- да, примерная граница, те на практике значение может скакнуть до 3500 и более
Я предполагаю, что происходит следующее
В буфер кладутся откодированные данные и когда получается 5000, то смотрят сколько по факту секунд было откодированно, если значение "сильно" отличается от заданного, то алгоритм изменяется
-crf 20 -maxrate 2500k -bufsize 5000k
This will effectively "target" crf 20, but if the output exceeds 2500k/s, it will degrade to something less than crf 20 in that case.
Алгоритм будет стараться держить условное качество на уровне 20, если получаемый резудьтат будет больше 2500к в сек, то он будет подбирать (увеличивать) такой crf, чтоб получилось не более 2500
Буфсайз - размер буфера относительно, которого будет вычисляться битрейт
-b: v 1000k означает, что алгоритм всегда будет стараться работать в пределах 1000к в сек
This method is generally used if you are targeting a specific output file size and output quality from frame to frame is of less importance. This is best explained with an example. Your video is 10 minutes (600 seconds) long and an output of 50 MB is desired. Since bitrate = file size / duration
Этот метод обычно используется, если вы нацелены на конкретный размер и качество вывода выходного файла от кадра к кадру имеет меньшее значение. Это лучше всего объяснить на примере. Ваше видео составляет 10 минут (600 секунд) в длину и выход 50 МБ требуется. Так как битрейт = размер файла / продолжительности