Открыть сервис

NVENC

NVENC (NVIDIA Encoder) — это аппаратный блок кодирования видео, встроенный в графические процессоры компании NVIDIA, предназначенный для ускорения процесса преобразования видеосигнала в сжатые цифровые форматы (кодеки) в режиме реального времени. В отличие от программного кодирования, выполняемого центральным процессором (CPU), NVENC использует специализированные вычислительные ядра GPU, что позволяет снизить нагрузку на основную систему и повысить производительность при записи, стриминге и редактировании видео.

История

Разработка аппаратного кодирования видео началась в NVIDIA в конце 2000-х годов. Первое поколение NVENC было представлено в 2012 году с выходом архитектуры Kepler (серия GeForce GTX 600). Изначально технология была ориентирована на профессиональные видеокарты Quadro и Tesla, но вскоре стала доступна на потребительских моделях GeForce, хотя с ограничениями по функциональности (например, максимальное количество одновременных сеансов кодирования).

Второе поколение NVENC появилось в 2014 году с архитектурой Maxwell (GTX 900). Оно поддерживало кодирование в H.264 (AVC) с более высоким качеством и производительностью. С выходом архитектуры Pascal в 2016 году (GTX 1000) NVENC получил поддержку кодирования в H.265 (HEVC) и улучшенные алгоритмы обработки.

Третье поколение NVENC (архитектура Turing, 2018 год) стало значительным прорывом: оно добавило поддержку кодирования в H.265 с 10-битной глубиной цвета, а также ввело кодирование в AV1 (начиная с серии GeForce RTX 30 на архитектуре Ampere, 2020 год). В 2022 году с выходом архитектуры Ada Lovelace (RTX 40) NVENC получил поддержку кодирования в AV1 с улучшенными параметрами и кодирование в H.264 с 10-битной глубиной.

Принцип работы

NVENC представляет собой выделенный блок на кристалле GPU, который выполняет операции сжатия видео независимо от основных шейдерных ядер. Процесс кодирования включает несколько этапов:

  1. Захват кадра — видеопоток (например, с экрана монитора или с камеры) передаётся в буфер NVENC.
  2. Преобразование цвета — если исходное видео имеет цветовое пространство, отличное от целевого (например, RGB в YUV), выполняется преобразование.
  3. Сжатие — блок применяет алгоритмы, соответствующие выбранному кодеку (H.264, H.265, AV1). Это включает разделение кадра на макроблоки, оценку движения, дискретное косинусное преобразование и энтропийное кодирование.
  4. Вывод битового потока — сжатые данные передаются в память системы или напрямую в потоковый сервер.

NVENC работает в режиме реального времени, обеспечивая низкую задержку (latency), что критично для стриминга и видеоконференций. Он поддерживает фиксированные и переменные битрейты, а также многопроходное кодирование (2-pass) для улучшения качества.

Классификация и поколения

NVENC классифицируется по поколениям, каждое из которых связано с определённой архитектурой GPU:

  • NVENC 1-го поколения (Kepler, 2012): поддерживает H.264, максимальное разрешение 4K, битрейт до 50 Мбит/с.
  • NVENC 2-го поколения (Maxwell, 2014): улучшенное качество H.264, поддержка 4K при 60 FPS, битрейт до 100 Мбит/с.
  • NVENC 3-го поколения (Pascal, 2016): добавлена поддержка H.265, 8K при 30 FPS, битрейт до 200 Мбит/с.
  • NVENC 4-го поколения (Turing, 2018): поддержка H.265 с 10-битной глубиной, улучшенное кодирование H.264, битрейт до 500 Мбит/с.
  • NVENC 5-го поколения (Ampere, 2020): добавлена поддержка AV1, 8K при 60 FPS, битрейт до 1 Гбит/с.
  • NVENC 6-го поколения (Ada Lovelace, 2022): поддержка AV1 с улучшенными параметрами, H.264 с 10-битной глубиной, битрейт до 1,5 Гбит/с.

Каждое поколение также включает улучшения в алгоритмах оценки движения, фильтрации и обработки шумов.

Технические характеристики

Основные характеристики NVENC включают:

  • Поддерживаемые кодеки: H.264 (AVC), H.265 (HEVC), AV1, VP9 (только декодирование), MPEG-2 (только декодирование).
  • Максимальное разрешение: до 8K (7680×4320) для H.265 и AV1, до 4K для H.264.
  • Частота кадров: до 240 FPS для 1080p, до 120 FPS для 4K, до 60 FPS для 8K.
  • Битрейт: от 1 Мбит/с до 1,5 Гбит/с в зависимости от поколения и кодека.
  • Цветовая глубина: 8-бит и 10-бит (для H.265 и AV1).
  • Цветовые субдискретизации: 4:2:0, 4:2:2 (только для некоторых поколений), 4:4:4 (только для профессиональных карт Quadro).
  • Количество одновременных сеансов: от 1 (на потребительских GeForce) до 16 (на профессиональных Quadro и Tesla).

Применение

