ГлавнаяОперационные системыLinuxКак заставить кодирование видео с помощью графического процессора NVIDIA (NVENC) работать в...

Как заставить кодирование видео с помощью графического процессора NVIDIA (NVENC) работать в Ubuntu

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

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

Перво-наперво

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

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

nvenclinux-softwaresources

Следующим шагом будет перекомпиляция текущей вер

Перво-наперво

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

В Ubuntu вы можете перейти в «Настройки системы» ->«Программное обеспечение и обновления», затем нажать «Исходный код» в разделе «Программное обеспечение Ubuntu». В Linux Mint (дистрибутив, который я использую, потому что я ленив) это можно сделать, открыв д

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

Источники программного обеспечения», а затем установив небольшой флажок «Включить репозитории исходного кода».» Этот метод может различаться в зависимости от среды вашего рабочего стола и дистрибутива Linux, поэтому вам, возможно, придется немного поискать душу, чтобы это сделать.

А теперь о самой части процесса, связанной со скрежетанием зубов!

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

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

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

sudo apt-get build-dep ffmpeg

Далее мы хотим загрузить аудиокодек AAC с помощью

sudo apt-get install libfdk-aac-dev

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

sudo apt-get source ffmpeg

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

nvenclinux-ffmpeg

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

cd ffmpeg-<version>

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

cd ffmpeg-2.8.8

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

ffmpeg -buildconf

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

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

efix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv

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

--enable-nonfree --enable-nvenc --enable-libfdk-aac

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

./configure <that massive wall of text>

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

После того, как все будет готово, введите

make

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

sudo make install

Готово!

Тестируем

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

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

time ffmpeg -i /home/miguel/Desktop/test.mkv -acodec copy -vcodec nvenc /home/miguel/Desktop/test.mp4

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

nvenclinux-кодирование

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

Тестируем

ПОХОЖИЕ СТАТЬИ

Популярные записи