Nvenc что это
Перейти к содержимому

Nvenc что это

  • автор:

Стриминг мечты

Лучшее качество стриминга. Высочайшая производительность в играх. А также передовые функции микрофона и веб-камеры на базе ИИ, основанные на технологии NVIDIA Broadcast. Все это обеспечат графические процессоры NVIDIA GeForce — лучшее решение для стриминга.

Ваша персональная студия на базе ии

Приложение NVIDIA Broadcast превращает вашу комнату в студию для стриминга, обеспечивая абсолютно новый уровень стримов, видеочатов и видеоконференций благодаря аудио- и видеоэффектам на базе алгоритмов ИИ. Удалите отвлекающий шум, настройте фон и используйте другие эффекты всего одним нажатием кнопки.

Одна видеокарта для всех задач

Представляем энкодер NVIDIA (NVENC). NVENC — это независимый блок видеокарты GeForce ® , который кодирует и декодирует видео, снимая нагрузку с центрального процессора. Это разгружает систему для игр и других ресурсоемких задач и обеспечивает высокое качество видеоряда.

  • Энкодер NVIDIA (NVENC)
  • Программный Энкодер ( x 264)

* Стандартный способ стриминга с кодированием на CPU влияет на производительность игры, так как процессор одновременно расходует ресурсы и на игру, и на кодирование стрима.

Идеальный стриминг

Будьте в центре внимания благодаря лучшему качеству стриминга. Сохраните мельчайшие детали видеоряда благодаря аппаратному кодированию и улучшению качества с ускорением на CUDA. И в довершение всего совершенно новая серия видеокарт GeForce RTX TM 40 открывает новую эру стриминга, обеспечивая поддержку кодирования AV1.

Что такое NVIDIA NVENC: особенности и способы использования

Вы, наверное, слышали термин NVENC из NVIDIA в ряде случаев, особенно когда дело доходит до к кодированию видео , будь то потоковая передача или рендеринг. В этой статье мы расскажем вам что такое NVENC , что это такое для и какие преимущества он приносит тем, кто его использует.

Как следует из названия, NVENC — это проприетарная технология NVIDIA, так как ее название происходит от аббревиатуры NVIDIA. Видео ENCoding, ни больше, ни меньше. Таким образом, одно из требований для его использования — наличие графической карты этого бренда, но, как мы объясним ниже, не все будут работать.

Что такое NVENC?

Это особенность видеокарт бренда, которая используется для кодирования видео, разгружая эту задачу, предполагающую довольно высокую вычислительную нагрузку на процессор и что делает его GPU / ГРАФИЧЕСКИЙ ПРОЦЕССОР , с гораздо большим количеством ядер, отвечающих за это. Впервые он был представлен с Кеплер Архитектура видеокарт GeForce GTX 600 Series, и поэтому одним из требований для ее использования является наличие одного из этих графических процессоров или более современного.

الفنانة هيفاء وهبي

Please enable JavaScript

Кодировщик NVENC изначально совместим со многими программами потоковой передачи и записи, такими как Wirecast, Open Broadcaster Software (OBS) и Bandicam, а также работает с функцией Share game capture, которая включена в программное обеспечение GeForce Experience.

Видеокарты GeForce на потребительском рынке (непрофессиональные) поддерживают только 2 видеопотока кодирования одновременно, независимо от количества установленных видеокарт, поэтому даже в конфигурациях Quad-SLI вы можете кодировать только два видео одновременно. Со своей стороны, профессиональная графика поддерживает до 21 одновременной передачи на видеокарту, в зависимости от модели и выбранного качества сжатия.

NVENC сопровождается NVDEC (NVIDIA Video DECoder) для выполнения противоположной операции, дополняя друг друга. На следующей диаграмме вы можете найти всю связанную с этим информацию.

NVENC и NVDEC