NVENC широко используется в различных областях, где требуется аппаратное ускорение кодирования видео:

  • Стриминг игр: программы OBS Studio, XSplit, Streamlabs Desktop используют NVENC для кодирования видеопотока в реальном времени, снижая нагрузку на CPU и улучшая производительность игры.
  • Запись видео: утилиты NVIDIA ShadowPlay (GeForce Experience) и сторонние программы (например, Bandicam, Action!) позволяют записывать игровой процесс с минимальным влиянием на FPS.
  • Видеомонтаж: программы Adobe Premiere Pro, DaVinci Resolve, Final Cut Pro (на Windows через CUDA) могут использовать NVENC для ускорения экспорта видео.
  • Видеоконференции: приложения Zoom, Microsoft Teams, Discord поддерживают аппаратное кодирование для улучшения качества и снижения задержек.
  • Профессиональное вещание: телевизионные станции и стриминговые платформы (Twitch, YouTube) используют NVENC для кодирования в H.264 и H.265.
  • Облачные сервисы: виртуальные рабочие столы и игровые стриминговые платформы (NVIDIA GeForce NOW, Google Stadia) применяют NVENC для кодирования видеопотоков на серверах.

Преимущества и недостатки

Преимущества

  • Высокая производительность: NVENC выполняет кодирование в десятки раз быстрее программных кодеков на CPU, особенно на высоких разрешениях и битрейтах.
  • Низкая задержка: аппаратное кодирование обеспечивает минимальную задержку (менее 1 миллисекунды), что критично для стриминга и видеоконференций.
  • Энергоэффективность: использование специализированных блоков снижает энергопотребление по сравнению с программным кодированием на CPU.
  • Поддержка современных кодеков: начиная с поколения Ampere, NVENC поддерживает AV1, который обеспечивает лучшее сжатие при том же качестве.

Недостатки

  • Качество сжатия: при низких битрейтах (менее 10 Мбит/с для 1080p) качество NVENC может уступать программным кодекам (например, x264 в режиме slow), хотя с каждым поколением этот разрыв уменьшается.
  • Ограничения на потребительских картах: на видеокартах GeForce число одновременных сеансов кодирования ограничено (обычно 1-2), в то время как на профессиональных Quadro и Tesla это ограничение отсутствует.
  • Зависимость от драйверов: качество и функциональность NVENC могут зависеть от версии драйверов NVIDIA, что иногда приводит к несовместимости с некоторыми программами.
  • Отсутствие поддержки некоторых кодеков: NVENC не поддерживает кодирование в VP9, AV1 (до поколения Ampere) и другие форматы, используемые в некоторых браузерах и платформах.

Сравнение с конкурентами

Основными конкурентами NVENC являются аппаратные кодировщики от других производителей GPU:

  • AMD VCE (Video Coding Engine) / VCN (Video Core Next): встроены в GPU AMD Radeon. VCE/VCN поддерживает H.264, H.265 и AV1 (начиная с архитектуры RDNA 3). Качество кодирования VCE/VCN при низких битрейтах традиционно считалось ниже, чем у NVENC, но с поколением RDNA 3 разрыв сократился.
  • Intel Quick Sync Video (QSV): встроен в процессоры Intel (CPU) с интегрированной графикой. QSV поддерживает H.264, H.265, VP9 и AV1 (начиная с поколения Alder Lake). Качество QSV при высоких битрейтах сопоставимо с NVENC, но при низких битрейтах может уступать.
  • Apple Video Toolbox: аппаратное кодирование на устройствах Apple (Mac, iPhone, iPad) с чипами M1/M2. Поддерживает H.264, H.265 и AV1 (начиная с M3). Качество и производительность высоки, но доступно только в экосистеме Apple.

В целом, NVENC считается одним из лучших аппаратных кодировщиков по качеству и производительности, особенно в поколениях Turing и новее.

Интересные факты

  • NVENC используется в проекте NVIDIA GeForce NOW для стриминга игр на облачные серверы, что позволяет обеспечить низкую задержку и высокое качество даже на слабых клиентских устройствах.
  • В 2020 году NVIDIA выпустила обновление драйверов, которое сняло ограничение на количество одновременных сеансов кодирования на некоторых картах GeForce RTX 20 и RTX 30, что позволило использовать их в профессиональных задачах.
  • NVENC поддерживает кодирование в H.264 с 10-битной глубиной цвета только начиная с поколения Ada Lovelace, что делает его привлекательным для HDR-стриминга.
  • В некоторых тестах (например, от Codec Wars) NVENC на архитектуре Ada Lovelace показывает качество, сопоставимое с программным кодировщиком x264 в режиме medium, при значительно меньшей нагрузке на систему.

Источники

  • NVIDIA Developer Documentation: "NVENC and NVDEC API"
  • AnandTech: "NVIDIA NVENC Performance Analysis" (2016, 2020)
  • OBS Project: "Hardware Encoding with NVENC"
  • Codec Wars: "NVENC vs x264 Quality Comparison" (2023)
  • Wikipedia: "Nvidia NVENC" (английская версия)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →