FFmpeg проблема с битрейтом

Я имею дело с очень большой проблемой битрейта, ffmpeg предоставляет -b опция для скорости передачи данных и для ее настройки -minrate а также -maxrate, -bufsize но это не работает должным образом. Если я даю 256kbps в -b Опция, когда транскодирование заканчивается, обеспечивает 380 кбит / с. Как мы можем достичь постоянной скорости передачи битов, используя ffmpeg. Если их +-10Kb, это регулируется. но скорость передачи видео всегда превышает 50-100 кбит / с.

Я использую следующую команду

ffmpeg -i "demo.avs" -vcodec libx264 -s 320x240 -aspect 4:3 -r 15 -b 256kb \ 
  -minrate 200kb -maxrate 280kb -bufsize 256kb -acodec libmp3lame -ac 2    \
  -ar 22050 -ab 64kb -y "output.mp4"

Когда транскодирование выполнено, Media Info показывает общую скорость передачи данных 440 КБ (она должна быть 320 КБ).

Это что-то не так в команде. Или я должен использовать какой-то другой параметр? Пожалуйста, предоставьте ваше предложение очень важно.

1 ответ

Эти варианты не делают то, что вы думаете, что они делают. Из FFmpeg FAQ:

3.18 FFmpeg does not adhere to the -maxrate setting, some frames are bigger than
     maxrate/fps.

          Read the MPEG spec about video buffer verifier.

3.19 I want CBR, but no matter what I do frame sizes differ.

          You do not understand what CBR is, please read the MPEG spec. Read 
          about video buffer verifier and constant bitrate. The one sentence 
          summary is that there is a buffer and the input rate is constant, the
          output can vary as needed.

Позвольте мне выделить для вас сообщение:

Сводка одного предложения состоит в том, что есть буфер и скорость ввода постоянна, выход может изменяться по мере необходимости.

По сути, это означает, что -maxrate и другие настройки не контролируют скорость потока вывода, как вы думали, что они сделали.

Другие вопросы по тегам