Недавно проведя тщательный набор тестов моей новой видеокарты Nvidia RTX 4080 в ряде нелинейных и ресурсоемких графических приложений, я хотел глубже изучить новый кодировщик Nvidia 8-го поколения (NVENC), который поставляется с серией 4000 и ускоряет кодирование AV1, H.265 (HVEC) и H.264 (AVC). Я хотел узнать, как максимально эффективно использовать аппаратное обеспечение, особенно двойные кодировщики — на этот раз Nvidia включила два чипа кодировщика.

Он поддерживает AV1, а также H.265 и H.264

Немного предыстории пресетов
Часто говорят: «Хорошо, быстро, дешево — выбери два», и это очень хорошо подходит для постпродакшна. Кодирование имеет аналогичную взаимосвязь между качеством, скоростью и размером файла.

Например, если вы зафиксируете размер файла, зафиксировав битрейт, как это обычно бывает, вы можете получить более высокое качество за счет увеличения времени кодирования. Если вы исправите качество (скажем, с помощью ползунка постоянного качества в Handbrake), вы можете немного уменьшить размер файла, заняв больше времени с кодированием. Вы можете сделать это, выбрав другой пресет — например, показанный здесь для кодировщика x264 в Handbrake.

Предустановка определяется следующим образом:
Предустановка — это набор параметров, которые обеспечат определенную скорость кодирования по отношению к коэффициенту сжатия. Более медленная предустановка обеспечит лучшее сжатие (сжатие — это качество на размер файла). Это означает, что, например, если вы ориентируетесь на определенный размер файла или постоянный битрейт, вы добьетесь лучшего качества с более медленным пресетом. Точно так же для кодирования с постоянным качеством вы просто сэкономите битрейт, выбрав более медленный пресет ( источник ).
Однако реальный вопрос заключается в том, стоит ли вам тратить это дополнительное время. Некоторые люди просто выберут самый медленный пресет, зная, что им нужно самое высокое качество, и готовы ждать его. Лично я всегда хотел бы знать, стоит ли делать что-то медленнее — что, если вы ждете лишних 10 минут каждый день для улучшения на 0,01%, которое никто никогда не увидит? Что ж, оказывается, это именно так — не только для программных кодировщиков, таких как x264, но и для новой серии RTX 4000, о которой я расскажу позже.
Некоторое время назад я наткнулся на отличное исследование Яна Озера под названием « Выбор предустановки x264 », которое ясно показывает, что вы почти ничего не выигрываете, используя что-то более медленное, чем «более быстрое» предустановление с точки зрения качества, но это стоит вам немало времени. если вы это сделаете.

Пресеты для NVENC от Nvidia в Davinci Resolve
Аппаратный кодировщик Nvidia (NVENC) также имеет предустановки — официально называемые от P1 (самый быстрый) до P7 (самый медленный) , которые, согласно Nvidia, «определяют, например, структуру GOP, кадры B, упреждающее кодирование и т. д.» — то, что нужно большинству из нас. у меня нет времени разбираться, но это то же самое — потратить немного больше времени, чтобы получить немного более качественный или меньший файл.

И оказывается, что время экспорта сильно различается в этих пресетах. Я провел несколько тестов на RTX 4080, экспортировав 5-минутный клип DNxHR UHD 25fps во все три варианта вывода (H.264, H.265 и AV1) во всех 7 пресетах. Для H.265 и AV1 самая быстрая предустановка была примерно в 6 раз быстрее, чем самая медленная, с 50 до 300 кадров в секунду. Чтобы представить это в некотором контексте, если у вас есть 30-минутная временная шкала , предустановка «Очень медленно» займет более 15 минут, а предустановка «Очень быстро» — 2,5 минуты. Такого рода время складывается, если вы делаете это каждый день. Чтобы получить такую скорость экспорта, входной кодек должен быть ProRes или DNxHR (или эквивалентный мезонинный кодек) с уже кэшированными/отрендеренными эффектами — в противном случае кодер не будет загружаться достаточно быстро.

Двойные энкодеры
Есть также причина, по которой скорость кодирования резко возрастает для двух самых быстрых пресетов — именно здесь в игру вступают двойные энкодеры. Судя по всему, при определенных условиях новые карты могут разбивать видео на две половины и передавать каждую половину каждому кодировщику, а затем рекомбинировать их. Чтобы использовать двойные энкодеры в новой серии RTX 4000, вам необходимо выполнить следующие условия:
- Разрешение UHD или выше
- Предустановлено «Быстрее (P2)» или «Очень быстро (P1)».
- Настройка установлена как «Высокое качество» (в любом случае это значение по умолчанию)
- Экспортный кодек — AV1 или H.265.
Я также смог добиться этого только в Davinci Resolve (например, не в Premiere Pro или Shutter Encoder). Интересно, что кодирование H.265 теперь в целом быстрее, чем H.264 — я думаю, пришло время начать его использовать, если вы еще этого не сделали.

Но как насчет качества?
Конечно, большой вопрос заключается в том, каков компромисс в качестве для этих скоростей? Хотя вы можете и должны использовать свои глаза, чтобы увидеть, соответствует ли экспорт требуемому качеству, для более тонких различий лучше всего использовать что-то вроде PSNR или VMAF для оценки визуального качества.
VMAF — это «алгоритм перцептивной оценки качества видео, разработанный Netflix, удостоенный премии «Эмми». И вы можете использовать его бесплатно в FFmpeg — я следовал этому руководству (опять же от Яна Озера). Действительно хорошая вещь в VMAF заключается в том, что это оценка из 100, что делает его довольно простым для понимания, и, согласно Netflix , оценка более 85 — это хорошо .