Первое поколение этой технологии пришло с архитектурой Kepler, и с тех пор она увеличивается почти на одну версию на поколение. Таким образом, второе поколение появилось с графическими процессорами Maxwell GM107, третье с Maxwell GM20X, четвертое с Pascal GP10X, пятое с Volta GV10X и Turing TU117 и шестое поколение с Turing TU10X / TU116. Ожидается, что седьмое поколение NVENC прибудет с Ampere, включая дальнейшие улучшения и большую производительность.

Какие преимущества это дает?

Как мы только что объясняли, NVENC позволяет выполнять аппаратное кодирование и декодирование непосредственно на графическом процессоре, освобождая ЦП из этой ресурсоемкой задачи. Имея в своем распоряжении гораздо больше ядер, которые также оптимизированы для обработки видеоинформации, вы не только получаете значительно более высокую производительность, но и более эффективны с точки зрения производительности на ватт.

Диаграмма NVENC

Хорошая часть этой системы заключается в том, что большинство программ для кодирования видео поддерживают ее изначально, поэтому, как пользователям, нам нужно будет только выбрать ее в параметрах этой программы. Например, в Open Broadcaster Software мы можем выбрать обработку видео через NVENC в опциях.

Кодировщик Cambiar в OBS

Для пользователей, у которых есть видеокарта NVIDIA, возможность использования этой функции высвободит много ресурсов процессора, что позволит повысить его производительность, но необходимо учитывать, что эта задача переходит к графическому процессору, и по этой причине графическая производительность может быть снижена, если видеокарта недостаточно мощная.

  • GPU / ГРАФИЧЕСКИЙ ПРОЦЕССОР
  • Nvidia

Эффективное кодирование видео в Linux c Nvidia NVENC: часть 1, общая

Эта статья содержит практические сведения, полезные для организации эффективного кодирования видео на Linux с использованием последних видеопроцессоров Nvidia.
Чем не является эта статья:

  • Не является пособием по выбору технологии аппаратного кодирования или агитацией в пользу описываемой. Кроме Nvidia NVENC есть Intel QuickSync, есть AMD VCE, наверняка есть и ещё что-то. Все эти технологии имеют разные характеристики, которые трудно даже уложить на одну шкалу для сравнения. Тем не менее, я сделал свой выбор.
  • Не является претензией на самый быстрый/качественный способ кодирования. По причинам, указанным выше.

Об 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 мы и займёмся.

Развёртывание
  • Одна видеокарта Nvidia на ядре Kepler или Maxwell. На мой взгляд самый интересный выбор это GTX 970 — процессор Maxwell второго поколения (GM204) за 300$.
  • Один линукс типовой (ubuntu 14.04) на компьютере с видеокартой.
Драйверы и рантайм CUDA

Драйверы и библиотеки установить за раз одним пакетом. Из репозитория лучше ничего не использовать.

sudo apt-get update sudo apt-get -y install axel build-essential dkms axel 'http://developer.download.nvidia.com/compute/cuda/7_0/Prod/local_installers/cuda_7.0.28_linux.run' chmod +x cuda_7.0.28_linux.run sudo ./cuda_7.0.28_linux.run 

На все вопросы уважаемого компьютера следует ответить утвердительно. После установки — перезагрузить.

Заголовочные файлы nvenc

Для сборки приложений с nvenc sdk неободимы некоторые заголовочные файлы. Раньше их необходимо было стягивать из виндовой версии SDK. Но прогресс идёт семимильными шагами и теперь этот файл можно стянуть из примеров в линуксовом SDK. Найдите в примерах (были установлены вместе с рантаймом и драйверами на предыдущем шаге) файлы
nvCPUOPSys.h
nvEncodeAPI.h
nvFileIO.h
NvHWEncoder.h
nvUtils.h

и положите их в /usr/include. Они потребуются только один раз, при сборке ffmpeg. На всех машинах они не нужны.

FFMPEG

Начать его сборку лучше с установки всех сборочных зависимостей.

