Aufgrund patentrechtlicher Bedenken wurde unter Fedora 37 das Hardware-Video-Decoding via GPU in Mesa deaktiviert (wir berichteten).
Die Unterstützung lässt sich dank des RPM Fusion Projektes allerdings mit wenigen Schritten nachrüsten.
Dafür muss zunächst, falls noch nicht vorhanden, das Repository aktiviert werden:
sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
Um zu ermitteln, welche Mesa Freeworld Pakete auf dem System benötigt werden, kann zunächst mit folgendem Befehl geprüft werden, welche RPMs ohne Codecs bisher installiert sind:
rpm -qa |grep -e mesa-va-drivers -e mesa-vdpau-drivers
Nun können die entsprechenden Freeworld Treiberpakete installiert werden, wobei die ursprünglichen Pakete bei diesem Vorgang ausgetauscht werden. Es sollten nur Installationen für die zuvor ermittelten Pakete durchgeführt werden.
mesa-va-drivers-freeworld (VA-API):
sudo dnf swap mesa-va-drivers mesa-va-drivers-freeworld
mesa-vdpau-drivers-freeworld (VDPAU / Nvidia):
sudo dnf swap mesa-vdpau-drivers mesa-vdpau-drivers-freeworld
Silverblue
Unter Fedora Silverblue erfolgt die Installation wie folgt:
mesa-va-drivers-freeworld (VA-API):
rpm-ostree override remove mesa-va-drivers --install mesa-va-drivers-freeworld
mesa-vdpau-drivers-freeworld (VDPAU / Nvidia):
rpm-ostree override remove mesa-vdpau-drivers --install mesa-vdpau-drivers-freeworld
Codecs
Bei Bedarf können weitere nicht Hardware-abhängige Codecs wie folgt installiert werden. Dieser Schritt ist optional.
sudo dnf groupupdate multimedia --setop="install_weak_deps=False" --exclude=PackageKit-gstreamer-plugin
sudo dnf groupupdate sound-and-video
sudo dnf install @multimedia @sound-and-video ffmpeg-libs gstreamer1-plugins-{bad-\*,good-\*,base} gstreamer1-plugin-openh264 gstreamer1-libav lame\*
Die Codec Installation unter Silverblue wird hier beschrieben.
Scheint bei mir (Fedora 36) leider nicht zu funktionieren. Das rpmfusion Repo ist bei mir wegen anderer Pakete schon länger aktiv, aber es scheitert hier:
$ sudo dnf install mesa-va-drivers-freeworld mesa-vdpau-drivers-freeworld Letzte Prüfung auf abgelaufene Metadaten: vor 0:00:17 am Di 15 Nov 2022 17:51:50 CET. Keine Übereinstimmung für Argumente: mesa-va-drivers-freeworld Keine Übereinstimmung für Argumente: mesa-vdpau-drivers-freeworld Fehler: Keine Übereinstimmung gefunden: mesa-va-drivers-freeworld mesa-vdpau-drivers-freeworld
Unter Fedora 36 war es nicht erforderlich, die Codecs via rpmfusion zu installieren, da sie in Fedora 36 mitgeliefert wurden. Dementsprechend gibt es auch keine erweiterten mesa-Treiber von rpmfusion für Fedora 36.
In Fedora 37 wurde die Hardwarebeschleunigung für die Codecs h264, h265 und VC1 in den mesa-Treibern wegen patentrechtlicher Bedenken deaktiviert. Will man die Hardwarebeschleunigung mit mesa-Treibern nutzen, muss man in Fedora 37 die erweiterten Treiber von rpmfusion installieren.
siehe auch https://heise.de/-7340921
Wenn ich das ganze unter silverblue versuche, bekomme ich:
malte@utop ~> rpm-ostree install mesa-va-drivers-freeworld mesa-vdpau-drivers-freeworld Checking out tree 2a98f17... done Enabled rpm-md repositories: fedora-cisco-openh264 fedora-modular updates-modular updates fedora rpmfusion-free-updates rpmfusion-free rpmfusion-nonfree-updates rpmfusion-nonfree phracek-PyCharm google-chrome rpmfusion-nonfree-nvidia-driver rpmfusion-nonfree-steam updates-archive Importing rpm-md... done ... Resolving dependencies... done Checking out packages... done error: Checkout mesa-va-drivers-freeworld-22.2.3-1.fc37.x86_64: Hardlinking 89/c6114b411440ce804773e11b7218ee7a0a9c9b5749220a66009e62454f4fa7.file to nouveau_drv_video.so: File exists
Um das gleiche Problem bei openSUSE Tumbleweed (auch bei den anderen Varianten sofern betroffen) reicht es das Packman repository dazu zu nehmen, Welches man sowieso braucht um die multimedia Formate zu benutzen.
Das Update auf Fedora 38 schlägt mit Silverblue Fehl:
Kennt jemand die lösung? vor jedem Update deinstallieren?
Hattest du zunächst die Release Pakete aktualisiert?
sudo rpm-ostree update --uninstall rpmfusion-free-release --uninstall rpmfusion-nonfree-release --install rpmfusion-free-release --install rpmfusion-nonfree-release