Bagaimana cara menginstal / kompilasi NVENC di ubuntu?

Jawaban:

19

Seperti biasa dengan pengembangan berkelanjutan FFmpeg menggeser posting tujuan berkali-kali dan ini tentu berlaku nvenc dan FFmpeg. Ada 3 fase:

  1. Gulung sendiri : Pra 27 Agustus 2016, Anda perlu melacak header Anda sendiri untuk membangun nvenc. Arduous dan lebih dari sedikit membingungkan.
  2. Dibangun menjadi sumber : 27 Agustus 2016 melihat header yang diperlukan dimasukkan sebagai bagian dari sumber FFmpeg , tidak ada yang diperlukan selain kemampuan untuk mengkompilasi sumber FFmpeg dari git, atau menggunakan versi 'release' cut dari git pada saat ini.
  3. Gunakan nv-codec-header : Pada 26 Februari 2018 header NVidia dihapus dari sumber FFmpeg . Repositori git yang terpisah telah dibuat untuk melanjutkan pekerjaan dengan header ini. Saat ini header ini harus diinstal dan FFmpeg dari git untuk mendapatkan akses ke nvenc dan teman-teman.

Dibutuhkan dua langkah:

1. Instal paket nv-codec-header :

Sesuatu seperti perintah Terminal berikut harus mencukupi:

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

Jika karena alasan tertentu Anda berubah pikiran dan ingin menghapus file yang diinstal sepenuhnya serta direktori build cukup jalankan dua perintah Terminal berikut:

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

Dan sistem Anda telah dibersihkan. Namun jika Anda ingin terus menggunakan langkah berikut:

2. Kompilasi FFmpeg :

Gunakan panduan yang sangat teruji ini:

Ini nv-codec-headersakan diakui secara otomatis (tidak ada tambahan./configure diperlukan opsi ) dan nvenc akan berhasil dibangun.

Pengujian:

Saya telah menguji ini pada Bionic Beaver LTS dan hasilnya adalah:

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

Dan jika Anda melihat gambar yang sama seperti di atas, dan Anda memiliki kartu grafis yang didukung , Anda berhak untuk pergi :)

Catatan:

  • Versi terbaru sesuai dengan Video Codec SDK versi 9.1.23 dan membutuhkan driver NVidia versi 435.21 atau lebih baru.
  • Versi yang lebih lama : Sekarang ada salinan github otomatis dari nv-codec-header yang juga menciptakan tarball yang sempurna untuk menggunakan versi yang lebih lama header yang lebih lama. Hebat jika Anda ingin header disinkronkan dengan driver NVidia versi lama yang tidak dapat atau tidak ingin Anda perbarui.
  • Panduan Akselerasi Perangkat Keras untuk FFmpeg : FFmpeg Wiki panduan untuk akselerasi perangkat keras secara umum dengan FFmpeg, bagian kanonik untuk menyusun dan menggunakan nvenc ...
andrew.46
sumber
Terima kasih banyak untuk panduan terperinci ini. Saya mendapat hasil yang serupa dari bagian pengujian Anda, yang sangat bagus. Selain dari driver nVidia, apakah kita juga perlu menginstal Cuda SDK untuk mendapatkan FFMPEG untuk menggunakan GPU yang diinstal?
Kimberly W
@ KimberlyW Tidak diperlukan pada sistem saya, saya baru saja diuji ...
andrew.46
@ andrew.46 Saya melakukan apa yang Anda katakan, tetapi saya masih belum memiliki akselerasi perangkat keras untuk vp9: /
Freedo
@Freedo Sayangnya nvenc untuk encoding H.264 dan HEVC ...
andrew.46
1
@ DP Aduh !! Tapi bukankah uninstall sederhana dari nv-codec-header yang saya berikan dalam jawaban ini?
andrew.46
0

@ andrew.46 respons Anda bagus, terima kasih. Reputasi saya di bawah ambang batas untuk memposting ini sebagai komentar. Jika memungkinkan, perluas respons Anda dengan informasi berikut.

Jika Anda harus kembali ke versi sebelumnya nv-codec-headers, unduh dan kompilasi rilis sebelumnya dari https://github.com/FFmpeg/nv-codec-headers/releases .

Ini mungkin diperlukan jika Anda mengompilasi ffmpegmelawan yang terbaru nv-codec-headers, tetapi driver grafis Anda adalah versi yang belum menangani versi API CUDA minimum yang diperlukan oleh nv-codec-headers. Gejalanya adalah bahwa ffmpegtranscoding video stream akan gagal. Dalam kasus saya nv-codec-headersdiperlukan CUDA API 9.1, sedangkan yang terbaru nvidia-driveruntuk distribusi saya (pengujian) masih pada versi menggunakan 9.0.

Mengembalikan ke versi sebelumnya nv-codec-headersmungkin lebih aman daripada mengunduh driver terbaru langsung dari Nvidia dan membuatnya di luar mekanisme pembaruan distribusi Anda.

Xavras Wyzryn
sumber
Terima kasih! Saya telah menambahkan ini ke bagian 'Catatan' ...
andrew.46