Jak zainstalować / skompilować NVENC w Ubuntu?

Odpowiedzi:

19

Jak zawsze w przypadku FFmpeg dalszy rozwój przesuwa cele wielokrotnie, co z pewnością jest prawdą w przypadku nvenc i FFmpeg. Były 3 fazy:

  1. Rzuć własne : przed 27 sierpnia 2016 r. Konieczne było wyśledzenie własnych nagłówków, aby zbudować nvenc. Arduous i więcej niż trochę mylące.
  2. Wbudowane w źródło : 27 sierpnia 2016 r. Wymagane nagłówki zostały włączone jako część źródła FFmpeg , nic nie wymagało oprócz możliwości skompilowania źródła FFmpeg z git lub użycia wersji „release” wyciętej z git w tym momencie.
  3. Użyj nagłówków koderów-nv : 26 lutego 2018 r. Nagłówki NVidia zostały usunięte ze źródła FFmpeg . Utworzono osobne repozytorium git, aby kontynuować pracę z tymi nagłówkami. W tej chwili nagłówki te muszą być zainstalowane, podobnie jak FFmpeg z git, aby uzyskać dostęp do nvenc i przyjaciół.

Wymagane są dwa kroki:

1. Zainstaluj pakiet nv-codec-headers :

Powinno wystarczyć coś takiego jak następujące polecenia terminala:

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

Jeśli z jakiegoś powodu zmienisz zdanie i chcesz całkowicie usunąć zainstalowane pliki, a także katalog kompilacji, po prostu uruchom następujące dwa polecenia Terminal:

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

Twój system został wyczyszczony. Jeśli jednak chcesz kontynuować, wykonaj następujący krok:

2. Skompiluj FFmpeg :

Skorzystaj z tego bardzo dobrze przetestowanego przewodnika:

nv-codec-headersZostanie automagicznie uznane (bez dodatkowych ./configurepotrzebne są opcje) i nvenc zostanie pomyślnie zbudowany.

Testowanie:

Przetestowałem to na Bionic Beaver LTS, a wyniki są następujące:

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:~$

A jeśli zobaczysz podobny obraz jak powyżej i masz obsługiwaną kartę graficzną , masz prawo iść :)

Uwagi:

  • Najnowsza wersja odpowiada Video Codec SDK w wersji 9.1.23 i wymaga sterowników NVidia w wersji 435.21 lub nowszej.
  • Starsze wersje : Istnieje teraz automatyczna kopia github nagłówków koderów-dekoderów nv, która także tworzy pliki tar idealne do używania starszej wersji nagłówków. Świetnie, jeśli chcesz, aby nagłówki były synchronizowane ze starszą wersją sterowników NVidia, których nie możesz lub nie chcesz zaktualizować.
  • Podręcznik przyspieszania sprzętowego dla FFmpeg : Podręcznik FFmpeg Wiki dotyczący przyspieszania sprzętowego ogólnie z FFmpeg, kanoniczną sekcją do kompilowania i używania nvenc ...
andrew.46
źródło
Dziękuję bardzo za ten szczegółowy przewodnik. Mam podobne wyniki z twojej sekcji testowej, co jest świetne. Czy oprócz sterowników nVidia musimy również zainstalować Cuda SDK, aby FFMPEG mógł korzystać z zainstalowanego GPU?
The Unknown Dev,
@KimberlyW Nie wymagane w moim systemie, właśnie przetestowałem ...
andrew.46
@ andrew.46 Zrobiłem to, co powiedziałeś, ale nadal nie mam przyspieszenia sprzętowego dla vp9: /
Freedo
@Freedo Niestety nvenc obsługuje kodowanie H.264 i HEVC ...
andrew.46
1
@DPS Ouch !! Ale nie prosta odinstalowanie nagłówków koderów-dekoderów nv, które podałem w tej odpowiedzi?
andrew.46
0

@ andrew.46 Twoja odpowiedź jest świetna, dziękuję. Moja reputacja jest poniżej progu, aby opublikować to jako komentarz. Jeśli to możliwe, rozszerz swoją odpowiedź o następujące informacje.

Aby przywrócić wcześniejszą wersję nv-codec-headers, pobierz i skompiluj wcześniejszą wersję ze strony https://github.com/FFmpeg/nv-codec-headers/releases .

Może to być konieczne, jeśli kompilujesz ffmpegz najnowszymi nv-codec-headerswersjami, ale sterownik karty graficznej jest w wersji, która nie obsługuje jeszcze minimalnej wymaganej wersji interfejsu API CUDA nv-codec-headers. Objawem będzie, że ffmpegnie uda się transkodować strumieni wideo. W moim przypadku nv-codec-headerswymagałem CUDA API 9.1, podczas gdy najnowszy nvidia-driverdla mojej dystrybucji (testowania) był nadal w wersji przy użyciu 9.0.

Powrót do wcześniejszej wersji nv-codec-headersjest prawdopodobnie bezpieczniejszy niż pobranie najnowszego sterownika bezpośrednio z Nvidii i zbudowanie go poza mechanizmem aktualizacji dystrybucji.

Xavras Wyzryn
źródło
Dzięki! Dodałem to do sekcji „Notatki” ...
andrew.46