nvenc hevc что это

Быстрое кодирование видео в Linux c Nvidia NVENC с SDK 7.5 и ffmpeg 3.0.2 на Nvidia GTX 960/970/980

nvenc hevc что это. Смотреть фото nvenc hevc что это. Смотреть картинку nvenc hevc что это. Картинка про nvenc hevc что это. Фото nvenc hevc что это

Данная статья была написана по мотивам статьи Эффективное кодирование видео в Linux c Nvidia NVENC: часть 1, общая, однако имеет свои особенности и в отличие от оригинальной статьи, на момент написания которой не было выпущено патча, о котором пойдет речь дальше, я применил переработанный патч Nvidia Acceleration к FFmpeg 3.0.2, получив помимо энкодера nvenc еще и быстрый фильтр ресайза — nvresize.

В итого я получил возможность аппаратно кодировать видео в H.264 и HEVC при помощи видеокарты Nvidia GTX 960 на достаточно слабом компьютере (Xeon L5420) со скоростью (для H.264), превышающей возможности данного процессора до 10 раз (и в 3 раза относительно Core i7)! Причем на моем любимом Debian 8 Jessie.

Технология

Nvidia NVENC это технология, обеспечивающая кодирование видео в H.264 и HEVC на вычислительных мощностях GPU. Важное замечание: сколь-нибудь качественное и быстрое кодирование на момент написания статьи (май 2016) могут обеспечить только карты второго поколения Maxwell, и для десктопных это: GM206 (GTX 950, GTX 960), GM204 (GTX 970 и GTX 980) (для справки: есть еще дорогие проф.линейки Nvidia Tesla/Quadro/GRID, полный перечень можно найти здесь). Причем NVENC модуль работает с одинаковой скоростью на всех картах и количество CUDA ядер не влияет на производительность, как бы странно это не звучало, поэтому брать старшие версии имеет смысл только если платформа используется (помимо кодирования) для игр, даже более того, карты на GM206 целесообразнее т.к. помимо энкодера, получили еще и аппаратный HEVC декодер. Важное примечание: вся линейка GeForce имеет лицензионное ограничение в 2 одновременных потока. Его можно попробовать обойти методом, указанным во второй части статьи YourChief

Реализация (FFmpeg)

Все многообразие реализаций Nvidia CUDA можно посмотреть по ссылке. От себя хочу сказать что для видео наиболее распространенным является популярный инструмент — FFmpeg. Его мы и будем использовать.

Аппаратное обеспечение

Источник

Эффективное кодирование видео в 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 с аналогичными установками.

Источник

QuickSync против NVENC: сравнение кодирования на GPU

nvenc hevc что это. Смотреть фото nvenc hevc что это. Смотреть картинку nvenc hevc что это. Картинка про nvenc hevc что это. Фото nvenc hevc что это

Для начала определимся с графикой, которую будем сравнивать. Рассмотрим только стабильные решения для работы в режиме 24/7 — в телевещании иначе нельзя. Со стороны Intel возьмем процессор последнего поколения Intel Xeon E-2246G (семейство Coffee Lake) со встроенной графикой Intel UHD Graphics P630. Со стороны NVIDIA выберем Quadro RTX 4000 — серверный аналог потребительской видеокарты GeForce RTX 2070 Super. В отличие от последней, она не имеет официальных ограничений в одновременной обработке больше трех потоков. Это ограничение можно снять, установив неофициальный патч, но мы все же рассмотрим только проверенные и официальные решения. Более ранние версии видеокарт мы отмели сразу: они проигрывают при работе с кодеком HEVC, так как не имеют возможности кодирования B-кадров.

Теперь подберем платформы с выбранными графическими решениями (см. таблицу 1).

nvenc hevc что это. Смотреть фото nvenc hevc что это. Смотреть картинку nvenc hevc что это. Картинка про nvenc hevc что это. Фото nvenc hevc что это

Максимальное количество транскодируемых каналов

Для начала проведем нагрузочный тест на максимально возможное количество транскодируемых каналов (режим fastest) на одном сервере. В этом сравнении решение NVIDIA оказалось в два раза производительнее разработки Intel при транскодировании средствами кодека AVC и практически не уступило в кодировании средствами HEVC (см. таблицу 2).

nvenc hevc что это. Смотреть фото nvenc hevc что это. Смотреть картинку nvenc hevc что это. Картинка про nvenc hevc что это. Фото nvenc hevc что это

Цена за канал с учетом затрат на сервер

Теперь мы знаем максимально возможное количество каналов разрешения Full HD (FHD, 1920×1080 точек) на один сервер со встроенной графикой Intel и видеокартой NVIDIA, а значит, сможем вычислить цену одного канала FHD.

nvenc hevc что это. Смотреть фото nvenc hevc что это. Смотреть картинку nvenc hevc что это. Картинка про nvenc hevc что это. Фото nvenc hevc что это

Получается, что для AVC в цене разницы нет (см. таблицу 3). В случае c HEVC решение NVIDIA гораздо дороже по цене за канал на платформу, если рассчитывать максимальное количество каналов (то есть использовать самые быстрые алгоритмы кодирования, жертвуя качеством).

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

Качество выходного потока по сравнению с исходным

Рассмотрим качество сжатия видео, ведь нет никакого смысла в количестве каналов, если их невозможно смотреть. Ниже представлен график сравнения качества по метрике PSNR (Peak Signal-to-Noise Ratio — пиковое отношение сигнала к шуму, — прим. ред.): Intel AVC с исходным потоком (синяя линия) и NVIDIA AVC с исходным потоком (красная линия).

nvenc hevc что это. Смотреть фото nvenc hevc что это. Смотреть картинку nvenc hevc что это. Картинка про nvenc hevc что это. Фото nvenc hevc что это

На графике видно, что качество получаемых потоков близко по значению PSNR.

Теперь давайте сравним с помощью метрики VMAF (Video Multimethod Assessment Fusion — субъективная мультиметодная оценка видео, разработана при участии Netflix, — прим. ред.).

nvenc hevc что это. Смотреть фото nvenc hevc что это. Смотреть картинку nvenc hevc что это. Картинка про nvenc hevc что это. Фото nvenc hevc что это

В следующем графике сравним Intel HEVC с исходным потоком (синяя линия) и NVIDIA HEVC с исходным потоком (красная линия).

nvenc hevc что это. Смотреть фото nvenc hevc что это. Смотреть картинку nvenc hevc что это. Картинка про nvenc hevc что это. Фото nvenc hevc что это

Из графика видно, что наше сравнение было не совсем корректным, так как максимальное количество кодируемых каналов NVIDIA равно 14, и их качество почти на 2 дБ выше, чем у 13 каналов на Intel. Поэтому мы провели дополнительные измерения, и при максимально возможном качестве на NVIDIA и на Intel в режиме GAcc (GPU Accelerated — когда кодирование происходит не только средствами графического ускорителя, но и центрального процессора) получили следующий результат. Intel HEVC GAcc с исходным потоком (синяя линия) по сравнению с NVIDIA HEVC с исходным потоком (красная линия):

nvenc hevc что это. Смотреть фото nvenc hevc что это. Смотреть картинку nvenc hevc что это. Картинка про nvenc hevc что это. Фото nvenc hevc что это

Качество кодирования практически совпало, но производительность обеих систем упала в разы. Теперь NVIDIA кодировала всего четыре канала FHD HEVC, а Intel — всего 2. Пересчитаем цену одного канала исходя из новых данных: 114,2 тыс. рублей/2 = 57,1 тыс. рублей за один транскодируемый HEVC-канал на Intel; 228,5 тыс. рублей/4 = 57,1 тыс. рублей за один транскодируемый HEVC-канал на Nvidia. Таким образом, мы получили то же соотношение по цене за канал, что и в ситуации с кодеком AVC.

Энергопотребление при равной нагрузке

Рассмотрим еще один важный момент при обслуживании рабочей системы — потребляемая мощность платформы. Из наших тестов при максимальной нагрузке платформ транскодированием мы получили следующие значения: потребление платформы с NVIDIA около 200 Вт, потребление платформы с Intel около 75 Вт. Поскольку на платформе Intel каналов в два раза меньше, умножим значение на 2 — итого около 150 Вт. Получается, что при той же работе платформа NVIDIA потребляет на 50 Вт больше.

Занимаемое место в серверной стойке

При больших объемах транскодируемых каналов часто возникает вопрос размещения серверов. Для решения Intel предусмотрены специальные платформы-лезвия, где в одном сервере формфактора 3 U (юнита) умещается от 8 до 14 лезвий (полноценных серверов измененного формфактора). В одной 3U-платформе можно транскодировать до 168 каналов FHD с кодеком AVC. Если же использовать не сервер-лезвие, а обычный стоечный сервер, то на такое количество каналов понадобится высота 14 U.

Решение NVIDIA в этом плане немного сложнее: сами видеокарты занимают дополнительное место в платформе. Можно размещать по одной видеокарте в 1U-сервер, тогда занимаемое место на тоже количество каналов будет составлять 7 U. Можно на одной платформе разместить несколько видеокарт, что позволяет сэкономить на цене платформы, но выиграть место вряд ли получится: чтобы разместить 2-3 графических ускорителя, потребуется платформа 3 U, а то и 4 U.

Решение специфических задач

Помимо транскодирования видео, существуют такие задачи, как декодирование видео для визуального мониторинга и кодирование с карты захвата SDI/NDI. В таких случаях решение Intel подходит лучше: эти задачи зачастую не объемные, а значит, и использовать все ресурсы NVIDIA не получится. Даже если нужно кодировать SDI, скорее всего, это будет несколько каналов — сложно найти проект, где требуется кодировать до 24 сигналов. Кроме того, в 1U-платформу довольно сложно уместить SDI-карту захвата с интерфейсом PCI и видеокарту с той же шиной — нужно выбирать либо платформу с другой высотой, либо с достаточным местом для двух карт, что встречается довольно редко.

