Коэффициент постоянной скорости ffmpeg для различных качеств webm

1413
C0nw0nk

Итак, я наткнулся на следующий вопрос. Как правильно рассчитать качество 1080p 720p 360p 240p? Но это для H264 MP4 файлов.

Для файлов MP4 я установил постоянный коэффициент -crf равным 18 для всех типов качества.

Но в webm, что это должно быть установлено для различных типов качества. 360p 480p 720p 1080p

Это моя текущая командная строка webm.

"C:/server/ffmpeg/bin/ffmpeg.exe" -y -i Z:/server/websites/ps/public_www/media/com_hwdmediashare/files/84/1a/33/f941f37ad1ee7645bdd1d9773a53f286.mpg -s 528x360 -vcodec libvpx -g 120 -rc_lookahead 16 -qmax 51 -qmin 11 -vb 2M -b 500k -bufsize 1000k -pass 1 -an -f webm Z:/server/websites/ps/public_www/media/com_hwdmediashare/files/84/1a/33/24bbec26dd3a2dc0809d996ea816bfbe.webm 2>&1  "C:/server/ffmpeg/bin/ffmpeg.exe" -y -i Z:/server/websites/ps/public_www/media/com_hwdmediashare/files/84/1a/33/f941f37ad1ee7645bdd1d9773a53f286.mpg -s 528x360 -vcodec libvpx -g 120 -rc_lookahead 16 -qmax 51 -qmin 11 -vb 2M -maxrate 24M -minrate 100k -b 500k -bufsize 1000k -pass 2 -acodec libopus -ab 90k -f webm Z:/server/websites/ps/public_www/media/com_hwdmediashare/files/84/1a/33/24bbec26dd3a2dc0809d996ea816bfbe.webm 2>&1 

У меня нет набора crf, но видеовыходы вне зависимости от размера выглядят слегка блочными и пикселированными, поэтому я думаю, что должен установить один.

0
Вы читали это? https://trac.ffmpeg.org/wiki/Encode/VP8 - я только на своем мобильном, но это должно дать вам отправную точку. slhck 9 лет назад 0
Да, я уже видел это, но, основываясь на различных типах качества, я не уверен, что мне следует использовать, если я должен использовать 10, как они рекомендуют в статье, или если я должен использовать более низкое. C0nw0nk 9 лет назад 0
Используйте все, что достигает желаемого или ожидаемого уровня качества. Вы должны экспериментировать. Все зависит от исходного видео, его содержания и контекста дисплея. slhck 9 лет назад 0
Так как фактор crf отличается от MP4 к Webm, что эквивалентно «-crf 18», что я использую для всех файлов MP4 для webm? C0nw0nk 9 лет назад 0
Я бы предположил около 5–6, но у меня нет большого опыта работы с VP8. Прошло много времени с тех пор, как я написал статью в вики. CRF 19 для x264 очень хорошего качества. Просто закодируйте пару видео и проверьте slhck 9 лет назад 1
Спасибо, slhck, я установлю его как "-crf 6", и мы надеемся, что он исправит блочный вид моих webm-видео. C0nw0nk 9 лет назад 0
Я отправил правильный ответ. Дайте мне знать, какую ценность вы выбрали в конце концов. slhck 9 лет назад 1

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

2
slhck

If the output looks too blocky or pixelated, that's due to a too low bitrate. I see you set 500 kBit/s, but that's much too low for achieving reasonable quality with video at 720p or above.

The VP8 encoding guide lists a few options you have when using the libvpx encoder. I agree with you that using a constant rate factor is the correct approach to achieving the same level of visual quality, regardless of the video resolution.

You were using CRF 18 for the x264 encoder, which is considered very high quality (maybe not visually lossless, but the quality loss should not be perceivable). For libvpx, the CRF range is a little different. 10 is a good default (it would be 23 for x264), and so I'd probably recommend using something like CRF 6–7 for libvpx.

Note that the -qmin parameter must be set equal or lower to the CRF you're choosing. Otherwise it can't encode.

Remember that the resulting bitrate has its upper bound set at whatever you specify with -b:v. Therefore, if your CRF is too low, and your bitrate is set to -b:v 2M, your final bitrate will be 2 MBit/s.

But really, there is nothing better than just trying out different values. It all depends on what your input looks like or what your target application for the videos is. If you're just doing some web streaming, you don't need such high quality video. If you want offline storage, then a lower CRF would of course be better.

Я получил следующую ошибку при добавлении значения crf к webm'у: «Уровень CQ 6 должен быть между минимальным и максимальным значением квантователя». Так как я установил «-crf 6» и не удалил «-qmax 51 -qmin 11» из моей команды Строго говоря, я делаю эту ошибку, и я надеюсь, что решение - просто установить "-qmin 6". C0nw0nk 9 лет назад 0
Да, это необходимо при использовании более низкой CRF. Я исправлю свой пример в ближайшее время. slhck 9 лет назад 1

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