sudo apt-get build-dep libav sudo apt-get install -y libfdk-aac-dev libopencv-dev 

Я мог что-то забыть, что-то может измениться. Чтобы найти недостающий для сборки файл, не стесняйтесь пользоваться apt-file:

$ sudo apt-get install apt-file -y $ sudo apt-file update $ apt-file search libxcb-shm.so.0 libxcb-shm0: /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0 libxcb-shm0: /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0.0.0 

Скачиваем с сайта последнюю версию ffmpeg, распаковываем, конфигурируем, собираем и устанавливаем:

axel 'http://ffmpeg.org/releases/ffmpeg-2.7.1.tar.bz2' tar xf ffmpeg-2.7.1.tar.bz2 cd ffmpeg-2.7.1 ./configure --cpu=native --enable-pthreads --extra-version=habrahabr.ru --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-libfdk-aac --enable-nonfree --enable-gpl --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --enable-libopencore-amrnb --enable-version3 --enable-libopencore-amrwb --enable-version3 --enable-libvo-aacenc --enable-version3 --enable-libvo-amrwbenc --enable-version3 --enable-nvenc make -j5 sudo make install 

Собираем с libfdk-aac, он точно предпочтительнее имеющегося кодека aac. Кроме прочего, можно заметить опцию —enable-nvenc. В остальном параметры выбраны по мотивам билдспеки пакета libav в самом дистрибутиве ubuntu. После всех манипуляций должен появиться рабочий ffmpeg в /usr/local/bin/ffmpeg.

Применение
Запуск

Опции запуска все точно такие же, как при софтверном кодировании, но только вместо libx264 видеокодек будет называться nvenc (он же nvenc_h264) для h.264 и nvenc_hevc для h.265.

/usr/local/bin/ffmpeg -i input.mov -vcodec nvenc -b:v 5000k -r 30 . output.mp4 
Производительность и качество

Чтобы произвести 1 час видео в 4х качествах с хорошей точностью транскодинга, нужно или потратить примерно 1 час машинного времени двух шестиядерных ксеонов, или чуть более получаса времени десктопа с такой видеокартой. Качество результатов получается неотличимое от программного кодека x264 с аналогичными установками.

Ограничения

Увы и ах, Nvidia ввела ограничение: на обычных десктопных видеокартах нельзя кодировать больше двух потоков видео одновременно. Снятию этого ограничения будет посвящена моя следующая статья, которая, вероятно, будет интересна немного другому кругу читателей.

  • Высокая производительность
  • GPGPU

Nvenc что это

NVIDIA недавно представила NVENC 8-го поколения (аппаратный многопоточный кодировщик), который теперь имеет поддержку формата AV1 с Ada Lovelace. AV1 предлагает существенное повышение качества и скорости кодирования по сравнению с традиционными HEVC и H.264. Сегодня стало известно, что теперь FFmpeg (бесплатный инструмент для обработки видео с открытым исходным кодом) также добавил поддержку аппаратного кодировщика AV1 от NVIDIA.

реклама

AV1 спешит на помощь

OBS Studio также начала поддерживать кодировку AV1 на графических процессорах NVIDIA RTX 4000. Это была важная новость для стримеров, потому что AV1 предлагает более высокое качество, чем его конкуренты, при более низком битрейте. По данным NVIDIA, кодирование AV1 может обеспечить на 40 % большую эффективность, чем H.264, то есть при том же битрейте, пользователь может ожидать на 40 % более высокое качество.

Поддержка FFmpeg для кодирования AV1

Разработчики сообщили, что AV1 превосходит HEVC, предлагая почти на 100% более высокую скорость кодирования.

Эксперты сообщили, что в некоторых сценариях качество остается на одном уровне, но с меньшими артефактами. При более высоких битрейтах разница в качестве становится минимальной, хотя при более низких битрейтах AV1 показывает наилучшую производительность. В качестве примера смотрите следующее видео от NVIDIA.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *