[[Vorlage(Howto, trollsportverein)]] [[Vorlage(getestet, kinetic, lunar)]] [[Vorlage(Fortgeschritten)]] [[Inhaltsverzeichnis()]] = Nvidia Videohardwarebeschleunigung im Firefox = Mittels ''nvidia-vaapi-driver'' und proprietärem [:Grafikkarten/Nvidia/nvidia: ''nvidia-driver''] ist es möglich mit [:Firefox:] Videos mit [wikipedia_en:Nvidia_NVDEC:Nvidia NVDEC] Hardwarebeschleunigung abzuspielen. Für [:Kinetic:Kinetic Kudu] und neuer gibt es [packages:nvidia-vaapi-driver:''nvidia-vaapi-driver''] Fertigpakete. Die Entwicklung beim nvidia-vaapi-driver ist jedoch rasant, so dass die Maintainer der Ubuntu Fertigpakete nur schwerlich mithalten können. Dieses Howto soll nun dazu dienen, den Eigenbau vom ''nvidia-vaapi-driver'' auf dem eignen System so leicht wie nur möglich zu machen. Es soll auch die Möglichkeit bieten den ''nvidia-vaapi-driver'' auch auf älteren Ubuntu Releases zu nutzen, für die es das DEB-Fertigpaket nicht gibt. Das DEB-Paketsystem wird dabei umgangen, bereits installierter ''nvidia-vaapi-driver'' muss zuvor entfernt werden und geeignete Nvidia Grafikkarte und dazu passender proprietärer nvidia-driver muss installiert sein. Die Datei [:Bash/bashrc/: $HOME/.bashrc] ist die Konfigurationsdatei des Users für die Bash-Shell. [:Nano:] ist ein einfach zu bedienender Editor für Editieraufgaben in der Shell. [:alias:] sind Kurznamen für einen oder mehrere Befehle in der [:Bash:]. Das [:Terminal:] ist die Arbeitsumgebung um hier zum Erfolg zu kommen. = Anleitung = == Vorbereitung == Sichereitshalber Backup der Datei '''$HOME/.bashrc''' erstellen: {{{#!vorlage Befehl cp -v $HOME/.bashrc $HOME/.bashrc_backup1 }}} In die Datei '''$HOME/.bashrc''' hineinkopieren: {{{ alias nvidia-vaapi-driver-neu='NVIDIADIR=$HOME/Installationsdisk/Nvidia && \ NVIDIAVAAPIDRIVERSOURCE=$NVIDIADIR/nvidia-vaapi-driver && \ [ ! -d $NVIDIADIR ] && mkdir -pv $NVIDIADIR ; \ [ ! -d $NVIDIAVAAPIDRIVERSOURCE ] && git clone https://github.com/elFarto/nvidia-vaapi-driver.git $NVIDIAVAAPIDRIVERSOURCE ; \ sudo apt-get install build-essential autoconf cmake curl git libtool meson ninja-build vainfo libavcodec-extra libdrm-dev \ libegl-dev libgl-dev libglx-dev libgstreamer1.0-dev libgstreamer-plugins-bad1.0-0 libgstreamer-plugins-bad1.0-dev libvdpau-dev \ libwayland-dev libxcb-dri3-dev libxcb-present-dev libxext-dev libxfixes-dev ; \ printf "\n \033[45m\033[1;36m==> Aktualisiere nvidia-vaapi-driver Sourcecode. \033[0m\033[42m\033[1;36m ==> ... \033[0m \n \n" && \ git -C $NVIDIAVAAPIDRIVERSOURCE pull ; \ printf "\n \033[45m\033[1;36m==> Räume build Verzeichnis auf. \033[0m\033[42m\033[1;36m ==> ... \033[0m \n \n" && \ sudo rm -frv $NVIDIAVAAPIDRIVERSOURCE/build ; \ cd $NVIDIAVAAPIDRIVERSOURCE && \ printf "\n \033[45m\033[1;36m==> Setup nvidia-vaapi-driver. \033[0m\033[42m\033[1;36m ==> ... \033[0m \n \n" && \ meson setup build || meson --reconfigure build && \ printf "\n \033[45m\033[1;36m==> Entferne alten nvidia-vaapi-driver. \033[0m\033[42m\033[1;36m ==> ... \033[0m \n \n" && \ sudo rm -fv $(dpkg -S /usr/lib/x86_64-linux-gnu/dri/nvidia_drv_video.so 2>&1 | awk '\''/dpkg-query/{print $--NF}'\'') ; \ sudo rm -fv $(dpkg -S /usr/lib/x86_64-linux-gnu/dri/vdpau_drv_video.so 2>&1 | awk '\''/dpkg-query/{print $--NF}'\'') ; \ printf "\n \033[45m\033[1;36m==> Baue und installiere nvidia-vaapi-driver. \033[0m\033[42m\033[1;36m ==> ... \033[0m \n \n" && \ time sudo meson install -C build && \ printf "\n \033[45m\033[1;36m==> Erstelle Link von nvidia_drv_video.so auf vdpau_drv_video.so. \033[0m\033[42m\033[1;36m ==> ... \033[0m \n \n" && \ sudo ln -fsv /usr/lib/x86_64-linux-gnu/dri/nvidia_drv_video.so /usr/lib/x86_64-linux-gnu/dri/vdpau_drv_video.so && \ printf "\n \033[45m\033[1;36m==> Install nvidia-vaapi-driver successful. \033[0m\033[42m\033[1;36m ==> Done.\033[0m \n \n" || \ printf "\n \033[41m\033[1;36m==> Install nvidia-vaapi-driver failed.\033[0m \n \n" ; \ cd $HOME' }}} ... und die Datei '''$HOME/.bashrc''' neu einlesen im [:Terminal:]: {{{#!vorlage Befehl source $HOME/.bashrc }}} == Benötigte Einstellungen im Firefox vornehmen == Im Firefox in die Adresszeile eingeben [https://support.mozilla.org/de/kb/konfigurationseditor-fur-firefox ''about:config''] und Entertaste drücken. Dann folgende Einstellungen setzen: {{{ media.ffmpeg.vaapi.enabled true media.rdd-ffmpeg.enabled true media.av1.enabled false ### Falls keine neueste Nvidia Grafikkarte vorhanden ist, die AV1 Hardwarebeschleunigung hat, wie etwa die Nvidia RTX 4090 gfx.x11-egl.force-enabled true widget.dmabuf.force-enabled true }}} Es gibt ein Suchfeld um diese Einstellungen zu finden und dann bequem zu ändern. == Benötigte Umgebungsvariablen setzen == Dies erfolgt in der Datei '''/etc/environment''': {{{ MOZ_DISABLE_RDD_SANDBOX=1 LIBVA_DRIVER_NAME=nvidia __EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/10_nvidia.json NVD_BACKEND=direct LIBVA_MESSAGING_LEVEL=1 }}} == nvidia-vaapi-driver bauen und rebooten == Neuen ''nvidia-vaapi-driver'' im [:Terminal:] bauen und neustarten: {{{#!vorlage Befehl nvidia-vaapi-driver-neu && sleep 30 && systemctl reboot }}} == Funktion auf dem eignen System testen == Nachschauen, nach dem rebooten, ob der ''nvidia-vaapi-driver'' mit dem Testvideo aus den Links unten funktioniert mit [https://packages.ubuntu.com/search?keywords=nvtop&searchon=names&exact=1&suite=all§ion=all ''nvtop''] oder mit [https://developer.nvidia.com/nvidia-system-management-interface ''nvidia-smi'']: {{{#!vorlage Befehl watch -n1 nvidia-smi pmon -c 1 }}} Das "C+G" in der Spalte "type" zeigt an dass Compute für das Testvideo auf der Grafikkarte genutzt wird. [[Bild(Screenshot-nvidia-smi.png)]] == nvidia-vaapi-driver entfernen == Zum Entfernen, falls der selbst gebaute nvidia-vaapi-driver nicht mehr genutzt werden soll, hier noch ein alias ''nvidia-vaapi-driver-remove'': {{{ alias nvidia-vaapi-driver-remove='sudo rm -fv $(dpkg -S /usr/lib/x86_64-linux-gnu/dri/nvidia_drv_video.so 2>&1 | awk '\''/dpkg-query/{print $--NF}'\'') ; \ sudo rm -fv $(dpkg -S /usr/lib/x86_64-linux-gnu/dri/vdpau_drv_video.so 2>&1 | awk '\''/dpkg-query/{print $--NF}'\'')' }}} Das Konstrukt mit [:dpkg:] schützt davor, dass über das DEB-Paketsystem installierte Paketbestandteile gelöscht werden. Was bereits sonst an VA-API und Mesa über das Paketsystem in diesem Verzeichnis installiert ist, lässt sich so anzeigen im Terminal: {{{#!vorlage Befehl dpkg -S /usr/lib/x86_64-linux-gnu/dri\* }}} = Links = * [github:elFarto/nvidia-vaapi-driver: Entwicklerwebseite auf Github: elFarto / nvidia-vaapi-driver] {en} * [youtube:Yr7bMLMqoIg:Testvideo auf Youtube mit AVC1 Codec: CCTV-7 Startup 20170831] {cn} ## Nach der Fertigstellung des Howtos bitte die Aufnahme in die Howto-Sammlung über die Schaltfläche "Diskussion" mitteilen. Weitere [https://wiki.ubuntuusers.de/Wiki/Tag/ Tags] sind nicht gestattet! ##tag: Howto