Dieser Artikel gibt einen Überblick über xine und dessen Frontends, beschreibt Installation und Anwendung dieser Programme und erklärt nebenbei noch verschiedene Aspekte von Multimedia auf Computern unter GNU/Linux.
Es ist Freitag abend, draußen regnet es in Strömen. Man sitzt vor dem Fernseher, doch dort läuft mal wieder nichts Interessantes. Aber nach einem Griff zur Fernbedienung quellen aus den Boxen der Surround-Soundtrack der Lieblings-DVD, ausgewählte Stücke aus einem Musik- und Videoarchiv oder Musik aus einem Online-Radio. All dies und noch viel mehr ist mit xine möglich.
Features
Es sei noch kurz vorweggeschickt, dass “xine” immer klein geschrieben und “ksiin” ausgesprochen wird. Was ist xine nun eigentlich? Es ist eine Bibliothek, die es erlaubt, alle gängigen Multimediaformate wiederzugeben. Die Daten können dabei von der Festplatte, von einer Audio-CD, von DVD oder VCD kommen, sogar eine Fernsehkarte kann angezapft werden. Des weiteren werden alle gängigen Streaming-Protokolle unterstützt: xine verträgt sich mit RTSP, MMS und Streams über HTTP.
Außerdem unterstützt die Software alle wichtigen Dateiformate wie AVI, MPEG, WAY, QT/MPEG4, ASF und Ogg sowie verschiedene Real-Player-Formate. Eine vollständige Liste aller abspielbaren Codecs finden Sie auf der Features-Seite [1].
Installation von xine
Xine lässt sich auf zwei Wegen installieren: Auf http://www.xinehq.de stehen im Download-Bereich verschiedene Binärpakete bereit. Unter Umständen ist die eigene Distribution dabei.
Unter Red Hat und SuSE Linux lassen sich diese Pakete mit dem Befehl rpm -i [Paketname] ganz einfach installieren. Bei Debian Linux ist dies mit dpkg -i [Paketname] direkt oder mit apt-get aus dem unstable-Tree möglich.
Vorsicht: Die xine-Pakete, die eventuell in Distributionen enthalten sind, bauen vielfach auf alten Versionen auf und unterstützen nicht alle gängigen Formate. Sollte es für die eigene Distribution kein Paket geben, bleibt nur der Weg, die Bibliothek selbst zu kompilieren. Nach dem Download der Quellen von der Xine-Homepage [2] wird es mit dem üblichen ./configure; make; make install installiert. Dazu müssen natürlich der C-Compiler und die nötigen Bibliotheken installiert sein.
Die wichtigsten Frontends
Um xine benutzen zu können, brauchen Sie ein Frontend. Hier gibt es inzwischen ein reiches Angebot auf der Projekt-Homepage. Ein Urgestein ist xine-ui. Es wurde gemeinsam mit der Bibliothek entwickelt und ist heute noch das Standard-Frontend zur xine-lib.
Seit sich die Schnittstelle der xine-Bibliothek nicht mehr ständig ändert, entwickeln Programmierer viele andere Frontends – alle mit ihren Vor- und Nachteilen. Um Ihnen die Wahl zu erleichtern, seien hier die wichtigsten vorgestellt:
Xine-ui (Abbildung 1) rufen Sie auf der Kommandozeile mit xine auf. Es läuft unter allen Betriebssystemen und Hardware-Architekturen, die die xine-Bibliothek unterstützt. Xine-ui arbeitet mit Skins und ermöglich Zugriff auf alle Features der Bibliothek.
Die Software ist nicht abhängig von Gui-Toolkits wie Gtk oder Qt, sondern setzt direkt auf Xlib auf. Das Frontend sichert seine Konfiguration in der Datei ~/.xine/config und merkt sich so beispielsweise den zuletzt benutzten Grafiktreiber.
Eine Alternative zu xine-ui ist gxine (Abbildung 2). Dieses Frontend benutzt Gtk 2 und fügt sich daher sehr gut in den GNOME-Desktop ein. Es ist intuitiv zu bedienen und bringt ein Mozilla-Plugin mit, um Streams aus dem Internet zu öffnen. Mediamarks, Playlisten sowie die Xine-Konfiguration sind unter ~/.gxine zu finden. Zur Zeit arbeiten die Entwickler an der Unterstützung von Windows-Media-Player-Skins.
Das Programm Totem geht bei der GNOME-Integration noch einen Schritt weiter: Es integriert sich in den Datei-Browser Nautilus mit einem Menüpunkt und erweitert Nautilus um eine Thumbnail-Vorschaufunktion für Videodateien. Dazu benötigt dieses Frontend neben Gtk auch noch andere GNOME-2.2-Bibliotheken.
Tabelle 1: Die wichtigsten Tastenbelegungen der Frontends
| Return | Play |
| Leertaste | Pause |
| Q | Beenden |
| Esc | Fullscreen-Modus verlassen |
| A | Videobild-Seitenverhältnis einstellen |
| I | De-Interlacer |
| Pfeil links | 60 sec zurück |
| Pfeil rechts | 60 sec vorwärts |
| Ctrl+Pfeil links | 15 sec zurück |
| Ctrl+Pfeil rechts | 15 sec vorwärts |
| Pfeil hoch | schnellere Wiedergabe |
| Pfeil runter | langsamere Wiedergabe (Zeitlupe) |
| 0 | An den Anfang springen |
| 1-9 | Nach 10%, 20%, … 90% springen |
| Page Up | zum vorherigen Playlist-Eintrag springen |
| Page Down | zum nächsten Playlist-Eintrag springen |
| Shift+Z | ins Video hinein-zoomen |
| Z | aus dem Video heraus-zoomen |
| T | Snapshot vom Video machen und speichern |
Fallstricke
xine spielt inzwischen ohne zusätzliche Plugins unverschlüsselte DVDs ab. Allerdings ist dazu auf manchen Systemen dennoch etwas Vorarbeit nötig. Zunächst sollten Sie einen symbolischen Link /dev/dvd anlegen, der auf die Gerätedatei des DVD-Laufwerks zeigt. Hier ist ein Beispiel für ein als Master am zweiten IDE-Controller angeschlossenes DVD-Laufwerk:
ln -s /dev/hdc /dev/dvd
Oft hilft ein Blick mit dem Programm dmesg in die Kernel-Log-Meldungen, um herauszubekommen, welches Block-Device dem DVD-Laufwerk entspricht:
guenter@wolverine:~$ dmesg | grep -i dvd hdc: HITACHI DVD-ROM GD-2500, ATAPI CD/DVD-ROM drive hdc: ATAPI 24X DVD-ROM drive, 512kB Cache, DMA
Schwieriger wird es auf Systemen, die die IDE-SCSI-Emulation benutzen (/proc/scsi/ide-scsi vorhanden). In diesem Fall bildet der Kernel die IDE-Devices auf SCSI-Devices /dev/scd@L: * ab, und der Anwender spricht diese an Stelle der IDE-Geräte an. Hier leistet das Programm cdrecord wertvolle Hilfe:
rai23:~# cdrecord -scanbus
Cdrecord 1.10 (i686-pc-linux-gnu) Copyright (C) 1995-2001 Jörg Schilling
Linux sg driver version: 3.1.22
Using libscg version 'schily-0.5'
scsibus0:
0,0,0 0) 'TOSHIBA ' 'DVD-ROM SD-M1612' '1004' Removable CD-ROM
0,1,0 1) 'ATAPI ' 'CD-R/RW 20X10 ' 'H.BK' Removable CD-ROM
Auf diesem Rechner sprechen Sie das DVD-ROM Laufwerk als das erste SCSI-CD-Device an, also /dev/scd0. Entsprechend legen Sie den Link dann mit ln -s /dev/scd0 /dev/dvd an.
Als nächstes prüfen Sie mit hdparm, ob das DVD-Device im DMA-Modus angesprochen wird, und schalten diesen gegebenfalls ein. Andernfalls spielen auch aktuelle Rechner DVDs nicht flüssig ab:
rai23:~# hdparm /dev/hdc using_dma = 0 (off)
In diesem Fall ist der DMA-Modus also nicht aktiviert. Aktivieren Sie ihn mit dem folgenden Kommando:
rai23:~# hdparm -d 1 /dev/hdc /dev/hda: setting using_dma to 1 (on) using_dma = 1 (on)
Wenn auf dem Rechner die IDE-SCSI-Emulation aktiv ist, sollte hdparm trotzdem auf das IDE-Device und nicht etwa auf das SCSI-Device angewendet werden.
Nehmen Sie den Aufruf von hdparm möglichst in ein Init-Skript auf, damit er bei jedem Boot-Vorgang ausgeführt wird. Bei Debian-Systemen bietet sich hierzu beispielsweise das Skript /etc/init.d/hwtools (apt-get install hwtools) an.
Nach dieser Vorarbeit spielt xine unverschlüsselte DVDs ab. Die meisten Frontends bieten dazu einen DVD-Button oder -Menüeintrag an, oder Sie starten das entsprechende Frontend einfach von der Kommandozeile, wie in diesem Beispiel gxine:
gxine dvd://
Der Aufruf kann bei anderen Programmen variieren. Klappt die DVD-Wiedergabe nicht, kann das mehrere Ursachen haben. Am wahrscheinlichsten ist, dass die DVD Region-kodiert und/oder verschlüsselt ist. Xine selbst prüft die Region zwar nicht, aber neuere DVD-Laufwerke (so genannte RPC-2-Laufwerke) unterbinden den Zugriff schon auf Firmware-Level, wenn die Region der DVD nicht mit der im Laufwerk eingestellten Region übereinstimmt.
Abhilfe schafft hier das Regionset-Utility von der Web-Seite http://www.linuxtv.org. Es ist als RPM-Paket beispielsweise unter [3] zu finden. Anwender einer nicht-RPM-basierten Distribution erhalten den Source-Tarball mit alien –to-tgz aus dem Source-RPM. Anschließend packen Sie das Programm mit tar xfvz [Tarball-Name] aus und kompilieren es mit einem einfach make-Aufruf.
Ein weiteres Hindernis sind verschlüsselte DVDs. Aus rechtlichen Gründen kann xine keinen Code zur Dekodierung des dort eingesetzten Content Scrambling System (kurz CSS) enthalten. Ist allerdings die libdvdcss vorhanden, sollten sich beliebige DVDs wiedergeben lassen. Beachten Sie hierbei aber die Lizenz- und Urheberrechtsbestimmungen (siehe auch Artikel zu Ogle). Das Entschlüsseln der DVD-Inhalte ist rechtlich problematisch.
Grundsätzlich können Sie in DVD-Menüs mit Hilfe der Maus, der Tastatur oder auch per Infrarot-Fernbedienung navigieren. Bei den meisten Frontends erfolgt die Navigation per Tastatur über die Tasten im Ziffernblock der Tastatur. Zusätzlich stehen die Funktionstasten [F1] bis [F3] zur Verfügung, um aus dem Film direkt in das DVD-Menü zurückzuspringen.
Video-CDs abspielen
Von Haus aus spielt xine Video-CDs (VCDs) ab. Die meisten Frontends bieten dazu einen VCD-Button oder -Menüeintrag. Auch von der Kommandozeile können Sie die VCD-Wiedergabe starten, beispielsweise mit
gxine vcd://
Einzige Voraussetzung ist, dass der Link /dev/cdrom auf das Laufwerk zeigt, in dem die VCD liegt. Neuere VCDs verfügen, ganz ähnlich wie DVDs, über ein Menüsystem, das dem Anwender Informationen über das Medium präsentiert. Um dieses zu benutzen, installieren Sie das seperat unter [4] erhältliche Xine-VCDX-Plugin.
Nach einem Neustart erkennt xine automatisch das neue Plugin, und die meisten Frontends bieten entsprechende VCDX-Buttons oder Menüeinträge an; auf der Kommandozeile sieht das Ganze so aus:
gxine vcdx://
Performance optimieren
Insbesondere – aber nicht nur – die DVD-Wiedergabe erzeugt auf aktuellen Systemen einiges an CPU-Last. Ruckelt die Wiedergabe, gibt es eine Menge Möglichkeiten zur Optimierung. Im Abschnitt über DVDs fand bereits der DMA-Modus Erwähnung. Dieser sollte auf jeden Fall (übrigens auch für die Festplatten im System) aktiviert sein.
Sehr wichtig ist die richtige Wahl des Plugins zur Video-Ausgabe. Versuchen Sie es auf jeden Fall mit den so genannten Xv-Extensions (X Video), die ab XFree 4.0 im X-Server-Paket enthalten sind: Damit kann die Grafikkarte die Farbraumkonvertierung und Skalierung der Videodaten übernehmen, und das bringt einen gewaltingen Performance-Schub.
Mit dem folgenden Befehl finden Sie leicht heraus, ob der verwendete Treiber für die Grafikkarte die Videoausgabe von xine beschleunigen kann:
xvinfo
Das ist der Fall, wenn die Liste der Bildformate (Image formats) die Formate YUY2 und YV12 enthält:
Number of image formats: 5
[…]
id: 0x32595559 (YUY2)
[…]
id: 0x32315659 (YV12)
Finden Sie die letzten beiden Zeilen, ist alles in Ordnung. In diesem Fall sollte xine automatisch die Xv-Extension benutzen. Ansonsten machen Sie einen entsprechenden Eintrag in der Konfigurationsdatei oder übergeben die Option als Parameter auf der Kommandozeile:
gxine -V Xv
Funktioniert der Xv-Support nicht, sehen Sie sich nach aktuelleren Treibern für die verwendete Grafikkarte um. Oft wirkt ein Upgrade auf eine aktuelle XFree86-Release schon Wunder. Beispielsweise unterstützt die momentan aktuelle XFree86-Version 4.3.0 Xv auf i830-Chipsätzen, die in vielen Notebooks eingebaut sind.
In anderen Fällen bieten die Hersteller der Grafik-Chips separate Treiber an. So unterstützen nur die Treiber im Binärformat von Nvidia Xv auf älteren RivaTNT-Grafikkarten. Die Xine-FAQ enthält eine detaillierte Liste von Grafik-Chips und Quellen für Xv-fähige Treiber [5].
Multimedia im Kernel
Wer seinen Linux-Kernel selbst kompiliert, sollte hier Einiges beachten. Zunächst schalten Sie unbedingt den MTRR-Support ein. Dies bringt auf allen aktuellen CPUs erhebliche Performance-Verbesserungen bei der Grafikausgabe.
Außerdem hat sich der Preemptive-Scheduler-Patch bewährt. Für echte Experten sei gesagt, dass das Heraufsetzen der Hz-Zahl auf 1000 die Videowiedergabe nochmals erheblich flüssiger macht, weil dadurch die einzelnen Videobilder präziser zur richtigen Zeit dargestellt werden können.
Wem das alles nichts sagt, der kann sich beruhigt zurücklehnen: Viele Distributionen integrieren die entsprechenden Patches bereits in ihre Kernel, und spätestens Linux 2.6 kommt von Haus aus mit entsprechend verbessertem Scheduler daher, wie aktuelle 2.5er-Versionen schon heute zeigen.
Fransen im Bild
Ein ganz anderes Problem ergibt sich bei der Wiedergabe von Fernsehproduktionen auf Computer-Monitoren: Solche Videoströme sind meist im so genannten Interlace-Verfahren produziert, d. h., man nimmt statt 25 Vollbildern 50 Halbbilder pro Sekunde auf, wobei der Monitor zwei Halbbilder zusammen als ein Vollbild darstellt.
Da die Halbbilder aber einen kleinen zeitlichen Versatz haben, werden bei schnellen Bewegungen Fransen sichtbar – das ist ein sehr störender Effekt. Deshalb besitzt xine einen Filter, der versucht, diesen Effekt zu unterdrücken. In den meisten Frontends aktiviert die Taste [I] den Filter. Seine Verwendung allerdings einiges an Rechenzeit: Wer einen älteren PC besitzt, dem bleibt nur die Wahl zwischen Ruckeln und Fransen.
Der gute Ton
Neben der Video-Wiedergabe lässt sich die Audio-Wiedergabe verbessern. Heute verfügen viele Kinofilme über hochwertige Surround-Tonspuren. Diese müssen jedoch häufig zur Wiedergabe auf weniger Lautsprecher heruntergerechnet werden.
Sind an Ihrem Computer mehrere Lautsprecher direkt an die Soundkarte angeschlossen und entsprechende Treiber installiert, können Sie in der Konfigurationsdatei durch entsprechende Einträge 4.0-, 5.0- und 5.1-Wiedergabe aktivieren:
audio.four_channel:1 audio.five_channel:1 audio.five_lfe_channel:1
Ist dagegen ein externer Dolby-Digital- oder gar DTS-Decoder angeschlossen, so können Sie diesem die Dekodierung der digitalen Audiodaten überlassen. Dies bezeichnet man als Pass-Through und konfiguriert es bei xine durch die Option:
audio.a52_pass_through:1
Dann klappt’s auch mit dem Nachbarn …
Ein anderes Problem ist der zwar bei vielen Kinobegeisterten beliebte, aber von Nachbarn oft als störend empfundene große Dynamikumfang von Kino-Tonspuren. Dialoge sind oft recht leise, Effekte aber sehr laut abgemischt. Hier gibt es zwei interessante Optionen, die Abhilfe versprechen: Für Dolby-Digital-Tonspuren aktivieren Sie mit folgender Zeile die in diesem Tonsystem vorgesehene Dynamic Range Compensation:
codec.a52_dynrng:1
Allgemeiner – allerdings mit manchmal deutlicher hörbaren Artefakten – arbeitet der Kompressor in xine, der sich in den meisten Frontends über einen Slider aktivieren lässt. Der Slider-Wert gibt dabei in Prozent an, wie stark die Lautstärke in leisen Teilen der Tonspur erhöht werden kann. Ein Wert von 200 bedeutet, dass die Lautstärke maximal verdoppelt werden darf.
Web-Radio und Video-on-Demand
Mehr und mehr Radiosender streamen ihr Programm live über das Internet. Neben reinen Web-Radios wie [7] bieten auch immer mehr private [8] und öffentlich-rechtliche Radiostationen [9, 10] aus aller Welt Live Streams in oft durchaus ansprechender Qualität an – praktisch, wenn man umgezogen ist und weiter den Sender aus der Heimat hören will oder einfach im Büro zwar einen Computer mit Internet-Zugang und Sound-Karte, aber kein Radio hat.
Xine emuliert sowohl den Windows Media Player als auch den Real Player und spielt damit praktisch alle gängigen Live-Stream-Formate ab. Allerdings steckt hier wieder der Teufel im Detail: Zunächst sollte man die Binary-only-Codecs, die z. B. von [11] erhältlich, nach /usr/lib/win32 entpacken.
Die nächste Hürde besteht darin, die in viel Javascript-Code versteckten URLs der Streams aus der Radiosender-Homepage auszugraben. Hier empfiehlt sich gxine, da es ein spezielles Mozilla-Plugin mitbringt und elegant per Wizard beim ersten Start installiert.
Über das Plugin wird dann gxine automatisch gestartet, sobald Sie eine Seite mit eingebetteten Multimedia-Streams aufrufen. Gefällt das Programm, bietet es sich an, gleich einen Mediamark zu setzen, um in Zukunft den Stream ganz ohne Browser direkt in gxine aufrufen zu können.
Seit der immer stärkeren Verbreitung von DSL-Anschlüssen und Kabelmodems gibt es sogar Fernseh-Live-Streams wie [12] oder [13] im Internet. Diese lassen sich auch mit xine wiedergeben – Browser-Plugin und entsprechend installierte Programm-Plugins vorausgesetzt.
Neben den Live Streams sind Video-on-demand-Dienste eine feine Sache. Verpasste Nachrichten schauen Sie einfach und bequem jederzeit bei [14] und [15] als Video-Stream an. Dazu ist natürlich genügend Bandbreite die Voraussetzung.
Wer sich für aktuelle Film-Trailer interessiert, wird beispielsweise unter [16] und [17] fündig. Unter [18] findet man über 5000 Radio- und Fernsehstationen aus aller Welt, praktisch nach Genres sortiert.
Fernsehen mit xine
Auch eine Fernsehkarte kann man mit xine nutzen, indem man den folgenden Aufruf verwendet:
gxine v4l://
Leider ist es im Moment nicht möglich, den Kanal zu wechseln, was aber zumindest bei Satellitenempfang keinen großen Nachteil darstellt. Dort wechseln Sie den Sender ohnehin am Satellitentuner. Interessanter ist die Möglichkeit, mit xine digitales Fernsehen zu sehen – besonders, weil die Software die übertragenen MPEG-2-Daten über die CPU entpacken kann, also relativ billige DVB-Tunerkarten wie beispielsweise [19] zum Einsatz kommen können.
Die Details sprengen den Rahmen dieses Artikels. Nähere Informationen finden Sie in der Datei README.dvb aus der Dokumentation von xine-lib.
xine fernbedienen
Um xine bequem vom Sofa zu steuern, brauchen Sie eine Fernbedienung. Prinzipiell eignet sich fast jede Infrarot-Fernbedienung. Beim Lirc-Project (Linux Infrared Remote Control) [20] gibt es Bauanleitungen für Empfänger und die entsprechenden Treiber zum Download. Die meisten Distributionen liefern diese Treiber sogar gleich mit.
Ist Lirc auf dem System eingerichtet, können Sie alle oben genannten Frontends mit der Fernbedienung steuern. Zur weiteren Konfiguration (Tastenbelegungen etc.) finden Sie Hinweise in der Dokumentation der einzelnen Frontends.
Ausblick
Die Entwicklung bleibt natürlich nicht stehen. Neben der stetigen Verbesserung vorhandener Features kommen ständig neue hinzu. Erst seit kurzem ist es möglich, die Frames – die Einzelbilder eines Streams – separat darzustellen.
So lassen sich spezielle Frontends entwickeln, die diese Einzelbilder verarbeiten und daraus neue Video-Streams generieren. Da es egal ist, in welchem Format das Ausgangsmaterial vorliegt, ist es beispielsweise möglich, von einer Fernsehkarte oder Streams aus dem Internet aufzuzeichnen. Ein erster Ansatz für solch ein Frontend ist enix[21]. Dieses Frontend befindet sich aber noch in einem sehr frühen Entwicklungsstadium und ist derzeit nur erfahrenen Benutzern zu empfehlen.
Einer der Autoren dieses Artikels entwickelt gerade ein spezielles Frontend, das xine wohnzimmertauglich macht. Das Projekt trägt den Arbeitstitel “oxine” [22] und ist darauf ausgelegt, ständig im Vollbildmodus zu laufen. Die Benutzerführung läuft über die On Screen Displays (OSD) von xine, welche bereits bei DVD-Menüs und Untertiteln Verwendung finden.
Glossar
- Bibliothek
- Auch Library genannt. Sammlung von Programm-Code, die bestimmte Funktionen bereitstellt. Applikationen, die gegen die Bibliothek gelinkt sind, können diese Funktionen nutzen. Auf Linux-Systemen (wie auf vielen anderen Unix-artigen Systemen), tragen Bibliotheken die Endung .so, oft gefolgt von einer Versionsnummer. Das Suffix so steht dabei für “shared object” und betont, dass viele Anwendungen den enthaltenen Code gemeinsam nutzen dürfen.
- Codecs
- Abkürzung für Codierer/Decodierer. In Zusammenhang mit Audio-/Videokompression ein Programmstück, das Audio-/Videodaten komprimiert (“encoden”) und wieder auspackt (“decoden”).
- Plugin
- Ähnlich einer Bibliothek, allerdings werden Plugins zur Laufzeit eines Programms dynamisch nachgeladen und können vom Benutzer zur Erweiterung der Programmfunktion nachinstalliert werden. Audio- und Video-Player, die auf Plugins basieren, lassen sich so besonders einfach um die Unterstützung neuer Audio-/Videoformate erweitern.
- Mediamark
- Sehr ähnlich wie ein Bookmark im Browser. Der Mediamark zeigt allerdings auf einen Multimedia-Stream. Wird beispielsweise im gxine als Funktion angeboten, um Internet-Live-Streams oder auch Stellen auf DVDs zu merken.
Infos
[1] http://xinehq.de/index.php/features
[2] http://xinehq.de
[3] http://rpmfind.net/linux/RPM/contrib/libc6/i386/dvd_disc-20000215-2.i386.html
[4] http://savannah.nongnu.org/projects/libcdio/
[5] http://www.xinehq.de/index.php/faq#XVEXTENSION
[8] http://www.webradio-portal.de
[9] http://www.ard.de/radio/radionet/index.html
[10] http://www.bbc.co.uk/radio/
[11] http://www1.mplayerhq.hu/MPlayer/releases/codecs/
[12] http://www.giga.de
[13] http://www.n-tv.de
[15] http://www.heute.de
[16] http://www.apple.com/trailers
[17] http://www.darkhorizons.com
[19] http://www.hauppauge.de/prod_nova.htm
[20] http://lirc.org







