Настройки для ffmpeg для лучшего качества VP9 для веб-публикации

3082
TranslucentCloud

У меня есть видео в формате 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
Но у вас есть последняя версия libvpx? LordNeckbeard 8 лет назад 0
`libvpx-dev` из репозитория _Debian Testing_, который сейчас имеет версию 1.5.0-2. TranslucentCloud 8 лет назад 0

2 ответа на вопрос

2
Ely

You're doing a 1-pass encode in speed 4, which are fast parameters but far from optimal quality.

The guide seems good, have you tried their 2-pass or constant/constrained quality settings ? Obviously, don't keep their example 1000k bitrate.

Да, вчера дал гид со второй попытки и имел успех. Подробности в моем ответе. TranslucentCloud 8 лет назад 0
2
TranslucentCloud

Okay, after some experiments I found that guide I mentioned in the question is quite useful. I had success with the instructions from the Constant Quality Recommended Settings section, and what was need to be fine-tuned is the -crf setting.

After quite a lot of tests, I ended up with the -crf 23 setting, with which the result webm file is of very good quality, compared to the original.

The exact ffmpeg commands are:

  1. First pass:

    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. Second pass:

    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 

For some reason, a first pass does not use all CPU cores (2 in my case), despite the -threads 2 option, however a second uses them all.

В режиме CRF вы можете пропустить, используя два прохода, без больших затрат по качеству. Gyan 8 лет назад 0

Похожие вопросы