Nvidia NVENC (сокращение от Nvidia Encoder) [1] — это функция видеокарт Nvidia , которая выполняет кодирование видео , перекладывая эту трудоемкую задачу с центрального процессора на выделенную часть графического процессора . Он был представлен в серии GeForce 600 на базе Kepler в марте 2012 года (GT 610, GT620 и GT630 — это архитектура Fermi). [2] [3]
Кодировщик поддерживается во многих программах потокового вещания и записи, таких как vMix , Wirecast , Open Broadcaster Software (OBS) и Bandicam , а также в приложениях для редактирования видео, таких как Adobe Premiere Pro или DaVinci Resolve . Он также работает с функцией захвата игр Share , которая включена в программное обеспечение GeForce Experience от Nvidia. [4] [5] [6]
До марта 2023 года потребительские видеокарты GeForce официально поддерживают не более 3-х одновременно кодирующих видеопотоков независимо от количества установленных карт, но это ограничение можно обойти в системах Linux и Windows , применив неофициальный патч к драйверам . Это также разблокирует NVIDIA Frame Buffer Capture (NVFBC) , быстрый API захвата рабочего стола , который использует возможности графического процессора и его драйвера для ускорения захвата. [7] Профессиональные карты поддерживают от 3 до неограниченных одновременных потоков на карту, в зависимости от модели карты и качества сжатия. [2] В 2023 году ограничения были ослаблены, что позволило одновременно кодировать до 5 видеопотоков. [8] С января 2024 года базовым стало 8 одновременно кодируемых видеопотоков. [9]
Чипы Nvidia также оснащены встроенным декодером NVDEC (сокращение от Nv idia Dec oder), позволяющим переносить декодирование видео с ЦП на выделенную часть графического процессора. [2]
NVENC претерпел несколько аппаратных изменений с момента своего появления с первым графическим процессором Kepler (GK104). [10]
Первое поколение NVENC, которое используется всеми графическими процессорами на базе Kepler , поддерживает высокопрофильный H.264 (YUV420, кадры I/P/B, CAVLC/CABAC), H.264 SVC Temporal Encode VCE и режим кодирования дисплея. (нем. марка).
В документации NVidia указывается, что пиковая пропускная способность кодировщика составляет 8× в реальном времени при разрешении 1920×1080 (где базовый уровень «1×» равен 30 Гц). Фактическая пропускная способность зависит от выбранной предустановки, управляемых пользователем параметров и настроек, а также тактовой частоты графического процессора/памяти. Опубликованный рейтинг 8× достижим с использованием высокопроизводительной настройки NVENC, которая жертвует эффективностью и качеством сжатия ради пропускной способности кодера. Предустановка высокого качества работает значительно медленнее, но создает меньше артефактов сжатия.
Представленный в архитектуре Maxwell первого поколения , NVENC второго поколения добавляет поддержку высокопроизводительного профиля HP444 (YUV4:4:4, прогнозирующее кодирование без потерь) и увеличивает пропускную способность кодировщика до 16 раз в реальном времени, что соответствует примерно 1080p @ 480. Гц с предустановкой высокой производительности.
Maxwell GM108 не поддерживает аппаратный кодировщик NVENC.
Представленный архитектурой Maxwell второго поколения, NVENC третьего поколения реализует алгоритм сжатия видео High Efficiency Video Coding (также известный как HEVC, H.265), а также увеличивает пропускную способность кодера H.264 для покрытия разрешения 4K с частотой 60 Гц (2160p60). Однако он не поддерживает B-кадры для кодирования HEVC (только кадры I и P ). Максимальный размер единицы дерева кодирования (CU) NVENC HEVC составляет 32 (стандарт HEVC допускает максимум 64), а минимальный размер CU — 8.
В кодировании HEVC также отсутствует адаптивное смещение выборки (SAO). Адаптивное квантование, упреждающее управление скоростью, адаптивные B-кадры (только H.264) и функции адаптивной GOP были добавлены с выпуском Nvidia Video Codec SDK 7. [14] Эти функции используют ядра CUDA для аппаратного ускорения.
SDK 7 поддерживает две формы адаптивного квантования; Пространственный AQ ( H.264 и HEVC) и временной AQ (только H.264).
Карты потребительского уровня (GeForce) от Nvidia и некоторые профессиональные карты Quadro более низкого уровня ограничены тремя одновременными заданиями кодирования. Карты Quadro более высокого класса не имеют этого ограничения.
NVENC четвертого поколения реализует 10-битное аппаратное кодирование HEVC Main10. Он также удваивает производительность кодирования 4K H.264 и HEVC по сравнению с NVENC предыдущего поколения. Он поддерживает HEVC 8K, субдискретизацию цветности 4:4:4 , кодирование без потерь и адаптивное смещение выборки (SAO).
В Nvidia Video Codec SDK 8 добавлена эксклюзивная функция взвешенного прогнозирования Pascal ( на основе CUDA ). Взвешенное прогнозирование не поддерживается, если сеанс кодирования настроен с использованием B-кадров (H.264).
Для кодирования HEVC нет поддержки B-Frame , а максимальный размер CU составляет 32×32.
NVIDIA GT 1030 и Mobile Quadro P500 — это чипы GP108, которые не поддерживают кодировщик NVENC. [11]
В графике для ноутбуков NVIDIA MX Graphics не включает NVENC, поскольку они основаны на чипе GM108 поколения Maxwell или GP108 поколения Pascal. [15] GeForce MX350 — это чип GP107, кодировщик NVENC которого отключен во время производства.
Volta NVENC имеет производительность, аналогичную NVENC Паскаля. [1]
Он не поддерживает B-кадры HEVC.
В мобильной графике, как и в большинстве других видеокарт серии GeForce MX, GeForce MX450 не поддерживает NVENC, поскольку это чип TU117, аппаратный кодировщик которого постоянно отключен при его производстве. Однако GeForce MX550 поддерживает NVENC, поскольку его аппаратный кодировщик остается включенным на уровне производства.
NVENC шестого поколения реализует кодирование HEVC 8K со скоростью 30 кадров в секунду, B-кадры HEVC и B-кадры HEVC в качестве эталона (с поддержкой каждого и среднего режимов [16] ) и поддержку Alpha HEVC [17] и обеспечивает экономию битрейта до 25 % для HEVC и экономия битрейта до 15 % для H.264. Однако первоначальный выпуск Nvidia GeForce GTX 1650 не был исключен из этого поколения, поскольку вместо Turing использовался Volta NVENC. В 2020 году Nvidia обновила кодировщик NVENC карт GTX 1650, чтобы также использовать движок Тьюринга. [18] В GTX 1650 Super используется двигатель Turing NVENC, поскольку он основан на TU116, а не на TU117, использовавшемся в оригинальной GTX 1650. [19]
У Ampere по сути тот же движок поколения NVENC, что и у Turing. [20] Единственное существенное отличие состоит в том, что NVDEC получила поддержку декодирования AV1 (с зернистостью пленки).
Что касается мобильной графики начального уровня, GeForce MX570 на базе чипа GA107 выпускается в двух версиях, одна из которых (GeForce MX570 A) имеет аппаратный декодер и кодировщик, постоянно отключенные во время производства.
Nvidia анонсировала NVENC следующего поколения с аппаратным кодером AV1 с фиксированной функцией 8K, 10 бит, 60 кадров в секунду, в графических процессорах Ada Lovelace . [21] [22]
Ядро Nvidia NVENC SIP должно поддерживаться драйвером устройства . Драйвер предоставляет один или несколько интерфейсов (например, OpenMAX IL ) для NVENC. Доступ к ядру NVENC SIP возможен только через собственный API NVENC (в отличие от API VDPAU с открытым исходным кодом ).
Он поставляется в комплекте с драйвером GeForce от Nvidia .
NVENC доступен для операционных систем Windows и Linux. [2] Бесплатный драйвер устройства Nouveau с открытым исходным кодом не поддерживает Nvidia NVENC. [23]
Сравнение пропускной способности кодирования [36] [ нужна ссылка ]