Hallo erstmal.
Vorneweg: ohne selber machen geht es zur Zeit nicht!
Als nehmt euch etwas Zeit und eine schöne Tasse Kaffee oder Tee wenn ihr OBS Studio mit Hardwarebeschleunigung haben wollt. Wirklich schwierig ist das nicht. Fertigpakete für Linux sind aber leider bislang tabu. Also bleibt nur selber machen, dann hat man aber auch die Hardwarebeschleunigung, wie unter Windows mit dem so vermarkteten "ShadowPlay" möglich ist, ganz ohne "GeForce Experience" und Anmeldezwänge.
Die Vorlage findet sich hier in diesem Beitrag auf Youtube, ja tatsächlich Youtube: https://www.youtube.com/watch?v=CD9t2bszg_Y&t=131s.
Ich schreibe aber noch ein paar Ergänzungen und eine winzige Korrektur dazu.
Das hier funktioniert genau so:
1 - Download the Nvidia SDK: wget https://developer.nvidia.com/video-sd... sudo apt install unzip unzip video-sdk-601 sudo cp nvidia_video_sdk_6.0.1/Samples/common/inc/*.h /usr/local/include/ 2 - Getting ready to compile FFMPEG sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup sudo nano /etc/apt/sources.list sudo apt update sudo apt build-dep ffmpeg sudo apt install libfdk-aac-dev 3 - Compiling ffmpeg apt-get source ffmpeg cd ffmpeg-VERSION NUMBER
Aber das Kommando für die buildconfig ist:
ffmpeg -buildconf
Den Schritt 2 brauchte ich nicht, da meine Repositorys längst passten.
Die Liste der Header Dateien vom nvidia_video_sdk_6.0.1, die nach /usr/local/include/ kopiert wurden, falls sie später wieder entfernt werden wollen:
cudaModuleMgr.h drvapi_error_string.h dynlink_builtin_types.h dynlink_cuda_cuda.h dynlink_cudaD3D10.h dynlink_cudaD3D11.h dynlink_cudaD3D9.h dynlink_cuda_d3d.h dynlink_cuda_gl.h dynlink_cudaGL.h dynlink_cuda.h dynlink_cuviddec.h dynlink_nvcuvid.h exception.h helper_cuda_drvapi.h helper_cuda.h helper_functions.h helper_string.h helper_timer.h nvCPUOPSys.h nvEncodeAPI.h nvFileIO.h NvHWEncoder.h nvUtils.h
Schlussendlich das ./configure auf meiner Kubuntu Eoan Ermine (19.10) Installation war dann:
./configure --prefix=/usr --extra-version=1build2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared --enable-nonfree --enable-nvenc --enable-libfdk-aac
Der make Befehl läuft nur auf einem CPU Kern. Das macht dann noch nicht mal viel Last, dauert aber etwas.
make
Das sollte dann möglichst durchlaufen. Wenn nicht, genau lesen woran es hängt und gegebenenfalls fehlendes nachinstallieren. Bei mir waren das die nv-codec-headers:
mkdir ~/nv-codec && cd ~/nv-codec git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
Und dann:
cd nv-codec-headers make && sudo make install
Anschließend wieder den ffmpeg-4.1.4 in seinem Verzeichnis weiterbauen. Wenn alles durchgelaufen ist geht es ans installieren:
sudo make install
Was das installieren betrifft, das ist sicherlich so noch nicht ganz optimal, da wäre zum Beispiel checkinstall zu erwägen. Aber nicht vergessen, selber machen ist Ok, aber was die Distribution von Fertigpaketen betrifft, da gibt es eine Warnung.
Nun aber wirds spannend, funktioniert das auch? Also OBS-Studio starten und gucken ob dann zur Auswahl für den Kodierer "Hardware (NVENC)" in den Einstellungen für die Videoausgabe auftaucht. Und dann testen. Wenn dann eine Warnmeldung erscheinen sollte wegen irgendeinem Fehler, so wie es bei mir war, nochmal über das Terminal mit dem Befehl obs starten:
obs
Erst im Terminal konnte man sehen das durch die aus dem Videolan Projekt geklonten nv-codec-headers die API des gebauten bereits 9.1 war, aber der "alte" Grafiktreiber des nvidia-driver 430.50 Pakets vom 05.09.2019 noch die API 9.0 nutzte. Da half dann nur auf den Short Lived Branch umzusteigen und auf die nvidia-driver Version 435.21 zu gehen. Damit läufts, bei mir, auf Kubuntu Eoan Ermine. 😎
Keine Angst, das ist alles gar nicht so schwer. Das schreiben der Anleitung ist mühseliger als das bisschen frickeln. ☺