Як встановити / компілювати NVENC в ubuntu?


Відповіді:


19

Як завжди з FFmpeg, продовження розвитку змінює цілі пости багато разів, і це, безумовно, стосується nvenc та FFmpeg. Проведено 3 фази:

  1. Згорніть своє : До 27 серпня 2016 року для створення nvenc потрібно було відстежити власні заголовки. Напружений і більш ніж трохи заплутаний.
  2. Вбудований у джерело : 27 серпня 2016 року з'явилися потрібні заголовки, включені до складу джерела FFmpeg , нічого, крім можливості складати джерело FFmpeg з git, або використовувати версію 'release', вирізану з git.
  3. Використовуйте nv-кодеки-заголовки : 26 лютого 2018 року заголовки NVidia були вилучені з джерела FFmpeg . Було створено окреме сховище git для продовження роботи з цими заголовками. Наразі ці заголовки повинні бути встановлені , а також FFmpeg від git, щоб отримати доступ до nvenc та друзів.

Необхідні два етапи:

1. Встановіть пакет nv-кодек-заголовки :

Приблизно таких команд терміналів має бути достатньо:

sudo apt-get install make git
mkdir $HOME/nv-codec-headers_build && cd $HOME/nv-codec-headers_build
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
make && sudo make install

Якщо ви чомусь передумаєте і хочете повністю видалити встановлені файли, а також каталог збірок, просто запустіть наступні дві команди терміналів:

sudo rm -v /usr/local/{lib/pkgconfig/ffnvcodec.pc,include/ffnvcodec/*.h}
rm -rfv $HOME/nv-codec-headers_build

І ваша система була очищена. Якщо ви хочете продовжити, скористайтеся наступним кроком:

2. Складіть FFmpeg :

Скористайтеся цим дуже добре перевіреним посібником:

nv-codec-headersБуде автоматично визнаний (без додаткових ./configureопцій не потрібно) і nvenc буде успішно побудований.

Тестування:

Я перевірив це на Bionic Beaver LTS, і результати:

andrew@ilium:~$ ffmpeg -encoders 2>/dev/null | grep nvenc
 V..... h264_nvenc           NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc                NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc_h264           NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc_hevc           NVIDIA NVENC hevc encoder (codec hevc)
 V..... hevc_nvenc           NVIDIA NVENC hevc encoder (codec hevc)
andrew@ilium:~$

І якщо ви бачите подібну картинку, як вище, і у вас є підтримувана відеокарта , ви правильно підете :)

Примітки:

  • Остання версія відповідає Video Codec SDK версії 9.1.23 і вимагає драйверів NVidia версії 435.21 або новішої.
  • Старіші версії : Зараз існує автоматизована копія github nv-кодеків-заголовків, яка також створює тарболи, ідеальні для використання старішої версії заголовків. Чудово, якщо ви хочете, щоб заголовки синхронізувались із старішою версією драйверів NVidia, яку ви не можете або не бажаєте оновлювати.
  • Посібник з прискорення обладнання для FFmpeg : Посібник з FFmpeg Wiki для прискорення апаратного забезпечення в цілому за допомогою FFmpeg, канонічного розділу для збирання та використання nvenc ...

Дуже дякую за це детальне керівництво. Я отримав подібний результат з вашого тестування, що чудово. Окрім драйверів nVidia, чи потрібно нам також встановити Cuda SDK, щоб отримати FFMPEG для використання встановленого GPU?
Невідомий Dev

@KimberlyW Не потрібно в моїй системі, я щойно перевірив ...
andrew.46,

@ andrew.46 Я зробив те, що ви сказали, але все ще не маю апаратного прискорення для vp9: /
Freedo

@Freedo На жаль, nvenc призначений для кодування H.264 та HEVC ...
andrew.46

1
@DPS Ой !! Але чи не просте видалення nv-кодеків-заголовків, які я дав у цій відповіді?
andrew.46,

0

@ andrew.46 Ваша відповідь чудова, дякую. Моя репутація нижче порогу, щоб розмістити це як коментар. Якщо можливо, будь-ласка, розкладіть свою відповідь наступною інформацією.

Якщо вам потрібно повернутися до більш ранньої версії nv-codec-headers, завантажте та компілюйте більш ранню версію з https://github.com/FFmpeg/nv-codec-headers/releases .

Це може знадобитися, якщо ви компілюєте ffmpegнайновіші версії nv-codec-headers, але ваш графічний драйвер має версію, яка ще не обробляє мінімальну версію API CUDA, яку вимагає nv-codec-headers. Симптомом буде те, що ffmpegне вдасться перекодувати відеопотоки. У моєму випадку nv-codec-headersпотрібен API CUDA 9.1, тоді як останній nvidia-driverдля мого розповсюдження (тестування) все ще був у версії з використанням 9.0.

Повернення до більш раннього nv-codec-headers- це, мабуть, безпечніше, ніж завантажувати останній драйвер безпосередньо з Nvidia та створювати його поза механізмом оновлення вашого дистрибутива.


Спасибі! Я додав це до розділу «Примітки» ...
andrew.46
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.