Compile MPlayer mit VDPAU-Support

Aus CaiaWiki

Wechseln zu: Navigation, Suche

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!

Links

How to compile mplayer with vdpau support on Ubuntu

Persönliche Werkzeuge