Как заставить NVIDIA GPU Assisted Video Encoding (NVENC) работать в Ubuntu

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

Чтобы решить эту проблему, у карт NVIDIA есть изящный маленький трюк, который они используют с момента выпуска видеокарт серии GeForce 600 в 2012 году, который называется NVENC. Это позволяет использовать графический процессор для кодирования видеопотоков. Используя NVENC, вы можете не только конвертировать видео быстрее, чем с помощью обычного процессора, но вы также можете передавать видео через программное обеспечение, такое как Программное обеспечение Open Broadcaster Software (OBS), уменьшая или полностью устраняя заикание и задержку. Поскольку в Linux по умолчанию нет NVENC, вам придется заставить его работать вручную. Я объясняю здесь, как это можно сделать в дистрибутивах, основанных на Ubuntu.

Первые дела в первую очередь

Чтобы NVIDIA NVENC работала в Ubuntu, вам сначала необходимо загрузить комплект разработчика программного обеспечения (SDK) NVIDIA Video Codec с этого сайта. Вам нужно будет создать учетную запись, но процесс довольно прост. Вам не нужны все файлы в ZIP-архиве, поэтому мы перейдем к "Samples / common / inc." Скопируйте все, что вы там видите, в папку "/ usr / local / include". Вам необходимо скопировать эти файлы, чтобы "ffmpeg" (кодировщик, часто встречающийся в дистрибутивах Linux) распознал NVENC и включил его.

Настройка репозиториев исходного кода

исходники программного обеспечения nvenc для Linux

Следующим шагом будет перекомпиляция вашей текущей версии ffmpeg. Это означает, что вам потребуются зависимости сборки для программного обеспечения, и для этого вам нужно будет настроить Linux, чтобы разрешить загрузку из репозиториев исходного кода в ваших источниках программного обеспечения.

В Ubuntu вы можете перейти в "Системные настройки -> Программное обеспечение и обновления", затем щелкнуть "Исходный код" в разделе "Программное обеспечение Ubuntu". В Linux Mint (дистрибутив, который я использую, потому что я ленив), это можно сделать, войдя в диспетчер обновлений, нажав "Редактировать", щелкнув "Источники программного обеспечения", а затем поставив галочку напротив "Разрешить репозитории исходного кода". ” Этот метод может отличаться в зависимости от среды вашего рабочего стола и дистрибутива Linux, поэтому вам, возможно, придется немного потрудиться, чтобы это сделать.

Теперь о шлифовании зубов!

Восстановление ffmpeg

Поскольку ffmpeg не строится с автоматическим включением многих из его параметров (то есть почти все они согласуются, а не отказываются), вам нужно будет узнать, как он был встроен в вашу систему, а затем построить его с помощью та же конфигурация плюс поддержка аудио NVENC и AAC. Здесь появляются заголовки, которые вы скопировали ранее. Видите ли, ffmpeg немного заглянет в ваши файлы в "/ usr / local / include", чтобы найти какие-либо кодеки, которые он не нашел в собственных карманах.

Сначала мы строим зависимости с помощью

Затем мы хотим загрузить аудиокодек AAC с

Как только это будет сделано, нам нужно будет получить исходный код текущей версии ffmpeg с помощью

И когда это будет сделано, вам нужно будет немного поискать в своей домашней папке. Найдите папку, имя которой начинается с "ffmpeg". Сразу после него будет указан номер версии, разделенный тире. Вот мой:

nvenclinux-ffmpeg

Откройте свой терминал в этой папке. Если вы не можете этого сделать, откройте терминал и введите:

где "" представляет собой полный номер версии, который вы видели в имени этой папки. В моем случае я бы набрал

Теперь введите

Он покажет вам всю конфигурацию вашей текущей установки ffmpeg. Вам нужно будет скопировать все после "configuration:" без фрагментов под этой массивной стеной текста. В моем случае я копирую это: (Ваша конфигурация может быть другой, поэтому не копируйте то, что я вам здесь показываю.)

Теперь вставьте все, что вы получили, в gedit или другой текстовый редактор и добавьте это в конец:

Хорошо, теперь все, что вам нужно сделать, это ввести

где "" представляет собой массивную стену текста, которую вы только что отредактировали, чтобы добавить поддержку несвободных кодеков, NVENC и аудио AAC. Это может занять некоторое время.

После того, как все это будет закончено, введите

Подождите, пока это закончится, затем введите

Готово!

Тестирование

Хорошо, откуда вы знаете, что получили поддержку NVENC? Пришло время испытать ffmpeg и с его помощью закодировать видео.

Для этого вам понадобится конвертировать видеофайл. Допустим, наше видео находится в /home/miguel/Desktop/test.mkv, и мы хотим закодировать его как /home/miguel/Desktop/test.mp4. Вот как мы это делаем с помощью ffmpeg и его новой любви к NVENC:

Вы должны увидеть что-то вроде этого:

nvenclinux-кодировка

Вот и все! Мы убили двух зайцев одним выстрелом: вы узнали, как установить NVENC в свою систему Linux и как кодировать видео с помощью удобной команды терминала ffmpeg. Если вы где-то застряли или найдете лучший способ сделать это, обязательно оставьте комментарий!

6 комментариев

  1. Привет,
    В Ubuntu,
    Когда я делаю этот шаг: "./configure", у меня появляется ошибка:

    ОШИБКА: nvEncodeAPI.h не найден.

    Любая идея? Спасибо !


    Вы загрузили SDK и скопировали его в / usr / local / include?


    Чтобы быть более точным, вам следует загрузить NVIDIA SDK, о котором я упоминал в разделе "Прежде всего" этой статьи.

    Вы должны получить файл с именем "Video_Codec_SDK_x.x.x", где "x" - номер версии. Откройте ZIP-архив и перейдите в / Samples / common / inc.

    Все эти файлы необходимо скопировать в / usr / local / include.

  2. Спасибо, отлично работает! Теперь есть несколько отличий. Мне пришлось загрузить исходный код из:
    git clone https://anonscm.debian.org/git/pkg-multimedia/ffmpeg.git
    … и огромная стена текста была немного сложной, как и мне поместите его в текстовый файл и удалите все разрывы строк. Но после того, как он скомпилировался нормально, у меня nvenc работал над Linux Mint 18.2, работающим на MacBook Pro с графическим процессором Geforce 750M. Не нужно было скачивать SDK, он просто работал.

    Единственный вопрос, который у меня есть: я могу использовать -c: v h264_nvenc, но, похоже, он не распознает h265_nvenc. Я получаю "неизвестный кодировщик" h265_nvenc. Есть ли что-то еще, с чем мне нужно скомпилировать это, чтобы получить поддержку h265?

  3. В названии написано ubuntu, используется Mint.

    Сможете ли вы по крайней мере использовать предполагаемый дистрибутив?

  4. Он работает одинаково для обоих дистрибутивов.

Комментарии закрыты.