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.
У меня есть видео в формате 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
настройки я должен использовать?
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.
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:
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
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.