Die Video-Dekodierung ist vor allem bei hochauflösenden Videos ein sehr rechenintensiver Prozess, bei dem schwache Prozessoren (z.B. in Netbooks oder Nettops) überfordert sind, und auch Mittelklasse-CPUs an ihre Leistungsgrenzen bringen. Um die CPU zu entlasten und die Dekodierung von HD-Videos auf weniger gut ausgestatteten Systemen überhaupt erst zu ermöglichen, bieten moderne Grafikchips eine Hardwareunterstützung zur Videodekodierung an. Während es zu deren Nutzung auf Windows Systemen eine einheitliche Schnittstelle gibt (DirectX), gibt es unter Linux gleich drei verschiedene. Jeder der großen Grafikkarten-Hersteller hat hier eine eigene Lösung:
Damit Videobeschleunigung durch die Hardware genutzt werden kann, müssen mehrere Bedingungen erfüllt sein:
Der Grafikchip muss Videobeschleunigung bieten
Der zugehörige Grafiktreiber muss diese unterstützen (meist sind dies nur die proprietären Treiber der Hersteller)
Es muss eine passende Bibliothek für die verwendete API installiert sein
Die Videoplayer-Software muss die API unterstützen
Die Videobeschleunigung wird unter Ubuntu bisher leider nur sehr stiefmütterlich behandelt, so dass der Benutzer hier meist selbst Hand anlegen und oft auch einige Programme selbst kompilieren muss. Deswegen richtet sich der Artikel hauptsächlich an fortgeschrittene Benutzer.
Die API von AMD/ATI (XvBA) entspricht ziemlich genau der DirectX API unter Windows, was es dem Hersteller ermöglicht, für Linux im Prinzip den gleichen Grafiktreiber einzusetzen wie für Windows. Damit wird doppelten Entwicklungsaufwand vermieden und ermöglicht mit der Windowsversion zeitgleich auch eine Linuxversion der Treiber anzubieten (AMD/ATI liefert monatlich Updates seines fglrx Treibers).
Die schlechte Nachricht: die XvBA API wird unter Linux so gut wie überhaupt nicht unterstützt. Und die gute Nachricht: es gibt eine Bibliothek, die Intels VA API in die XvBA API umsetzt, so dass jede Software genutzt werden kann, die die VA API unterstützt (diese speziellen Bibliotheken, auch die weiter unten genannten, sind alle bei Splitted Desktop Systems
erhältlich). Dadurch hat man es im wesentlichen nur noch mit 2 APIs zu tun: VA API und VDPAU.
Leider werden diese Schnittstellen von Ubuntu, wie schon erwähnt, nur sehr schlecht unterstützt. Wenn überhaupt, ist in den Paketquellen nur Unterstützung für Intels VA API enthalten. Bei Installation der alternativen Bibliotheken von Splitted Desktop Systems kommt es häufig zu Versionskonflikten, so dass das Ganze in eine ziemliche Frickelei ausarten kann.
Neben der Installation der benötigen Bibliotheken für die API des eigenen Systems wird auch noch ein Videoplayer benötigt, der Unterstützung für die jeweilige API nicht nur anbietet, sondern auch einkompiliert hat. Hier gibt es nur wenige Alternativen:
Der allseits beliebte VLC-Player bietet eine experimentelle Unterstützung für die VA API. Diese muss in den Einstellungen erst aktiviert werden. VLC bietet aber nur eine sehr eingeschränkte Unterstützung an. Aufgrund der Philosophie von VLC, dass Videos gestreamt und zu jedem beliebigen Ziel umgeleitet werden können, muss VLC den Videostream nach der Decodierung vom Grafikchip abholen und ihn anschließend (falls die Ausgabe auf den Bildschirm erfolgen soll) erneut zur Grafikkarte senden. Auf diese Weise wird kaum ein Vorteil aus der Hardwaredecodierung gewonnen.
Siehe auch VLC mit VA API im VLC-Wiki 
XBMC ist der am besten funktionierende Videoplayer mit Hardwareunterstützung. Er bietet Unterstützung für beide APIs an. Allerdings müssen auch hier Versionen mit VA API oder VDPAU selbst kompiliert oder aus einem PPA installiert werden.
Eine gute Anleitung zur Hardwarebeschleunigung
findet man im XBMC-Wiki
.
Für VDPAU lässt sich XBMC aus dem PPA des team-xbmc installieren. Eine Anleitung
findet sich im XBMC-Wiki
. Leider gibt es noch kein PPA für Ubuntu 11.04, man kann jedoch auch das PPA für Ubuntu 10.10 nehmen.
MPlayer bietet ebenfalls sehr gute Unterstützung für beide APIs an, jedoch muss auch dieser selbst kompiliert werden, da in den Standardpaketquellen diese Unterstützung fehlt. MPlayer ist ein Player für die Kommandozeile, für den es Zusätze zur grafischen Bedienung gibt (z.B. Gnome MPlayer oder SMplayer). SMplayer bietet die Möglichkeit, eine selbstkompilierte Version von MPlayer zu nutzen (der Pfad zum eigentlichen MPlayer ist frei konfigurierbar).
Die Quellen für den MPlayer mit VA API findet man bei Splitted Desktop Systems.
Adobes Flash-Plugin bietet leider keine Unterstützung zur Videobeschleunigung an. Die Alternative gnash bietet Unterstützung für VA API, allerdings auch wieder nur, wenn man es selbst kompiliert.
gnash selbst kompilieren ist nur was für absolute Profis. Die Abhängigkeiten installieren einige Dutzend Pakete mit 660 MB auf die Platte. Dazu kommt dann noch der Quelltext mit knapp 200 MB. Die aktuelle Version (Stand: September 2011) lässt sich außerdem überhaupt nicht unter Ubuntu kompilieren. Dazu gibt es auf Launchpad einen Fehlerbericht.
Voraussetzung ist natürlich, dass man einen Grafikprozessor hat, der Videobeschleunigung unterstützt. Informationen, welche Grafik im System steckt, findet man im Terminal mit folgendem Befehl heraus:
lspci -nnk | grep -i VGA -A2
Das sieht dann z.B. so aus:
Benutzer@Rechner:~$ lspci -nnk | grep -i VGA -A2 01:05.0 VGA compatible controller [0300]: ATI Technologies Inc M880G [Mobility Radeon HD 4200] [1002:9712] Subsystem: Acer Incorporated [ALI] Device [1025:043d] Kernel driver in use: fglrx_pci
Jetzt muss nur noch in Erfahrung gebracht werden, ob die eingebaute Karte auch Videobeschleunigung besitzt. Bei AMD/ATI sollte das bei allen Modellen der Radeon-Serie der Fall sein. Für Nvidia Karten findet man eine Auflistung in der Wikipedia und für Intel-Grafik findet man eine Übersicht in der englischen Wikipedia.
Eine sehr gute Anleitung findet man im Forum
von Radeon3D
: Howto: AMD/ATI Hardware-Videobeschleunigung unter Ubuntu 11.04 64-Bit aktivieren
. Die Anleitung gilt gleichermaßen auch für 32-bit Systeme. Man lädt dann eben einfach nur die entsprechenden Bibliotheken für i386 (statt amd64) herunter.
Als Treiber für die Grafikkarte kommt nur der proprietäre fglrx in Frage. Der freie radeon Treiber bietet keine Videobeschleunigung an.
Die Ubuntu libva1 muss duch die libva1 von Splitted Desktop Systems ersetzt werden. Hierbei entsteht ein Problem mit den Versionsnummern in den Paketquellen. In den Ubuntu-Quellen fand irgendwann ein Versionssprung von 0.2 nach 1.x statt. Die Versionen von Splitted Desktop machten jedoch bei 0.3 weiter. Da die Versionen in den Paketquellen eine höhere Nummer haben, versucht die Aktualisierung ständig, die Bibliothek durch eine vermeintlich neuere zu ersetzen. In der Anleitung oben wird gezeigt, wie man das verhindert.
Für eigene Kompilierungen braucht man die zugehörigen Headerfiles im Paket libva-dev aus dem selben Download-Link.
Zusätzlich wird noch die Bibliothek xvba-video benötigt. Dies ist der XvBA Backend für die VA API.
Als Player kommen alle in Frage, die die VA API untersützen, entweder aus speziellen PPAs oder selbst kompiliert.
Siehe Ubuntu – NVIDIA VDPAU + SMplayer 
Als Treiber für die Grafikkarte kommt nur der proprietäre nvidia in Frage. Der freie nouveau-Treiber bietet keine Videobeschleunigung an.
Prinzipiell sollte es möglich sein, analog zur obigen Vorgehensweise für AMD/ATI, die libva1 auszutauschen und das VDPAU Backend vdpau-video von Splitted Desktop zu benutzen. Diese Vorgehensweise wurde jedoch im Rahmen dieses Artikels nicht getestet.
Alternativ (und wahrscheinlich auch die bessere Lösung) kann man auch einen Videoplayer mit direkter VDPAU-Unterstüzung installieren.
Je nachdem, für welche API-Lösung man sich entschieden hat, wird ein Player mit VA API- oder VDPAU-Unterstützung benötigt.
Hat man die Bibliotheken für die VA API installiert, so lässt sich im Terminal mit dem Befehl vainfo prüfen, ob die Hardwarebeschleunigung erkannt wird. Das sieht dann z.B. so aus:
Benutzer@Rechner:~$ vainfo
libva: libva version 0.32.0-sds2
Xlib: extension "XFree86-DRI" missing on display ":0.0".
libva: va_getDriverName() returns 0
libva: Trying to open /usr/lib/va/drivers/fglrx_drv_video.so
libva: va_openDriver() returns 0
vainfo: VA API version: 0.32
vainfo: Driver version: Splitted-Desktop Systems XvBA backend for VA-API - 0.8.0
vainfo: Supported profile and entrypoints
VAProfileH264High : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLDDieses Beispiel zeigt, dass die Unterstützung korrekt erkannt wurde und dass die verbaute Grafikkarte 2 Videoprofile beherrscht: H.264 High und VC1 Advanced. Konkret handelt es sich um ein Netbook mit einer ATI Radeon HD 4225 Grafik. Hier sieht man auch gleich einen Nachteil von AMD/ATI Grafikprozessoren: diese beherrschen (im Gegensatz zu Nvidia) kein MPEG2 Decoding (nötig für Videos von DVD oder DVB-S/T/C).
Ob die Bemühungen von Erfolg gekrönt waren, lässt sich sehr schön mit diesem Youtube Testvideo prüfen. Mit einem entsprechenden Downloadhelper lässt es sich in unterschiedlichen Auflösungen, bis hin zu Full-HD, herunterladen. Hat man in einem zweiten Fenster die Systemüberwachung offen, kann man an der CPU-Auslastung sehen, wieviel die Videobeschleunigung leistet. Die Auslastung sollte bei Full-HD weniger als 10% betragen, wenn man einen moderner Rechner mit Mehrkernprozessor einsetzt. Eine Intel-Atom CPU hat weit mehr Auslastung und spielt Full-HD ohne Beschleunigung überhaupt nicht ab.
Das Paket libva von Splitted Desktop Systems enthält eine Bibliothek, die eigentlich in das Paket libva-x11 gehört. Dies führt zu einer Kollision mit den Standardpaketquellen, die verhindert, dass libva-x11 installiert werden kann. Das wiederum führt dazu, dass sich Pakete nicht installieren lassen, die von libva-x11 abhängig sind. Dazu zählt auch der VLC Player. Im Forum gibt es dazu eine Diskussion.
Diese Revision wurde am 21. Dezember 2011 13:28 von aasche erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen:
Ubuntu, Hardware, Installation, System, Multimedia, DVD
2004 – 2012 ubuntuusers.de • Einige Rechte vorbehalten