Есть и техническое ограничение. Процесс декодирования менее затратный, чем транскодирование, и в теории на решении NVIDIA можно визуально мониторить больше 24 каналов FHD AVC. На самом деле количество каналов ограничено 8, так как невозможно передать больший объем декодированного (несжатого) видео через шину PCI. В случае же с решением Intel такой проблемы нет, так как графика встроена в процессор.

Справедливости ради отметим, что решение NVIDIA более привлекательно для транскодирования контента сверхвысокого (UHD) разрешения, поскольку на одной видеокарте можно развернуть многопрофильное транскодирование. Встроенный графический ускоритель Intel не может транскодировать UHD-контент в несколько профилей на одном графическом ядре, и приходится включать систему распределения потока между серверами — такое решение называется распределенным транскодированием.

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

Выводы

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

Сравнив графические решения по всем интересующим нас параметрам, можно сделать вывод, что они близки по характеристикам и сложно однозначно выделить фаворита. Решающим фактором при выборе аппаратного комплекса для транскодирования может стать поставщик программного обеспечения. Для выбора важно, как реализовано использование инструментов, предлагаемых компаниями Intel и NVIDIA, какие дополнительные функции сможет выполнять программно-аппаратный комплекс (ПАК). Играют роль и такие факторы, как цена за ПАК, функции ПО, гарантия, успешные реализованные проекты, возможность доработки решения под конкретную задачу, возможность обеспечения уровня качества обслуживания, компетенции сопровождающих инженеров и т. д. Например, зачастую ПАК с NVIDIA включает в себя не программную реализацию инструментов, предоставленную этим разработчиком, а встроенный в ПО тестовый образец или же открытую реализацию. С одной стороны, это неплохо, с другой — в случае с проектом open source невозможно добавить функции или исправить выявленный баг, поскольку техническая поддержка у таких реализаций отсутствует.

Автор: Вадим Блинов, менеджер продукта CodecWorks, компания Elecard

Подпишитесь на канал «Телеcпутника» в Telegram: перейдите по инвайт-ссылке или в поисковой строке мессенджера введите @telesputnik, затем выберите канал «ТелеСпутник» и нажмите кнопку +Join внизу экрана.

Источник

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

nvenc hevc что это. Смотреть фото nvenc hevc что это. Смотреть картинку nvenc hevc что это. Картинка про nvenc hevc что это. Фото nvenc hevc что это

Что такое NVENC?

nvenc hevc что это. Смотреть фото nvenc hevc что это. Смотреть картинку nvenc hevc что это. Картинка про nvenc hevc что это. Фото nvenc hevc что это

Кодировщик 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 позволяет выполнять аппаратное кодирование и декодирование непосредственно на графическом процессоре, освобождая ЦП из этой ресурсоемкой задачи. Имея в своем распоряжении гораздо больше ядер, которые также оптимизированы для обработки видеоинформации, вы не только получаете значительно более высокую производительность, но и более эффективны с точки зрения производительности на ватт.

nvenc hevc что это. Смотреть фото nvenc hevc что это. Смотреть картинку nvenc hevc что это. Картинка про nvenc hevc что это. Фото nvenc hevc что это

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

nvenc hevc что это. Смотреть фото nvenc hevc что это. Смотреть картинку nvenc hevc что это. Картинка про nvenc hevc что это. Фото nvenc hevc что это

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

Источник

Как использовать кодеки Nvidia NVENC: HEVC или H264

Выбираем кодек для записи игровых видео с графической картой NVIDIA:

H.264 против HEVC: какой кодек лучше?

Хотя H.264 долго оставался стандартом качества для западных стримеров, сейчас лучшим выбором будет HEVC. Хотя максимальный стандарт качества у них одинаковый, HEVC лучше справляется с предоставленным ему дисковым пространством. Если записать два видео, одинаковых по продолжительности, содержанию и месту на жёстком диске, видео, кодированное в HEVC, будет лучшего качества. При одинаковом качестве записи файлы HEVC всегда меньше, чем видео, записанные в H.264.

Почему же многие пользователи до сих пор предпочитают H.264? Проблема нового формата — в высоких требованиях и совместимости:

Для стримеров, которые не обновляют железо каждый год, но всё же обладают достаточно мощными видеокартами, чтобы играть в ресурсоёмкие игры, H.264 на сегодняшний день будет лучшим выбором.

Сравнение скорости, качества и размера видео H.264 и HEVC

В приведённой ниже таблице для сравнения указаны показатели видео, записанного разными кодировщиками.

КодекРазмерКачествоСкоростьОсобенности
HEVC33,5 МбВыше среднего — соответствует настройкамВысокаяКодек обладает более совершенным алгоритмом сжатия без потери качества
H26434,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.

Источник

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

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