Несмотря на то, что в пресетах есть небольшое падение качества, оно действительно очень небольшое — менее половины точки VMAF и незаметно невооруженным глазом. На самом деле, с любой оценкой выше 90 мне вообще трудно увидеть какие-либо артефакты. Гораздо большая разница видна при использовании H.265 вместо H.264 (а AV1 даже лучше). Конечно, реальные цифры будут зависеть от исходного материала, но я провел несколько других тестов и получил аналогичные результаты.

Хотя скорость кодирования не так сильно влияет на качество, битрейт/размер файла влияют. Вы можете увидеть здесь тестовый файл 1080p, закодированный в H.265 с битрейтом от 10 Мбит/с до 1 Мбит/с — качество мало меняется в зависимости от предустановок, но сильно зависит от битрейта. На мой взгляд, я был очень доволен кодированием выше 6 Мбит/с.

Учитывая, что большинству людей не хватает места на диске или скорости интернета, увеличение битрейта, безусловно, является способом повысить качество, сохраняя при этом преимущество быстрого кодирования с самыми быстрыми пресетами.
Premiere Pro
В Premiere Pro есть более ограниченные возможности, но вы все равно можете ускорить экспорт, разумно изменив настройки. Предустановки недоступны в H.264, а AV1 пока вообще недоступен (кроме использования стороннего плагина Voukoder ), но если вы выберете HVEC (H.265) в качестве формата и наберете в настройках видео, вы увидите пять вариантов, перечисленных как «Качество» — почему их пять, а не семь, я понятия не имею (моя догадка заключается в том, чтобы сделать это проще, опустив два внешних). Вам также необходимо убедиться, что вы выбрали однопроходное аппаратное кодирование, которое использует кодировщик Nvidia NVENC.

Опять же, здесь можно существенно сэкономить время, хотя, к сожалению, ни один из них, похоже, не имел доступа к двойным энкодерам. Но я увидел увеличение скорости примерно на 67% при переходе от настройки по умолчанию «Хорошо» к настройке «Ниже» — и на этот раз падение качества было совершенно незначительным (всего 0,1 балла VMAF во всех пресетах). И достижение 167 кадров в секунду довольно впечатляет, даже если это не совсем 300 кадров в секунду Davinci Resolve.

Shutter Encoder
Shutter Encoder — это популярный бесплатный инструмент для кодирования, поэтому я подумал, что тоже должен взглянуть на него. Это очень полезно и во многих отношениях лучше, чем Handbrake (например, сохраняет тайм-код нетронутым). Это внешний интерфейс для FFmpeg, и по умолчанию он использует кодировщики ЦП, такие как x264. Это замечательно, если у вас более старая видеокарта или вам нужно максимально возможное качество. Вы можете заставить его использовать NVENC, если хотите для более высоких скоростей — в моих тестах я получил 10-кратное увеличение скорости, изменив настройки по умолчанию на NVENC «очень быстро». Он работал аналогично Premiere со 183 кадрами в секунду и снова, похоже, не мог использовать двойные кодировщики.

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

Выводы
Аппаратный кодировщик Nvidia (NVENC) был очень высокого качества на протяжении многих поколений — достаточно близко к качеству программных кодировщиков, чтобы сделать его полезным и намного быстрее. В этой серии RTX 4000 это даже лучше, и включение двойных энкодеров довольно интересно. Возможность доступа к ним в Davinci Resolve — это фантастика, скорость кодирования достигает впечатляющих 300 кадров в секунду с использованием самых быстрых пресетов. И эти скорости связаны с очень небольшим падением качества, плюс вы все равно можете компенсировать это, немного увеличив битрейт, без каких-либо реальных недостатков.
Я также думаю, что пришло время отказаться от H.264 в пользу H.265. Аппаратное обеспечение на принимающей стороне теперь может легко воспроизвести его, и теперь его можно сделать быстрее, а также улучшить качество. H.264 исполнилось 20 лет, и теперь H.265 можно рассматривать как «безопасный» выбор по сравнению с AV1, если вам от этого станет лучше.
Автор — Ник Лир
Также обязательно прочтите:
ПОЧЕМУ ВАМ СЛЕДУЕТ ИСПОЛЬЗОВАТЬ PRORES?
ОБЗОР КОДЕКОВ В ADOBE PREMIERE PRO
ДЕКОДИРОВАНИЕ H.264/H.265 В DAVINCI RESOLVE
ПЛАВНОЕ ВОСПРОИЗВЕДЕНИЕ ВИДЕО В DAVINCI RESOLVE 18
СРАВНЕНИЕ BLACKMAGIC RAW И PRORES RAW
ПОЧЕМУ НЕ ВСЕГДА СТОИТ СНИМАТЬ В 4К И RAW?
поддержать нас — https://vk.com/donut/club_fidller
Приобрести apple box или заказать 3д печать/3д сканирование/переходник для объективов, а также изготовить оборудование под заказ очень просто, достаточно написать нам в telegram — https://t.me/fidller
мы в телеграме — https://t.me/fidller_com
мы вконтакте https://vk.com/club_fidller

Aleksandr Fidller
