Почему 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 kbps с примером кода выше.)
что я делаю не так?
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 для ОФД является хорошей отправной точкой, но libvpx
смогите изменить качество в рамку внутри границы qmin ≤ q ≤ qmax
, который вы также можете указать, если вы хотите. Установка нижней границы 10 для qmin
кажется мне немного высоким, но по сути вам все равно придется делать некоторые проб и ошибок, так как если максимальный битрейт слишком низок, вы будете постоянно насыщать его.