Come installare / compilare NVENC in Ubuntu?


Risposte:


19

Come sempre con FFmpeg, lo sviluppo continuo sposta gli obiettivi più volte e questo è certamente vero per nvenc e FFmpeg. Ci sono state 3 fasi:

  1. Crea da solo : prima del 27 agosto 2016 era necessario rintracciare le proprie intestazioni per costruire NVIDIA. Arduo e più che un po 'confuso.
  2. Integrato nella fonte : il 27 agosto 2016 sono state incorporate le intestazioni richieste come parte della fonte FFmpeg , niente di più che la capacità di compilare la fonte FFmpeg da git, o usare una versione 'release' tagliata da git in questo momento.
  3. Usa le intestazioni nv-codec : il 26 febbraio 2018 le intestazioni NVidia sono state rimosse dalla fonte FFmpeg . È stato creato un repository git separato per mantenere il lavoro continuo con queste intestazioni. Al momento è necessario installare queste intestazioni e FFmpeg di git per accedere a nvenc e agli amici.

Sono richiesti due passaggi:

1. Installa il pacchetto nv-codec-headers :

Qualcosa come i seguenti comandi del Terminale dovrebbe essere sufficiente:

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

Se per qualche motivo cambi idea e desideri rimuovere completamente i file installati e la directory di build, esegui semplicemente i seguenti due comandi Terminal:

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

E il tuo sistema è stato pulito. Se tuttavia si desidera continuare, utilizzare il seguente passaggio:

2. Compilare FFmpeg :

Usa questa guida molto ben testata:

La nv-codec-headerssaranno automagicamente riconosciuto (non aggiuntivi ./configuresono necessari opzioni) e nvenc saranno costruiti con successo.

test:

Ho provato questo su Bionic Beaver LTS e i risultati sono:

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

E se vedi un'immagine simile come sopra e hai una scheda grafica supportata , hai ragione! :)

Appunti:

  • L'ultima versione corrisponde a Video Codec SDK versione 9.1.23 e richiede i driver NVidia versione 435.21 o successiva.
  • Versioni precedenti : ora esiste una copia automatica github delle intestazioni nv-codec che crea anche tarball perfetti per l'utilizzo di una versione precedente delle intestazioni. Ottimo se si desidera sincronizzare le intestazioni con una versione precedente dei driver NVidia che non si è in grado o non si desidera aggiornare.
  • Guida all'accelerazione hardware per FFmpeg : Guida Wiki FFmpeg per l'accelerazione hardware in generale con FFmpeg, una sezione canonica per la compilazione e l'utilizzo di nvenc ...

Grazie mille per questa guida dettagliata. Ho ottenuto risultati simili dalla sezione dei test, il che è fantastico. Oltre ai driver nVidia, dobbiamo anche installare Cuda SDK per ottenere FFMPEG per utilizzare la GPU installata?
Kimberly W,

@KimberlyW Non richiesto sul mio sistema, ho appena testato ...
andrew.46

@ andrew.46 Ho fatto quello che hai detto ma non ho ancora l'accelerazione hardware per vp9: /
Freedo,

@Freedo Purtroppo nvenc è per la codifica H.264 e HEVC ...
andrew.46

1
@DPS Ouch !! Ma non è la semplice disinstallazione delle intestazioni nv-codec che ho dato in questa risposta?
Andrew.46

0

@ andrew.46 la tua risposta è ottima, grazie. La mia reputazione è al di sotto della soglia per pubblicare questo come commento. Se possibile, espandi la tua risposta con le seguenti informazioni.

Se è necessario ripristinare una versione precedente di nv-codec-headers, scaricare e compilare una versione precedente da https://github.com/FFmpeg/nv-codec-headers/releases .

Ciò può essere necessario se si esegue la compilazione ffmpegcon l'ultima versione nv-codec-headers, ma il driver grafico è di una versione che non gestisce ancora la versione minima dell'API CUDA richiesta da nv-codec-headers. Il sintomo sarà che ffmpegfallirà la transcodifica dei flussi video. Nel mio caso nv-codec-headersrichiesto CUDA API 9.1, mentre l'ultimo nvidia-driverper la mia distribuzione (test) era ancora in una versione con 9.0.

Il ripristino di un precedente nv-codec-headersè probabilmente più sicuro del download dell'ultimo driver direttamente da Nvidia e della sua costruzione al di fuori del meccanismo di aggiornamento della distribuzione.


Grazie! Ho aggiunto questo nella sezione 'Note' ...
andrew.46
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.