Это действительно зависит от вашей скорости загрузки.
bufsizeопределит, насколько религиозно ffmpeg поддерживает постоянный битрейт. Если вы установите значение bufsize64 КБ, согласно FFmpeg Wiki: Ограничение выходного битрейта , он будет рассчитывать свой текущий битрейт каждые 64 килобайта и корректироваться соответствующим образом. Меньшие размеры bufsizeмогут быть вредны для качества, поскольку они не позволяют достаточно места между проверками для x264, чтобы сделать внезапные изменения - вы получите блочность.
Если у вас maxrate640 кбит / с, а у вас bufsize64 кбит, тогда каждую десятую секунды x264 будет проверять. Это неоптимально - FFmpeg Wiki: кодирование для потоковых сайтов рекомендует запускать его каждые 1-2 секунды. Если это не имеет смысла, подумайте об этом как maxrate/ bufsize= частота проверок. Держите эту частоту от 1 до 2 секунд, как правило.
Если вы установите оба maxrateи bufsize, вы должны:
- установите
maxrateминимальную скорость загрузки (в примере ffmpeg wiki это 80% от общей скорости загрузки, но пробег может отличаться).
- установить
bufsizeгде-то между тем же, что и вы maxrate(одна секунда), и вдвое больше maxrate(2 секунды). Если это все еще не достаточно низко, уменьшите maxrateи затем установите заново bufsizeсоответственно.
Затем вам придется немного поиграть, но так как вы должны начать где-то, я просто начну с maxrate600к, что обычно было достаточно для меня, прежде чем я использовал crfдля всего.
Если вы хотите, вы можете попробовать уменьшить значения bufsize, например, каждые три или четыре секунды, просто чтобы посмотреть, как значение меняет внешний вид вашего вывода. Затем вы можете определить, насколько вы должны беспокоиться об этом для вашего видео.
На самом деле нормального значения не существует - что crfзначит оптимизировать вывод на основе того, что, по его мнению, является наилучшим размером буфера для поддержания любой установленной скорости. Он пытается сохранить как можно меньший размер файла при сохранении некоторого качества за счет случайных скачков.