Compile MPlayer mit VDPAU-Support
Aus CaiaWiki
Inhaltsverzeichnis |
Vorwort
FullHD-Material (1920x1080, H.264 kodiert) welches ich mit der GoPro aufgenommen habe, kann leider nicht ruckelfrei mit einem 2.4GHz Quadcore abgespielt werden.
VLC benutzt zur Wiedergabe nur eine CPU so daß hier ein Multi-Core-Rechner keinen Vorteil bringt. Eine Lösung wäre, die Dekodierung mittels Hardware der Grafikkarte zu erledigen.
Wikipedia schreibt zum Thema H.264 kodierte Videos:
"Die Wiedergabe über Software-Dekodierung kann sehr viel CPU-Leistung benötigen, sodass bei Full HD sogar moderne Rechner an ihre Grenzen geführt werden."
und weiter:
"Entlastung für die CPU ist mit einer geeigneten Hardware, die in vielen Grafikkarten integriert ist, in Verbindung mit der darauf aufbauenden Dekoder-Software, möglich, z.B. mittels DXVA oder VDPAU."
Als unterstützte Mediaplayer werden angegeben:
"MPlayer, MythTV, XBMC und xine verfügen über eine funktionierende VDPAU-Implementierung, andere Implementierungen sind in Arbeit."
Nachfolgend also eine kurze Zusammenfassung, wie man den MPlayer übersetzen muss, um die Dekodierung des Videostreams der Grafikkarte zu überlassen. Das Zauberwort heisst Video Decode and Presentation API for Unix (VDPAU).
Noch ein Hinweis: Die VDPAU-Schnittstelle ist nur für unterstützte nVidia-Karten nutzbar. Es gibt jedoch auch Implementierungen für AMD (xvba-video)- und Intel-Grafikkarten (VaAPI).
Download
Zur Benutzung von VDPAU muss der proprietäre nVidia-Treiber verwendet werden. Die Installation wird hier nicht beschrieben, da es zu diesem Thema bereits gute Anleitungen im Netz gibt u.a. hier.
Der Download des MPlayers aus dem aktuellen svn-Repository sowie die notwendigen development files dazu erfolgt via:
caiacoa@Kaokoveld:~/kdenlive/mplayer$ svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer caiacoa@Kaokoveld:~/kdenlive/mplayer$ sudo aptitude build-dep mplayer
Ausserdem werden die aktuellen vdpau header files benötigt. Diese sind nach:
/usr/include/vdpau
zu kopieren.
Configuration
Vorher nochmal die für diese Anleitung benutzte Kernel- und nVidia-Treiber-Version:
caiacoa@Kaokoveld:~/kdenlive/mplayer/build$ uname -a Linux Kaokoveld 3.0.0-15-generic #26~lucid1-Ubuntu SMP Wed Jan 25 14:31:21 UTC 2012 i686 GNU/Linux
caiacoa@Kaokoveld:~/kdenlive/mplayer/build$ nvidia-settings -q NvidiaDriverVersion Attribute 'NvidiaDriverVersion' (Kaokoveld:0.0): 295.17
Danach Aufruf des configure-Scripts.
- Mit x264 vdpau-Support (dies lief nicht mit nVidia-Treiber-Version 290.10!)
./configure --enable-gui --enable-vdpau --target=i686-linux --prefix=/home/caiacoa/kdenlive/mplayer/build/ --confdir=/etc/mplayer --mandir=/usr/share/man
- Mit den Optionen --disable-x264-lavc --disable-x264 (hier als Referenz behalten, da häufig im Netz so empfohlen - lieferte mit 290.10 viele Bildfehler):
./configure --enable-gui --disable-x264-lavc --disable-x264 --enable-vdpau --target=i686-linux --prefix=/home/caiacoa/kdenlive/mplayer/build/ --confdir=/etc/mplayer --mandir=/usr/share/man
- Ich habe die erste Versionen (--enable-vdpau) mit nVidia-Treiber: 295.17 benutzt.
Hinweis: Wer den mplayer nicht lokal installieren will, passt die --prefix Option entsprechend (z.B. --prefix=/usr) an.
Make
Danach Compilierung des Ganzen (hier unter Ausnutzung des Quad-Cores mit der Option -j5) :
make -j5
und Installation nach /home/caiacoa/kdenlive/mplayer/build/:
sudo make install
Config-File
Unter ~/.mplayer muss noch die config-Datei wie nachfolgend ausgegeben angepasst werden:
caiacoa@Kaokoveld:~/kdenlive/mplayer$ cat /home/caiacoa/.mplayer/config # Write your default config options here! vo=vdpau,xv, vc=ffh264vdpau,ffmpeg12vdpau,ffwmv3vdpau,ffvc1vdpau
Ergebnis
Das Abspielen erfolgt mit einem Aufruf ala:
caiacoa@Kaokoveld:~/kdenlive/mplayer/build/bin$ ./mplayer /Data/kdenlive/Aegypten/Rohmaterial/GOPR0112.MP4
- CPU-Usage:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 23929 caiacoa 20 0 185m 59m 21m S 1 1.7 0:00.89 mplayer
Fazit: Auslastung der Rechner-CPU beim Abspielen von FullHD-Material: Gerade mal noch im einstelligen Prozentbereich! Cool.
YouTube via MPlayer
Falls man Besitzer eines rechenschwachen Netbooks ist, kann mas das Abspielen von YouTube-Videos in HD im Browser leider vergessen. Ein Ausnahme bilden Geräte mit nVidia-Grafik (z.B. EeePC 1015PN). Dank VDPAU kann man den gerade gebauten MPlayer auch zur Wiedergabe von FullHD-Material aus YouTube benutzen. Dazu installiert man zunächste via
sudo apt-get install youtube-dl
den YouTube Video downloader.
Ein kurzer Blick in die manpages verrät uns die notwendige format codes zum Download der verschiedenene Videoauflösungen:
-f FMT, --format=FMT
Specify the video format (quality) in which to download the video.
For youtube.com, in particular, the meaning of the format codes is given as:
WebM video at 480p: 43
WebM video at 720p: 45
H264 video in MP4 container at 480p: 18
H264 video in MP4 container at 720p: 22
H264 video in MP4 container at 1080p: 37
H264 video in FLV container at 360p: 34
H264 video in FLV container at 480p: 35
H263 video at 240p: 5
3GP video: 17
Mit der richtigen Video-URL kann man die Wiedergabe per
mplayer -fs -aspect 16:9 $(youtube-dl -g -f 37 http://www.youtube.com/watch?v=PQ1V9dQB-rw) -cache 30720 -cache-min 5
oder
mplayer -fs -aspect 16:9 $(youtube-dl -g -f 37 http://www.youtube.com/watch?v=dkoE0kgAGpM) -cache 30720 -cache-min 5
starten (hier FullHD!). Jetzt noch den Flatscreen via HDMI angeschlossen und dem HD-Erlebnis steht nichts mehr im Wege!

