1

Кодирование несжатого видео в более высокую битрейт занимает больше времени (чем в более низкую битрейт)?

Если так, почему - кажется, что кодировщику нужно меньше усилий, потому что ему не нужно так сильно сжимать файл?

Если нет, почему - больше качество не означает больше работы для кодера?

Я просто не могу разобраться с этим.

1 ответ1

2

Кодирование с потерями - это в основном сжатие, достигаемое с помощью различных алгоритмов. Давайте рассмотрим крайние случаи, и оттуда мы выведем ответ на ваш вопрос.

Представьте, что ваше входное видео должно быть закодировано с наилучшим качеством. Что именно это значит? Ну, мы просто берем каждый пиксель как есть и храним его так. Сколько времени нам нужно для этого? Почти ничего. Это было бы самым быстрым.

Затем вы можете пойти дальше и попытаться минимизировать различия между кадрами, только кодируя их относительные различия. Вы прогнозируете кадр B из кадра A, а затем сохраняете остаток после вычитания прогноза из B. Это оставляет вас с тем же качеством, но увеличивает время обработки. Это также дает вам гораздо меньший файл.

Что если вы хотите еще больше уменьшить размер файла? Теперь именно здесь начинают действовать различные алгоритмы квантования и оптимизации. Вы можете рассчитать количество пространственных и временных деталей в области кадров, а затем динамически отрегулировать относительное качество этой части видео, чтобы оно воспринималось с определенным уровнем качества. Это режим CRF в x264. В этом случае, если вам нужно высокое качество, кодировщик ничего не сделает - он не должен так много "выбрасывать", просто говоря.

По сути, когда вы говорите кодировщику, что он не должен так усердно работать над оптимизацией качества, это будет быстрее.

Но, может быть, мы должны просто сделать небольшой тест. Я взял 30-секундный образец фильма и закодировал его с помощью x264, используя различные настройки CRF на сервере. Вот необходимое время:

То же самое для битрейтов:

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