nvidia nvenc что такое
Как использовать кодеки Nvidia NVENC: HEVC или H264
Выбираем кодек для записи игровых видео с графической картой NVIDIA:
H.264 против HEVC: какой кодек лучше?
Хотя H.264 долго оставался стандартом качества для западных стримеров, сейчас лучшим выбором будет HEVC. Хотя максимальный стандарт качества у них одинаковый, HEVC лучше справляется с предоставленным ему дисковым пространством. Если записать два видео, одинаковых по продолжительности, содержанию и месту на жёстком диске, видео, кодированное в HEVC, будет лучшего качества. При одинаковом качестве записи файлы HEVC всегда меньше, чем видео, записанные в H.264.
Почему же многие пользователи до сих пор предпочитают H.264? Проблема нового формата — в высоких требованиях и совместимости:
Для стримеров, которые не обновляют железо каждый год, но всё же обладают достаточно мощными видеокартами, чтобы играть в ресурсоёмкие игры, H.264 на сегодняшний день будет лучшим выбором.
Сравнение скорости, качества и размера видео H.264 и HEVC
В приведённой ниже таблице для сравнения указаны показатели видео, записанного разными кодировщиками.
Кодек | Размер | Качество | Скорость | Особенности |
---|---|---|---|---|
HEVC | 33,5 Мб | Выше среднего — соответствует настройкам | Высокая | Кодек обладает более совершенным алгоритмом сжатия без потери качества |
H264 | 34,2 Мб | Выше среднего — соответствует настройкам | Высокая | Лучший кодек для большинства пользователей за счёт низких требований к железу |
Для сравнения использовалось видео продолжительностью в одну минуту, записанное в разрешении 1920×1080 при частоте кадров (FPS) 30 кадров в секунду. Качество записи в обоих случаях было установлено на 80 из 100.
Чтобы использовать кодировщик Nvidia NVENC, выполните следующие шаги:
Как настроить кодек:
Если вы не видите нужные опции кодеков H264 или HEVC в панели выбора кодеков Bandicam, попробуйте следующие решения:
Кодировщики NVENC работают на операционных системах Win 7, 8 и 10. В Windows XP и более старых ОС опции NVENC будут недоступны.
Обратите внимание: не все модели, поддерживающие H264, будут поддерживать новый стандарт HEVC.
Если вы устанавливали или обновляли Bandicam в последние несколько лет, проблем возникнуть не должно: кодировщик NVENC H264 поддерживается с Bandicam 2.0, а обновлённый стандарт NVENC HEVC — с 2.4.0.
Сообщение об ошибке: не удалось инициализировать кодек. Хотите попробовать снова с кодеком H.264 (CPU)?
Если компьютеру не хватает ресурсов или NVENC используется другой программой, вы получите сообщение об ошибке. Чтобы начать запись, закройте все ненужные приложения, чтобы освободить память, и попробуйте ещё раз. Если проблема сохраняется, используйте другой кодек, например, H.264 (CPU). Если вам нужно использовать Bandicam одновременно с другими программами, которые задействуют технологию NVENC (STEAM VR, Shadow Play и т.д.), загрузите программное решение с GitHub.
Эффективное кодирование видео в Linux c Nvidia NVENC: часть 1, общая
Об NVENC
Nvidia NVENC это технология, позволяющая кодировать видео в H.264 (и H.265 для последних процессоров Maxwell) силами GPU со скоростями несколько сот кадров в секунду (в зависимости от профиля и разрешения). Вендор предоставляет возможность использования этой технологии в виде набора разработчика NVENC SDK.
Реализация
Имеется множество утилит для различных платформ, которые в каком-то виде дают доступ к функционалу SDK. В марте 2015 года вышел релиз ffmpeg, который включил в себя поддержку NVENC. ffmpeg занимает центральное положение среди всего множества свободного и не очень ПО для работы с видео, поэтому с практической точки зрения он наиболее интересен. Этим инструментом можно и обрабатывать видеофайлы (1, 2), и вести потоковое вещание (1, 2). С момента мартовского релиза вышел ещё один, который включил в себя ещё больше опций для кодека nvenc и поддержку H.265 (HEVC).
Сборкой FFmpeg с поддержкой NVENC мы и займёмся.
Развёртывание
Драйверы и рантайм CUDA
Драйверы и библиотеки установить за раз одним пакетом. Из репозитория лучше ничего не использовать.
На все вопросы уважаемого компьютера следует ответить утвердительно. После установки — перезагрузить.
Заголовочные файлы nvenc
Для сборки приложений с nvenc sdk неободимы некоторые заголовочные файлы. Раньше их необходимо было стягивать из виндовой версии SDK. Но прогресс идёт семимильными шагами и теперь этот файл можно стянуть из примеров в линуксовом SDK. Найдите в примерах (были установлены вместе с рантаймом и драйверами на предыдущем шаге) файлы
nvCPUOPSys.h
nvEncodeAPI.h
nvFileIO.h
NvHWEncoder.h
nvUtils.h
и положите их в /usr/include. Они потребуются только один раз, при сборке ffmpeg. На всех машинах они не нужны.
FFMPEG
Начать его сборку лучше с установки всех сборочных зависимостей.
Я мог что-то забыть, что-то может измениться. Чтобы найти недостающий для сборки файл, не стесняйтесь пользоваться apt-file:
Скачиваем с сайта последнюю версию ffmpeg, распаковываем, конфигурируем, собираем и устанавливаем:
Применение
Запуск
Опции запуска все точно такие же, как при софтверном кодировании, но только вместо libx264 видеокодек будет называться nvenc (он же nvenc_h264) для h.264 и nvenc_hevc для h.265.
Производительность и качество
Чтобы произвести 1 час видео в 4х качествах с хорошей точностью транскодинга, нужно или потратить примерно 1 час машинного времени двух шестиядерных ксеонов, или чуть более получаса времени десктопа с такой видеокартой. Качество результатов получается неотличимое от программного кодека x264 с аналогичными установками.
Что такое NVIDIA NVENC: особенности и способы использования
Что такое NVENC?
Кодировщик NVENC изначально совместим со многими программами потоковой передачи и записи, такими как Wirecast, Open Broadcaster Software (OBS) и Bandicam, а также работает с функцией Share game capture, которая включена в программное обеспечение GeForce Experience.
Видеокарты GeForce на потребительском рынке (непрофессиональные) поддерживают только 2 видеопотока кодирования одновременно, независимо от количества установленных видеокарт, поэтому даже в конфигурациях Quad-SLI вы можете кодировать только два видео одновременно. Со своей стороны, профессиональная графика поддерживает до 21 одновременной передачи на видеокарту, в зависимости от модели и выбранного качества сжатия.
NVENC сопровождается NVDEC (NVIDIA Video DECoder) для выполнения противоположной операции, дополняя друг друга. На следующей диаграмме вы можете найти всю связанную с этим информацию.
Первое поколение этой технологии пришло с архитектурой Kepler, и с тех пор она увеличивается почти на одну версию на поколение. Таким образом, второе поколение появилось с графическими процессорами Maxwell GM107, третье с Maxwell GM20X, четвертое с Pascal GP10X, пятое с Volta GV10X и Turing TU117 и шестое поколение с Turing TU10X / TU116. Ожидается, что седьмое поколение NVENC прибудет с Ampere, включая дальнейшие улучшения и большую производительность.
Какие преимущества это дает?
Как мы только что объясняли, NVENC позволяет выполнять аппаратное кодирование и декодирование непосредственно на графическом процессоре, освобождая ЦП из этой ресурсоемкой задачи. Имея в своем распоряжении гораздо больше ядер, которые также оптимизированы для обработки видеоинформации, вы не только получаете значительно более высокую производительность, но и более эффективны с точки зрения производительности на ватт.
Хорошая часть этой системы заключается в том, что большинство программ для кодирования видео поддерживают ее изначально, поэтому, как пользователям, нам нужно будет только выбрать ее в параметрах этой программы. Например, в Open Broadcaster Software мы можем выбрать обработку видео через NVENC в опциях.
Для пользователей, у которых есть видеокарта NVIDIA, возможность использования этой функции высвободит много ресурсов процессора, что позволит повысить его производительность, но необходимо учитывать, что эта задача переходит к графическому процессору, и по этой причине графическая производительность может быть снижена, если видеокарта недостаточно мощная.
NVIDIA NVENC OBS Guide
ABOUT THIS GUIDE
The objective of this guide is to help you understand how to use the NVIDIA encoder, NVENC, in OBS. We have simplified some of the concepts to make this accessible to a wider audience. If you think we can improve any part of this guide or find any issues or mistakes, please post below and we will be happy to update it.
BITRATE, RESOLUTION AND FRAMERATE
Encoding is all about compressing images. The smaller the size of the image, the less we must compress it and the more quality it keeps. While the same applies for framerate, a viewer can really notice a drop in FPS but not so much in resolution, so we will always try to stream at 60 FPS.
First, run a speed test to determine your upload speed (e.g. Speed Test). We want to use around 75% of your upload speed, as the game and other programs such as Discord will also fight for bandwidth.
Then, we will determine the resolution and FPS that we can use for such bitrate. Most streaming sites have recommendations (Twitch, Youtube, Facebook Gaming) on what to use. These are ours:
Upload Speed
Bitrate
Resolution
Framerate
* Important Note for High Motion Content. If you are going to stream high motion scenes (i.e. Racing games, some Battle Royale games, etc.) we highly recommend reducing your resolution. High motion content cannot be compressed as much, and can suffer from more artifacting (encoding errors) that make your stream look “blocky”. If you reduce the resolution, you reduce the data being encoded, and the resulting viewer quality is higher. For example, for Fortnite, many streamers decide to stream at 1600×900 60 FPS.
Note for New and Upcoming Streamers to Twitch. Transcoding allows a viewer to view your video on a different resolution, thus requiring a lower bandwidth. Twitch only offers guaranteed transcoding to Partners; non-partners may receive transcoding, but it is not guaranteed. This is important if your viewers are on mobile phones or their internet speed is not as fast. You may want to consider streaming at a lower bitrate and resolution to lower the bandwidth required to see your channel.
RECOMMENDED SETTINGS
These are our recommended settings for OBS Studio 23.0 and up. You’ll want to test and adjust these settings by proceeding with a local recording to verify you’re happy with the results.
To access the settings, click on the Settings button on the bottom right.
VIDEO TAB SETTINGS
OUTPUT TAB SETTINGS
If you want an easy, out of the box configuration, then do the following:
OTHER SETTINGS
There are 2 other things you want to configure to ensure a smooth stream:
If for some reason you don’t want to run OBS in Admin mode, you can also limit your GPU usage to be below the 95% threshold. To do this, you can:
And there you have it! We hope this helps you improve your stream quality and reach your goals. Leave us a comment if this worked for you or if you’d like us to update the guide with other info. Happy streaming!
ADVANCED SETTINGS
If you want to mess around with all settings, here are our in-depth recommendations.
ABOUT NVENC
NVENC is NVIDIA’s encoder. It’s a physical section of our GPUs that is dedicated to encoding only. This means that your GPU can operate normally regardless of whether you use this region to stream or record. Other encoders, such as x264, use your CPU to encode, which takes resources away from other programs such as your game. That’s why using NVENC allows you to play games at a higher framerate and avoid stuttering, giving you and your viewers a better experience.
In the last two GPU generations we have made great improvements to NVENC, helping deliver best-in-class output quality. NVENC in the GTX 10-series GPUs provides superior quality than x264 Very Fast, the most commonly used x264 preset. And in the new RTX 20 and 30-series, NVENC performs better than x264 Fast and on par with x264 Medium, a preset that requires an expensive dual PC setup.
One thing that is great about NVENC on the GeForce RTX 20 and 30-series and GeForce GTX 1650 Super and up is that all GPUs have the same NVENC with the same performance and quality, from the RTX 2060 to the RTX 3090. NVENC also benefits from our own NVIDIA Video Codec SDK, an advanced set of tools that help improve the encoded quality and that we constantly update to help you get the best out of your NVIDIA card.
Finally, if you are using an NVIDIA GPU you have access to GeForce Experience’s Game Filters, which allow you to further improve the image quality of your viewers via software by enhancing color, adding sharpness, or introducing cool effects.
ABOUT NVIDIA BROADCAST
NVIDIA Broadcast transforms your gamer den into a home broadcast studio, upgrading standard webcams and microphones into premium, smart devices through the power of AI. Improve the video and audio quality of your livestream through AI capabilities such as virtual background or webcam auto frame, and microphone noise removal. With dedicated AI processors called Tensor Cores on GeForce RTX GPUs, the AI networks are able to run high-quality effects in real-time.
NVIDIA Broadcast features include:
When not broadcasting, these features can also enhance your video conference calls and voice chats, making NVIDIA Broadcast a perfect AI companion for broadcasters and gamers alike.
NVIDIA Broadcast is compatible with a wide range of broadcasting, video conferencing and voice chat apps. These include OBS Studio, Streamlabs, Xsplit, Discord, Skype, Zoom, Webex, Microsoft Teams, Google Meet and more.
ABOUT THE GEFORCE-OPTIMIZED NEW VERSION OF OBS STUDIO
We have collaborated with OBS to improve support for NVIDIA GeForce GPUs. The new OBS Studio, version 23.0, will leverage the NVIDIA Video Codec SDK, which will greatly improve performance and reduce the FPS impact of streaming and recording. We have also tweaked some of the background settings of NVENC to improve quality, especially for the RTX 20-Series GPUs.
HOW TO DEBUG PROBLEMS
Streaming can be very complicated, but it’s particularly hard to debug. There are many things at play when you stream, so we are going to try to provide you some help on how to identify what is going wrong and how to fix it.
Components
Streaming uses the following components:
If something is failing, we want to first identify what component may be failing, so we don’t go crazy trying to fix something that was never broken in the first place. Typically, this means that the first test you should do is a Speed Test to make sure that you don’t have internet problems in your local internet or your connection. Second, make sure the platform hasn’t issued an alert that they are down or are experiencing problems. Then based on what error you get, you start looking at one thing or another in your PC.
How to check what’s happening to the encode
OBS Studio includes a very useful tool: the Stats Window. To bring it up, click on View > Stats. This window will show you Lagged and Skipped frames, Dropped frames, and Encode FPS.
This window will show you:
Common Error Types
Stream is missing FPS. The stats window will show missed frames. While streaming and missing frames, pull up the Task Manager > Performance, Click on GPU and check the 3D load and Encoder load.
Image looks very washed out. The most likely issue is trying to push too much quality with not enough bitrate. Consider reducing the resolution, and frame rate (if needed), and try again. If quality improves, then adjust until you find your sweet spot.
NVENC кодирование
*Кроме GM108 (и как мы выяснили GP108).
**Кроме GP100 (ограничение разрешения, до 4K).
Таблица с поддерживаемыми форматами и разрешениями для видеокарт: Quadro, GRID Tesla
Ограничение на три потока есть и среди профессиональных бюджетных видеокарт, а именно это касается следующих моделей: Quadro P400, Quadro P600, Quadro P620, Quadro P1000, Quadro T1000 (TU117). Также этот блок выпилен у мобильных профессиональных видеокарт: Quadro P500 (GP108), Quadro P520 (GP108).
Качество кодирования NVENC & QuickSync (nVidia GeForce RTX 2070 vs Intel Core i7-7700K):
Качество кодирования CPU & NVENC (x264/x265 vs NVENC):
Процессор & QSV & NVENC:
Качество кодирования процессором: x264 и x265.
Общее кодирование с низким битрейтом 720р видео: sakura_op.mpg 1280×720 30fps 3501 frame (аниме).
Качество кодирования только силами центрального процессора (CPU):
Качество кодирования CPU (QSV Kabylake) & NVENC (NVIDIA GeForce RTX 2070):
Качество кодирования CPU (Kabylake) & NVENC (NVIDIA GeForce RTX 2070):
Первая реализация NVENC кодирования появилась в программах Adobe Premiere Pro CS6 (Adobe Premiere Pro CC 2021) и Media Encoder CS6 (Adobe Media Encoder CC 2021) на платформе Windows. Для этого необходимо использовать свободно распространяемый плагин NVENC-export. Скачать плагин nvenc_export_v101.zip (объем архива: 2.8 Мбайта), можно на адобовском форуме в ветке по данному плагину:
Требования к железу и софту рабочей станции, для нормального использования NVENC плагина:
1)Видеокарты на чипсетах NVidia GPU Kepler с 1 ГБ видеопамяти или более (GTX 650 или выше, GT 650M или выше). Обратите внимание, если у вас включено Mercury Playback Engine GPU Acceleration (CUDA) ускорение, то имейте в виду NVENC-плагин потребляет некоторую дополнительную видеопамять, поскольку он использует ваше GPU для выполнения H.264-кодирования. Поэтому рекомендуется использовать видеокарты с объемом бортовой памяти 2Гб и более.
2)Установить в систему Microsoft Visual C++ 2010 SP1 Redistributable Package (x64) / vcredist_x64.exe. Выбираем: восстановить распространяемые части Microsoft Visual C++ 2010 x64. И нажимаем на кнопку: Далее >
По окончании процесса восстановления, нажимаем на кнопку: Готово.
Инструкция по установке в Adobe Premiere Pro CS6:
1)Просто копируем файл nvenc_export.prm в следующую директорию: C:\Program Files\Adobe\Adobe Premiere Pro CS6\Plug-ins\Common и C:\Program Files\Adobe\ Adobe Media Encoder CS6\Plug-ins\Common.
2)Для выбора NVENC-plugin в Premiere Pro, Ctrl+M и выбираем: Export Settings > Format: NVENC_export.
Качество: при использовании средне-высокого битрейта, NVENC кодирование сопоставимо с качеством штатного MainConcept, а при использовании низких битрейтов MainConcept лучше работает с меньшим количеством артефактов.
Как работает плагин: он забирает видеокадры из приложения Adobe Premiere Pro, затем преобразует кадры из несжатых YUV4:2:0 к планарному формату 420planar и далее в NV12-формат (с хост-процессором и системной памяти). После предварительной обработки переформатированное видео передается в nvencodeAPI. И отсюда, аппаратные средства NVENC, и управляют всеми аспектами сжатия видео. Когда NVENC аппаратная обработка будет закончена, он вызывает плагин для вывода отдать элементарные потоки, так как NVENC-аппаратные средства не кодирует ни аудио, ни создает мультиплекс, это по-прежнему осуществляется в программном обеспечении (на хост-процессоре).
Аппаратный блок NVENC имеет очень маленькие процессорные накладные расходы. Но поскольку кодирование видео, это всего один этап на всем пути рендеринга Adobe, загрузка центрального процессора скорее всего будет высокой и при использовании NVENC-плагина.
Максимально поддерживаемй размер кадра и профиль: H264 High-profile @ Level 5.1, 3840×2160 @ 30fps.
NVENC-плагин находится в статусе бета, поэтому многие вещи у него не работают: кодирование чересстрочного видео (нет поддержки в драйверах nVidia). Аудио поддержка очень ограничена: только несжатое PCM, нет поддержки AAC или Dolby Digital. Мультиплексор, только поддержка MPEG-2 TS за счет использования сторонних инструментов TSMuxer.exe. MPEG-2 TS файлы проигрываются в Windows Media Player (WMP) без звука, так как проигрыватель не поддерживает PCM-аудио в MPEG-2 TS файлах. Нет поддержки MPEG-4 (*. MP4).
NVENC не поддерживает работу в Multi-GPU режиме, просто у нас есть возможность выбрать только одну видеокарту/GPU. Из описаний работы технологии NVENC понятно, что аппаратный блок NVENC одинаков у всех видеокарт Kepler от GTX 650 до Titan/GTX 780, поэтому нет надобности тестить все видеокарты семейства Kepler, достаточно остановиться на одном чипсете семейства. Характеристики Gainward GeForce GTX 660 2048MB GDDR5:
Настройки плагина в Export Settings:
Закладка Multiplexer, доступен выбор двух контейнеров: TS и None.
Закладка Video > Nvidia GPU selection, здесь отображается информация о доступных видеокартах с поддержкой NVENC.
Нажимаем на кнопку: NVENC Info.
Закладка NVENC Config:
Если на выходе получаем картинку с «блочной» структурой, то устанавливаем для параметра numBFrames значение: 0.
Закладка Video codec group с одной доступной кнопкой: Codec Settings.
Нажимаем на кнопку: Codec Settings и отобразится информация с настройками видео кодека.
Закладка: Sample basic video param group.
Закладка Audio, с поддержкой всего одного формата звука: несжатого PCM, и выбором частоты дискретизации и каналов звука.
Загрузка центрального процессора (CPU) и оперативной памяти (RAM), последняя используется весьма активно.
Загрузку GPU видеокарты в утилите GPU-Z надо смотреть не как обычно в строке GPU Load, а в строке для загрузки видео ядра: Video Engine Load. Технология Boost Clock также не активизировалась.
1080p25 DSLR клип длительностью 2 минуты и 47 секунд, выводился: 38 секунд. Таблички индикатора статуса всплывают две, первая это основное время, а вторая всего на несколько секунд.
Информация (Properties) о полученном видео после рендеринга, которое импортировали в Adobe Premiere Pro CS6:
*В версии драйвера NVIDIA GeForce Graphics Driver 378.78 исправлена ошибка: [NVENC][Steam]: NvFBC H.264 ошибка кодирования. [1867544]
Тестирование скорости работы NVENC в Adobe Premiere Pro:
Читаем далее о новых версиях NVENC плагина для Adobe Premiere Pro.