Почему FFMPEG всегда создает большие файлы WebM?

Я пытаюсь кодировать свои фильмы в WebM:

ffmpeg -i input.MOV -codec:v libvpx -quality good -cpu-used 0 -b:v 10k
-qmin 10 -qmax 42 -maxrate 10k -bufsize 20k -threads 8 -vf scale=-1:1080
-codec:a libvorbis -b:a 192k
output.webm

Я хочу кодировать с несколькими разными битрейтами (видео и аудио вместе):

  • 2192 кбит/с
  • 1692 кбит/с
  • 1000 кбит/с

Проблема в том, что какие бы битрейты я ни вводил, я всегда получаю файл с битрейтом выше 1900 кбит/с. (1914 кбит/с с приведенным выше примером кода.)

Что я делаю неправильно?


person Student of Hogwarts    schedule 02.04.2013    source источник


Ответы (1)


libvpx немного сложен в плане контроля скорости и настроек качества. См. Руководство по кодированию vpx и Руководство по параметрам кодирования VP8 для получения дополнительной информации. Мне потребовался час копания в исходном коде, чтобы понять это.

Если вы хотите установить постоянный битрейт, вам нужно будет установить b:v, maxrate и minrate одинаковые значения, например, так (обратите внимание, что для краткости я не упомянул здесь параметры звука):

ffmpeg -i input.mov -c:v libvpx -b:v 1900K -maxrate 1900K -minrate 1900K output.webm

Если вместо этого вы хотите использовать переменное качество и просто указать верхнюю границу битрейта, вам нужно установить как b:v, так и crf. Если вы опустите crf, указанный битрейт будет принят как средний. Только с crf энкодер меняет значение b:v на максимально допустимую скорость.

ffmpeg -i input.mov -c:v libvpx -b:v 1900K -crf 10 output.webm

Значение 10 для CRF является хорошей отправной точкой, но libvpx может изменить качество каждого кадра в пределах qmin ≤ q ≤ qmax, которые вы также можете указать, если хотите. Установка нижней границы 10 для qmin кажется мне немного завышенной, но, по сути, вам все равно придется делать некоторые пробы и ошибки, поскольку, если максимальный битрейт слишком низкий, вы будете постоянно его насыщать.

person slhck    schedule 02.04.2013
comment
Большое спасибо за ваше время! :) Как вы сказали в своем первом примере, отсутствие качества помогло. Теперь это работает как шарм. - person Student of Hogwarts; 02.04.2013