2

У меня есть видео в формате Apple ProRes 422, которое я планирую закодировать в Google VP9 для публикации в Интернете. Источник:

Stream #0:0(und): Video: prores (apcn / 0x6E637061), yuv422p10le(bt709), 1920x1080, 114644 kb/s, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 24k tbn, 24k tbc (default)

Моя цель - закодировать его в VP9 с наилучшим (разумным) качеством, практически неотличимым от оригинала. Размер файла результатов не имеет значения. Сейчас я использую следующее, но видео в Chrome выглядит плохо:

ffmpeg -i Source.mov -c:v libvpx-vp9 -b:v 4M -pix_fmt yuv420p -speed 4 -frame-parallel 0 -threads 2 -c:a libopus -b:a 320K Result.webm

Я пытался увеличить настройку -b:v 4M , размер увеличивается, но качество не. Также я попробовал это руководство , но оно, вероятно, устарело, и я не могу получить удовлетворительный результат. Кстати, у меня последняя ffmpeg скомпилированная из исходного кода.

Какие настройки ffmpeg мне следует использовать?

2 ответа2

2

Вы выполняете однопроходное кодирование со скоростью 4, что является быстрым параметром, но далеко от оптимального качества.

Руководство кажется хорошим, пробовали ли вы их 2-проходные или постоянные / ограниченные настройки качества? Очевидно, не держите их примерный битрейт 1000k.

2

Хорошо, после некоторых экспериментов я обнаружил, что руководство, которое я упоминал в вопросе, весьма полезно. Я успешно справился с инструкциями из раздела « Рекомендованные настройки постоянного качества », и для этого нужно было настроить параметр -crf .

После довольно большого количества тестов я в итоге установил параметр -crf 23 , с помощью которого полученный файл webm имеет очень хорошее качество по сравнению с оригиналом.

Точные команды ffmpeg :

  1. Первый проход:

    ffmpeg -i Source.mov -c:v libvpx-vp9 -pass 1 -pix_fmt yuv420p -b:v 0 -crf 15 -threads 2 -speed 4 -tile-columns 6 -frame-parallel 1 -an -y -f webm /dev/null
    
  2. Второй проход:

    ffmpeg -i Source.mov -c:v libvpx-vp9 -pass 2 -pix_fmt yuv420p -b:v 0 -crf 15 -threads 2 -speed 2 -tile-columns 6 -frame-parallel 1 -auto-alt-ref 1 -lag-in-frames 25 -c:a libopus -b:a 320k -f webm Out.webm
    

По какой-то причине при первом проходе не используются все ядра ЦП (в моем случае - 2), несмотря на параметр -threads 2 , однако при втором - все.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .