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, который выполняет операции сжатия видео независимо от основных шейдерных ядер. Процесс кодирования включает несколько этапов:
- Захват кадра — видеопоток (например, с экрана монитора или с камеры) передаётся в буфер NVENC.
- Преобразование цвета — если исходное видео имеет цветовое пространство, отличное от целевого (например, RGB в YUV), выполняется преобразование.
- Сжатие — блок применяет алгоритмы, соответствующие выбранному кодеку (H.264, H.265, AV1). Это включает разделение кадра на макроблоки, оценку движения, дискретное косинусное преобразование и энтропийное кодирование.
- Вывод битового потока — сжатые данные передаются в память системы или напрямую в потоковый сервер.
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 →