FFMPEG — формула размера буфера

#video #ffmpeg #video-streaming #encoder #bitrate

Вопрос:

Кто-нибудь знает, какова формула для размера буфера вместе с частотой, которую он проверяет в FFMPEG?

Кажется, я не могу найти никакого конкретного ответа на этот вопрос.

Это: размер буфера = битрейт / скорость ?

И следует ли при расчете использовать максимальную скорость, а не битрейт?

Пример определения скорости выполнения проверок:

 bitrate: 700Kbps
maxrate: 700Kbps
bufsize: 70Kb

700Kbps/70Kb = 10 sec
 

Это правда?
Для меня это звучит неправильно, потому что при меньшем размере буфера проверка должна выполняться с большей скоростью, а 10 секунд кажутся слишком большим промежутком.

Нужно ли будет инвертировать формулу?

У кого-нибудь есть представление о правильном синтаксисе формулы и единиц измерения?

Комментарии:

1. У кого-нибудь есть идея по этому поводу или это скрытый секрет? Я понимаю концепцию, лежащую в ее основе, просто мне нужен конкретный факт по ее формуле и разработке и т. Д

2. Кто-нибудь может помочь?

3. Я думаю, перевернутый. Какие-нибудь эксперты могут внести ясность?

Ответ №1:

ffmpeg bufsize -это просто объем обработанных данных (количество битов) до того, как ffmpeg пересчитает текущий битрейт на основе перекодируемого содержимого.

Вы можете подумать, что размер буфера похож на ключевые кадры. Разница в том, что bufsize запускает повторную оценку текущего использования алгоритма ffmpeg после обработки X бит данных. В то время как команды, связанные с оценкой ключевого кадра (например -g , параметр), работают в зависимости от того, сколько кадров было обработано с момента последней оценки ключевого кадра.

Например, предположим, что вы настроили ffmpeg в режиме постоянной скорости передачи данных (CBR) и установили-bufsize в 2 раза больше вашей скорости передачи данных. Формула будет простой. Каждые 2 кадра ffmpeg будет настраиваться. С другой стороны, если вы используете VBR и устанавливаете размер буфера в 2 раза выше целевой скорости передачи, то то, как часто ffmpeg корректирует свою формулу кодирования (и фактический битрейт), будет зависеть от того, какой битрейт в любой данный момент (поскольку он является переменным). Таким образом, частота — с точки зрения обработанных кадров и/или битов — будет варьироваться в течение всего кодирования.

Строго думая только о режимах кодирования с ограничением скорости передачи данных (т. Е. без CQ/CRF), хорошая концепция целевого размера a-buf заключается в использовании между 1x-2x вашей максимальной скоростью передачи данных (или целевой скоростью передачи данных, в зависимости от кодека и режима кодирования).

ПРАВКА: Уточнение немного дальше…. -bufsize используется в сочетании с -maxsize для точного определения того, когда максимальное количество битов должно быть пересчитано (размер буфера будет определять, когда это произойдет).