Wenn man 1080p HD Filme auf Linux anschauen möchte reicht ein einfacher Doppelklick häufig nicht, denn auch wenn der Film startet wird er wohl bei den meisten ziemlich ruckeln. Das liegt daran, dass die Videospur der meisten HD Filme mit den Codecs H264 (MPEG-4 AVC) oder VC-1 codiert ist. Diese Codecs sind zwar sehr effizient, man benötigt aber auch eine Menge Rechenleistung um das Bildmaterial schnell genug decodieren zu können. Normalerweise übernimmt die CPU diese Arbeit. Viele Player nutzen dabei jedoch, auch bei Multicore-Prozessoren, nur einen Kern, wodurch es natürlich schnell an der nötigen Rechenleistung fehlen kann. Ergebnis: Es ruckelt, ruckelt und ruckelt.
Um HD Filme flüssig abzuspielen sind mir zwei Möglichkeiten bekannt. Ich gehe dabei davon aus, dass das Video in Form einer .mkv-Datei (Matroska) vorliegt (Videocodec H264 oder VC-1, Audiocodec AC3 oder DTS).
Getestet habe ich alles unter Ubuntu 9.04 (Jaunty) 64-Bit - funktioniert bestens

. Bei anderen Linux-Distributionen kann die Vorgehensweise mehr oder weniger stark abweichen.
Update: Mir ist vor kurzem aufgefallen, dass sich nach der unten beschriebenen Vorgehensweise mit VDPAU (die andere Möglichkiet habe ich nicht mehr getestet) mit einem aktuellen mplayer keine mkv-Dateien mehr abspielen lassen wenn die Videodaten mit VC-1 codiert sind. Als Abhilfe verwende ich zur Zeit deshalb die SVN Revision 29438. Um diese anstelle eines aktuellen mplayers zu verwenden muss bei "svn checkout ..." zusätzlich die Option "--revision 29438" angegeben werden. Im Moment benutzte ich übrigens wieder Ubuntu 9.04 (Jaunty) 32 Bit, ob die 32 Bit oder 64 Bit Version verwendet wird scheint bei dem Problem keine Rolle zu spielen.
Update: Wenn du bereits Ubuntu 9.10 verwendest:
HD mit Ubuntu 9.10.
Pure Rechenpower
Man verwendet einen Player, der alle CPU-Kerne nutzt. Das bietet sich insbesondere dann an, wenn Möglichkeit 2 nicht funktioniert.
Bei einer Dual-Core CPU sollte man mindestens 2 x 2,00 GHz haben. Bei einem Test lief das Video damit bei einer CPU Auslastung von 2 x 80% zwar flüssig, aber man merkt, dass man nicht mehr viel Spielraum hat. Natürlich hängt das ganze auch vom Video ab und soll daher nur eine grobe Größenordnung sein an der man sich orientieren kann.
So installiert man den mplayer mit experimenteller Multithread-Unterstützung
wget -N http://just.mooo.com/mplayer-svn-mt.tar.bz2
tar xjf mplayer-svn-mt.tar.bz2
cd mplayer
./configure
make
sudo make install
Danach ist man fertig und kann das Video abspielen:
mplayer -ao alsa -afm hwac3 -lavdopts threads=N -vc ffh264,ffvc1,ffmpeg12 -demuxer lavf -cache 8192 video.mkv
-ao alsa gibt Audio über alsa aus.
-afm hwac3 dient dazu, den Ton, falls AC3 oder DTS, direkt als Bitstream auszugeben (z.B. über optischen Ausgang am PC). Natürlich braucht man dann auch eine (Surround-)Anlage, die AC3 bzw. DTS dekodieren kann. Wer diese nicht hat lässt die Option einfach weg.
-lavdopts threads=N sorgt dafür, dass auch wirklich mehrere Kerne genutzt werden, wobei N der Anzahl der zu verwendenen Threads entspricht, also am besten einfach die Anzahl der Kerne angeben.
-vc ffh264,ffvc1,ffmpeg12 gibt die Videocodecs an.
-demuxer lavf -cache 8192 benötigt man zum Abspielen der meisten Videos, wenn die Videospur mit VC-1 codiert ist (kann man aber immer angeben, schadet nicht).
Wenn man nicht dauernd so viel schreiben will sollte man sich einen
Shell Alias anlegen.
VDPAU (= Video Decode and Presentation API for Unix)
Das ist eine Schnittstelle des NVidia-Treibers unter Linux, über die man beim Video abspielen große Teile des Dekodierungsprozesses an die Grafikkarte abgeben kann.
Damit man VDPAU nutzen kann braucht man eine Grafikkarte, die VDPAU unterstützt (
Table_of_NVIDIA_GPUs), einen passenden Grafiktreiber und einen Videoplayer, der die Schnittstelle unterstützt.
"Passender Grafiktreiber" heißt, dass man einen ausreichend aktuellen proprietären NVidia-Treiber nutzen muss. Dabei muss man nicht immer den aktuellsten Treiber von der NVidia-Seite runderladen, bei Ubuntu 9.04 reicht es z.B. wenn man den (etwas älteren) Treiber über die Paketverwaltung installiert. Wahrscheinlich reichen auch die Treiber die bei einigen älteren Ubuntu-Versionen dabei sind, getestet habe ich das aber nicht (wenn es jemand getestet hat: bitte Kommentar da lassen - thx

)
Installation des mplayers vorbereiten
sudo apt-get install subversion
sudo apt-get install build-essential
sudo apt-get install nvidia-180-kernel-source
sudo apt-get install nvidia-180-libvdpau nvidia-180-libvdpau-dev
sudo apt-get install libc6-i386 ia32-libs
Die beiden Pakete in der letzten Zeile müssen nur bei einem 64-Bit System installiert werden.
mplayer mit VDPAU-Support kompilieren und installieren
svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer
cd mplayer
./configure
make
sudo make install
Danach ist man fertig und kann das Video abspielen:
mplayer -ao alsa -afm hwac3 -vo vdpau -vc ffh264vdpau,ffvc1vdpau,ffmpeg12vdpau -demuxer lavf -cache 8192 video.mkv
-ao alsa gibt Audio über alsa aus.
-afm hwac3 dient dazu, den Ton, falls AC3 oder DTS, direkt als Bitstream auszugeben (z.B. über optischen Ausgang am PC). Natürlich braucht man dann auch eine (Surround-)Anlage, die AC3 bzw. DTS dekodieren kann. Wer diese nicht hat lässt die Option einfach weg.
-vo vdpau schaltet VDPAU-Nutzung zur Videowiedergabe an.
-vc ffh264vdpau,ffvc1vdpau,ffmpeg12vdpau gibt die zu verwendenden Videocodecs an. Für VDPAU sind diese speziellen Codecs notwendig.
-demuxer lavf -cache 8192 benötigt man zum Abspielen der meisten Videos, wenn die Videospur mit VC-1 codiert ist (kann man aber immer angeben, schadet nicht).
Wenn man nicht dauernd so viel schreiben will sollte man sich einen
Shell Alias anlegen.
Warum die Option "-demuxer lavf" für VC-1 codierte Videos so wichtig ist
Weil mplayer sonst die VC-1 codierte Videospur nicht abspielt. Das sieht dann so aus:
MPlayer SVN-r29480-4.3.3 (C) 2000-2009 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.
Playing video.mkv.
[mkv] Track ID 1: video (V_MS/VFW/FOURCC), -vid 0
[mkv] Track ID 2: audio (A_DTS), -aid 0, -alang ger
[mkv] Track ID 3: audio (A_DTS), -aid 1, -alang eng
[mkv] Will play video track 1.
Matroska file format detected.
VIDEO: [WVC1] 1920x1080 0bpp 23.976 fps 0.0 kbps ( 0.0 kbyte/s)
==========================================================================
Forced video codec: ffh264vdpau
Forced video codec: ffvc1vdpau
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
[VD_FFMPEG] Trying pixfmt=0.
Unsupported PixelFormat -1
VDec: vo config request - 1920 x 1080 (preferred colorspace: VC1 VDPAU acceleration)
VDec: using VC1 VDPAU acceleration as output csp (no 0)
Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
VO: [vdpau] 1920x1080 => 1920x1080 VC1 VDPAU acceleration
[ASPECT] Warning: No suitable new res found!
[VD_FFMPEG] XVMC-accelerated MPEG-2.
[VD_FFMPEG] Trying pixfmt=0.
[VD_FFMPEG] XVMC-accelerated MPEG-2.
[vc1_vdpau @ 0xcb6ba0]Incomplete extradata
Could not open codec.
VDecoder init failed 
Cannot find codec matching selected -vo and video format 0x31435657.
==========================================================================
==========================================================================
Trying to force audio codec driver family hwac3...
Opening audio decoder: [hwac3] AC3/DTS pass-through S/PDIF
No accelerated IMDCT transform found
hwac3: switched to DTS, 1536000 bps, 48000 Hz
AUDIO: 48000 Hz, 2 ch, ac3, 1536.0 kbit/100.00% (ratio: 192000->192000)
Selected audio codec: [hwdts] afm: hwac3 (DTS through S/PDIF)
==========================================================================
AO: [alsa] 48000Hz 2ch ac3 (1 bytes per sample)
Video: no video
Starting playback...
A: 1.8 (01.7) of 7046.0 ( 1:57:26.0) 0.3%
Exiting... (Quit)
Abhilfe schaffen die Optionen
-demuxer lavf -cache 8192 (scheint bei aktuelleren mplayer-Versionen leider nicht mehr zu funktionieren, daher eventuell eine ältere Version des mplayer verwenden wie am Anfang des Artikels beschrieben).
Wer den
mplayer bisher nicht verwendet hat sollte sich unbedingt die
mplayer Tastenbelegung ansehen.
Ubuntu 9.10
Vor kurzem bin ich auf Ubuntu 9.10 64 Bit umgestiegen und musste feststellen, dass HD (mit VDPAU, VDPAU fähigen Grafikkartentreiber vorausgesetzt) jetzt out of the box funktioniert

.
Dazu einfach den mplayer aus der Paketverwaltung installieren und das Video abspielen mit:
mplayer -ao alsa -afm hwac3 -vo vdpau -vc ffh264vdpau,ffvc1vdpau,ffmpeg12vdpau -demuxer lavf -cache 8192 video.mkv
Die Optionen "-demuxer lavf" und "-cache 8192" musste ich bisher nur bei Videos mit VC1 Videospur angeben.