
У меня есть 30-секундный видеофайл 1080p, который был отрендерен из Premiere Pro/Media Encoder (целевой битрейт 10) и закодирован в H.265. Он имеет размер 36,6 МБ. Когда я запускаю команду
ffmpeg -i input -c:v libx265 -c:a copy output.mp4
новый файл имеет только 5,04 МБ. mediainfo
показывает, что новый файл имеет битрейт всего 1164 кбит/с. Несмотря на то, что один значительно меньше другого, оба видео выглядят одинаково (оба имеют оценку VMAF выше 97 по сравнению с несжатой версией).
Выбирает ли он libx265
разумно битрейт и таким образом делает размер видео намного меньше?
решение1
Тыволяпотеряли данные при перекодировании независимо от воспринимаемого "качества". Это одно из мест, откуда произошло уменьшение размера. Незначительные или незаметные детали будут потеряны или аппроксимированы с помощью алгоритмов компрессора.
Однако основное различие будет в том, что Adobe и ffmpeg
имеют разные настройки качества и пропускной способности по умолчанию. То, что "оценка VMAF" выглядит похоже, просто говорит вам, что человек, вероятно, не увидит разницы, а не о том, сколько данных было потеряно.
ffmpeg
будет декодировать кадры и перекодировать их, используя любые настройки по умолчанию. Скорее всего, настройки по умолчанию агрессивны и в соответствии сhttps://trac.ffmpeg.org/wiki/Encode/H.265по умолчанию будет использоваться medium
профиль качества.
Значение по умолчанию — среднее. Предустановка определяет эффективность сжатия и, следовательно, влияет на скорость кодирования. Допустимые предустановки:
ultrafast
,superfast
,veryfast
,faster
,fast
,medium
,slow
,slower
,veryslow
, иplacebo
. Используйте самую медленную предустановку, на которую у вас хватит терпения. Игнорируйте,placebo
так как она обеспечивает незначительную отдачу при значительном увеличении времени кодирования.
Более медленные настройки сжатия позволят точнее сохранить истинное исходное качество за счет увеличения размера файла и времени сжатия.
ffmpeg
также по умолчанию CRF равен 28, что будет довольно высоким относительным сжатием
Выберите CRF. CRF влияет на качество. Значение по умолчанию 28, и оно должно визуально соответствовать видео libx264 на CRF 23
Возможно даже, что ffmpeg
по умолчанию включены некоторые более продвинутые функции сжатия. Adobe может отказаться от некоторых функций аппроксимации кодирования в пользу более высоких битрейтов, чтобы сократить время рендеринга или сохранить качество или другие функции. Трудно узнать, не зная точно, какие настройки используются.
Если вы хотите провести справедливое сравнение между Adobe и ffmpeg
выходными данными, то вам следует выполнить рендеринг в несжатом формате, выяснить, какие именно настройки использует Adobe, а затем сжать его.несжатыйфайл в обоих случаях.
Повторное сжатие уже сжатого файла (декодирование и перекодирование) приведет кпотеря поколениячто, хотя это может показаться незначительным только на одном проходе, приведет к потере данных и качества. После нескольких проходов потеряволябыть значительным.
решение2
ВМАФне является хорошей метрикой для кодирования очень высокого качества. Даже сравнение математически идентичного контента иногда может дать вам оценку vmaf около 97,4, в то время как даже vmaf 100 не гарантирует визуальной прозрачности.
Это означает, что оценки VMAF практически ничего не говорят вам о качестве этих конкретных кодеков.
В то время лучшей визуальной метрикой, подходящей для почти прозрачного видео, была бы метрика неподвижного изображения, напримерБаттероглиили СИМУЛЯКРА.