Примечание: эта информация основана на вики FFmpeg на кодировке VP9 . Пожалуйста, обратитесь к этой статье для получения дополнительной информации - она будет постоянно поддерживаться и расширяться. Для достижения наилучших результатов вы должны использовать последнюю версию ffmpeg
, загрузив ее со своего веб-сайта (достаточно статической сборки; она содержит libvps-vp9
кодировщик).
Переменная битрейт
Кодирование VBR дает вам оптимальное общее качество, поскольку кодер может свободно выбирать, сколько битов назначить кадру. Выберите этот режим, если вы не готовите видео для потоковой передачи с постоянным битрейтом.
Вариант 1: кодирование постоянного качества
Как правило, если вы не хотите указывать определенный размер файла, вы должны позволить битрейту свободно изменяться, так как это приведет к высочайшему качеству. Вы можете сделать это, установив битрейт на 0 и коэффициент постоянной скорости ( CRF ) на целевой уровень качества:
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 output.webm
Значение CRF может быть от 0 до 63. Более низкие значения означают лучшее качество. Рекомендуемые значения варьируются от 15 до 35, причем 31 рекомендуется для видео высокой четкости 1080p. У Google есть руководство с дополнительной информацией об этом .
Вариант 2: двухпроходное кодирование с целевым битрейтом
Если вы хотите, чтобы у вашего файла была определенная целевая скорость передачи или размер файла, вам нужно указать скорость и использовать двухпроходное кодирование (которое обеспечит оптимальное качество распределения). Здесь мы выбираем 5 Мбит / с, чего должно быть достаточно для контента 1080p.
ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 5M -pass 1 -f webm /dev/null && \
ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 5M -pass 2 output.webm
Пользователи Windows должны использовать NUL
вместо /dev/null
, и ^
вместо \
.
Постоянный битрейт
Прежде всего, libvpx предлагает режимы кодирования с постоянным и переменным битрейтом . Всегда следует избегать постоянного битрейта (если только вы не нацелены на определенный размер файла или сценарий потоковой передачи), так как среднее качество на размер файла будет хуже. Тем не менее, вы можете попробовать установить постоянный битрейт, если у вас больше ничего не работает, например, с 1 Мбит / с:
ffmpeg -i input.mp4 -c:v libvpx-vp9 -minrate 5M -maxrate 5M -b:v 5M output.webm
Посмотрите на вывод и увеличьте или уменьшите битрейт по своему вкусу (или ограничения размера файла). Например, вы можете использовать 500K
или 5M
, и так далее.
Вы должны указать -minrate
, -maxrate
и битрейт -b:v
для того , чтобы кодер использовать CBR. Все они должны иметь одинаковое значение - в противном случае он выберет другой целевой битрейт и будет выполнять кодирование VBR, но с плохим качеством.
аудио
Текущий выбор аудиокодека для кодирования VP9 - Opus. FFmpeg выберет нужный кодер и его параметры по умолчанию. Если вы хотите явно установить -c:a libopus
, вы можете сделать это также. Обратитесь к libopus
документации для получения дополнительной информации.