Какое разрешение видео для данного битрейта воспринимается как максимальное качество?

Я хотел бы добиться определенного приблизительного битрейта для кодирования видео. Если я использую более высокое разрешение, такое как 720p, я получу более мелкозернистое изображение, но больше артефактов кодирования. Если я использую меньшее разрешение, такое как 480p, я получу меньше деталей и более грубое изображение, но более высокое качество изображения. Естественно, если разрешение будет слишком высоким или слишком низким, результат будет плохим. Есть ли какие-либо исследования или информация, основанная на опыте, какое оптимальное разрешение с учетом желаемого битрейта и кодека (в моем случае libx264)?

Не хватает части головоломки: каков целевой размер дисплея? В конце концов, при заданном битрейте 320x180 даст вам больше битов на пиксель, но затраты на качество при масштабировании до дисплея 1280x720 намного перевесят любые преимущества.
@JimMack Хороший вопрос. Целевым размером дисплея будет стандартный 24-дюймовый экран компьютера.

Ответы (3)

В случае кодека H.264 можно воспользоваться рекомендациями YouTube .

Вот рекомендации по сжатию видео Vimeo

Нет, такого не существует. Вы можете получить некоторые очень грубые рекомендации с точки зрения таких вещей, как рекомендуемые профили записи для Youtube, Vimeo или битрейты, используемые Netflix, Hulu и Amazon Instant Watch, но, в конце концов, битрейт, необходимый для данного разрешения, полностью соответствует содержанию. зависит, а также зависит от того, сколько времени вы можете потратить на кодирование.

Это сложная область и слишком глубокая, чтобы здесь все детализировать, но в целом, чем медленнее вы кодируете, тем меньше заметных артефактов у вас будет. Кроме того, чем меньше движения (или более предсказуемое движение) в кадре, тем меньший битрейт потребуется для отображения изображения с высоким разрешением. И наоборот, если вы используете быстрые параметры кодирования программного обеспечения, будет много артефактов или потерянный битрейт для уровня качества, которое вы получаете.

Сжатие видео — сложная область, и каждое видео необходимо немного откалибровать для достижения наилучших результатов. В качестве альтернативы вы можете использовать кодирование на основе качества, которое будет изменять битрейт по мере необходимости, чтобы сохранить заданный уровень качества (отсутствие артефактов). Тогда это не будет зависеть от разрешения файла, это просто повлияет на то, сколько битрейта потребляется. . Более активные видео будут потреблять больше битрейта, а более статичные или предсказуемые видео будут потреблять меньше. Кроме того, более медленные кодировки будут использовать более низкие битрейты, а более быстрые кодировки будут использовать более высокие битрейты.

Вы правы, в какой-то момент визуально лучше уменьшить масштаб и получить более низкое разрешение, но менее артефактное видео. Битрейт, при котором это происходит, сильно зависит от того, насколько сжимаем ваш контент.

Один из способов судить об этом для x264 может состоять в том, чтобы посмотреть на коэффициент скорости. Для двухпроходного режима выход x264 включает коэффициент скорости. Для режима CRF значение CRF, которое вы устанавливаете, ЯВЛЯЕТСЯ коэффициентом скорости. Просто предполагаю, что коэффициент скорости, возможно, 30 или выше, может быть точкой, в которой вам было бы лучше уменьшить масштаб. Это все еще может зависеть от контента; например, если у вас есть очень детализированные, но очень статичные фоны, вы можете предпочесть, чтобы движущиеся части изображения были заблокированы/размыты, но фон имел высокое разрешение и четкость. (IIRC, поэкспериментируйте с силой AQ и / или psy-rd, чтобы контролировать распределение битов между долго отображаемыми статическими частями изображения и частями, которые меняются.)

В крайнем случае использования слишком высокого разрешения для вашего битрейта многие биты являются просто служебными данными для каждого макроблока (заголовки и т. д.), с небольшим пространством для векторов движения и коэффициентов DCT. Более новые кодеки, такие как h.265, имеют более крупные макроблоки (единицы кодирования в терминологии h.265), а также просто более высокую эффективность кодирования (лучший компромисс между скоростью и искажениями), поэтому они снижают точку, с которой вы должны начать масштабирование.

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

Чтобы узнать больше о кодировании, загляните на forums.doom9.org. Особенно http://forum.doom9.org/showthread.php?p=1691228#post1691228 , о котором я думал, когда писал это.