Donnerstag, 8. Februar 2007

Linux

Inhalt

Einleitung
Sound
Video unter Linux
DVD-Support
Analog-TV
Digital-TV (DVB) und VDR
3D-Grafik
Spiele unter Linux
Multimedia-Entwicklung
Fazit

Die Folien zum Vortrag

Einleitung

Eins der am häufigsten genannten Argument gegen den Einsatz von Linux im Heimgebrauch richtet sich gegen die angeblich mangelnde Multimediafähigkeit von Linux. Um diesen Vorwurf möglichst zu entkräften, haben wir eine Übersicht über die heutigen Möglichkeiten zusammengestellt, die das Betriebssystem mit dem Pinguin dem Nutzer bietet. Es werden viele Techniken und Programme vorgestellt, die unserer Meinung nach wichtig sind. Unsere Ausarbeitung kann und will dem Anspruch komplett zu sein nicht gerecht werden, die Auswahl an Programmen und Möglichkeiten ist zu groß und die Entwicklung der einzelnen Projekte geht stetig voran.

Wir werden konkret auf die Bereiche Audioausgabe, Audiocodecs, Audioschnitt und -bearbeitung, Videotreiber, Videoschnitt und -codecs, Playerprogramme für Musik und Video, DVD-Support, Netzwerkstreaming und Fernsehen eingehen. Den Schwerpunkt haben wir auf freie Softwareprojekte gelegt, obwohl es mitunter auch kommerzielle Alternativen gibt. Sofern ein kommerzielles Produkt von großer Bedeutung für einen Bereich ist, ist es mit aufgeführt.

Dieses Dokument richtet sich weder an Linuxprofis noch an "Anfänger", wir setzen allerdings gewisse Kenntnisse über das Betriebssystem voraus. Installationsanleitungen und Kochrezepte können wir nicht anbieten, dazu gibt es auf den einzelnen Projektseiten selbst genug Hilfe. Durch die große Themenauswahl war es uns leider nicht möglich viele Punkte die eine nähere Betrachtung wert gewesen wären, genauer zu erläutern.

Jan Nerche und Andreas Reis, HTW Dresden, Januar 2005

Sound

OSS

Das Open Sound System wurde von 4Front Technologies als Audio-Lösung für viele Unix-Systeme entwickelt. Da OSS kommerziell vertrieben wird, ist im Linux-Kernel nur ein Ableger - OSS/Free - enthalten. OSS/Free enthält nur wenige Treiber im Vergleich zur "Vollversion" und wird von 4Front auch nicht weiterentwickelt. Da mit ALSA mittlerweile eine mächtigere Lösung für Linux bereitsteht, wird OSS/Free über kurz oder lang aus dem Linux-Kernel verschwinden.

Funktionsweise

Nachdem ein OSS-Treiber erfolgreich geladen wurde stehen unter /dev einige Gerätedateien bereit, je nach Soundkarte z.B.

  • /dev/dspX (PCM) (wobei /dev/dsp in den meisten Fällen das Standard-Wiedergabegerät ist)
  • /dev/adspX (PCM)
  • /dev/mixerX (Mixer)
  • /dev/midi0X (MIDI)
  • /dev/amidi0X (MIDI)
  • /dev/sequencer
  • /dev/sequencer2 (bzw. /dev/music)

(X steht für die Soundkarten-Nummer, von 0 bis 7)
OSS-Anwendungen greifen direkt auf diese Gerätedateien zu (z.B. mit fopen()).

ALSA

Die Advanced Linux Sound Architecture wird als OpenSource-Projekt entwickelt und ist mittlerweile die Standard-Soundlösung im Linux-Kernel. ALSA enthält Treiber für viele Soundkarten, professionelle High-End-Audiohardware wird ebenso unterstützt wie die AC'97-basierten Low-End-Chips, die sich auf jedem Mainboard finden. Neben den Treibern beinhaltet das ALSA-Projekt noch einige Tools, z.B. einen einfachen Player sowie den Alsamixer. Die alte OSS-API kann von ALSA auf zwei Wegen emuliert werden: entweder werden durch zusätzliche Kernel-Module die OSS-Gerätedateien (/dev/dsp/, /dev/mixer,...) bereitgestellt, oder man startet die Anwendung über das aoss-Skript (also z.B. "aoss xmms").

Funktionsweise

Damit eine Soundkarte genutzt werden kann, muss das entrsprechende Kernelmodul (=der Treiber) geladen sein. Der Zugriff auf die Karte erfolgt nicht über Gerätedateien, sondern über die Userspace-Library libasound. Leider unterstützen nicht viele Treiber Hardware-Mixing, d.h. gibt eine Anwendung Sound über ALSA aus, ist die Soundkarte für andere Anwendungen blockiert (Beispiel: XMMS spielt Musik über ALSA, gleichzeitig versucht man, mit mplayer ein Video abzuspielen - Soundausgabe auch über ALSA -> Ergebnis: mplayer bleibt beim Start hängen, bis man die Wiedergabe im XMMS stoppt). Es gibt zwar das dmix-Plugin für ALSA, das mehrere Soundströme zusammenmixen kann, richtig gut funktioniert das allerdings (noch) nicht. Wenn man von mehreren Anwendungen Sound gleichzeitig ausgeben möchte, empfiehlt sich die Nutzung eines Sounddaemons. Mehr dazu später.
Ein großer Vorteil von ALSA ist seine Flexibilität. Es werden nicht nur mehrere (physische) Soundkarten unterstützt, mann kann auch virtuelle Soundkarten anlegen, um z.B. ein Plugin vorzuschalten oder um eine Soundkarte als "default" festzulegen. Die Beschreibung solcher virtueller Geräte lässt sich in den Dateien /etc/asound.conf (systemweit) und $HOME/.asoundrc (für den jeweiligen Nutzer) festlegen.
An dieser Stelle ein praktisches Beispiel: Der recht weit verbreitete Nvidia nforce2-Chipsatz kann sämtlichen Sound über den digitalen Ausgang (IEC958, SPDIF) ausgeben (indem er den Sound in Echtzeit in einen AC3-Datenstrom enkodiert). Hat man eine Anlage / ein Lautsprecherset, das mit digitalen Signalen umgehen kann, liegt es nahe, nur diesen Anschluss zu benutzen, da man so bis zu 5.1 Kanäle verlustfrei über ein einziges Kabel übertragen kann. Leider nutzt ALSA standardmäßig nur den analogen Stereoausgang. Um den digitalen Ausgang als "Standardgerät" festzulegen genügen folgende Zeilen in der .asoundrc:

pcm.!default {
type hw
card 0
device 2

}

ctl.!default {
type hw
card 0
device 2
}

"card" ist die Nummer der physischen Soundkarte, beginnend bei 0
"device": jede Soundkarte besitzt mehrere "devices", z.B. für Wiedergabe und Aufnahme; decive 0 ist der normale analoge Ausgang, device 2 ist beim nforce2 (sicher auch bei einigen anderen Soundkarten) der digitale Ausgang
Oft findet man bei ALSA-Applikationen die Notation "hw:0,0", um ein Ausgabegerät zu beschreiben. Die erste Zahl steht dabei für die Karte, die Zweite für das Device.
Leider nutzt die OSS-Emulation nur die Geräte hw:0,0 für /dev/dsp und hw:0,1 für /dev/adsp. (Immerhin lassen sich so zwei unterschiedliche Soundströme gleichzeitig ausgeben: einer normal durch ALSA über Digital Out, ein anderer durch die OSS-Emulation über Analog out ;-) )

Links zu ALSA:
ALSA Homepage
Verzeichnis unterstützter Soundkarten
Doku zur .asoundrc
ALSA Wiki; Hilfen, Dokumentationen u.a. zu OSS-Eumlation und Digital Out
über die ALSA OSS-Emulation


Sounddaemons

Sounddaemons bieten eine hardwareunabhaengige Audioschnittstelle für Anwendungen und können ausserdem mehrere Soundströme zusammenmixen. Im Folgenden sollen die drei wichtigsten Soundaemons vorgestellt werden:

  • aRts: der Analog Realtime Synthesizer ist ein Bestandteil des KDE-Desktops, d.h. er wird von allen KDE-Anwendungen (meist als einzige Soundausgabemöglichkeit) unterstützt. Als "Audio-Hardware" kann neben OSS und ALSA auch esd oder JACK gewählt werden - bei entsprechender Konfiguration können also auch mehrere Sounddaemons parallel verwendet werden.
  • esd bzw. Esound: der Enlightened Sound Daemon ist der Soundserver des Gnome-Desktops.
  • JACK: das JACK Audio Connection Kit wurde speziell für professionelle Anwendungen entwickelt, mit dem Schwerpunkt auf besonders geringen Latenzzeiten.


Audioplayer

Mittlerweile ist eine ganze Reihe von Playern für Linux erhältlich, so dass für jeden Geschmack etwas dabei sein sollte. An dieser Stelle sollen die wichtigsten erwähnt werden:

  • XMMS: das X Multimedia System ist ein Nachbau des Winamp 2.x-Players für Windows (und kann sogar mit dessen Skins umgehen). Dank zahlrecher Plugins für Eingabe, Ausgabe, Codecs, Visualisierung,... ist XMMS sehr vielseitig und wohl DER Audioplayer für *NIX-Systeme
    Homepage: http://www.xmms.org
  • amaroK: ein relativ neuer Player für KDE mit schöner, bequemer Bedienoberfläche, Bibliotheksfunktionen, Playlistenmanagement und vielen netten Gimmicks. amaroK bringt seine Wiedergabe-Codecs nicht selbst mit, er verlässt sich zum Dekodieren und Wiedergeben von Sound auf eine sog. "Engine". Nutzbare "Engines" sind arts, xine(-lib), GStreamer und NMM. Ausser arts müssen sie als extra Pakete installiert werden.
    Homepage: http://amarok.kde.org/
  • zinf: quasi-Nachfolger von FreeAmp, einfacher, aber mächtiger Audioplayer; ähnelt XMMS
    Homepage: http://www.zinf.org/
  • JuK: schlanker KDE-Audioplayer mit guter Playlisten-Funktion, speziell für Sammlungen von mp3-, Ogg Vorbis- und FLAC-Dateien; Teil des kdemultimedia-Paketes
    Homepage: http://developer.kde.org/~wheeler/juk.html
  • mpg123: Kommandozeilen-Player für die MPEG-Layer 1,2 und 3 (mp1, mp2, mp3), nur für nicht-kommerziele Nutzung
    Homepage: http://www.mpg123.de/
  • mpg321: freier mpg123-clone (GPLv2)
    Homepage: http://mpg321.sourceforge.net/
  • BMP: der Beep Media Player ist ein Fork des XMMS-Projektes, gewissermassen dessen Weiterentwicklung und Port auf GTK+2; XMMS-Plugins funktionieren mit ihm allerdings meist nicht
    Homepage: http://www.sosdg.org/~larne/w/BMP_Homepage
  • Mp3Kult: KDE3-Musikarchiv-Verwaltung; organisiert MP3/Ogg Vorbis Sammlungen in einer mysql-Datenbank (Wiedergabe über externe Player)
    Homepage: http://mp3kult.sourceforge.net/
  • MadMan: schöne Musikarchiv-Verwaltung, mit Plugin-Unterstützung und Web-Interface; benötigt keine Datenbank
    Homepage: http://madman.sourceforge.net/


Audiocodecs

Im Gegensatz zu Windows hat Linux keine eingebaute Multimedia-Architektur wie MCI oder DirectShow, die die Verwaltung von Codecs übernimmt. Die Audioplayer bringen die benötigten Decoder selbst mit, bei einigen Playern (z.B. XMMS) lassen sich weitere per Plugin nachrüsten. Die Unterstützung von MP3, Ogg Vorbis und WAV ist am weitesten verbreitet, bei exotischeren Formaten wie MPC ist die Auswahl an Playern eingeschränkt. Manche Codecs stehen auch als Libraries zur Verfügung, die Enkoder sind oft Kommandozeilenprogramme.
Im folgenden soll die Enkodierung (d.h. die Erzeugung von Dateien eines bestimmten Audioformats) im Vordergrund stehen. Dazu werden die bekanntesten/wichtigsten Audiocodecs und entsprechende Enkodierungsprogramme vorgestellt.

Kurze Einführung zu Audiokompression

Die einfachste Art, Audiodaten auf dem Rechner zu speichern, ist als .wav-Datei im PCM (Puls Code Modulation)-Format. Dabei werden die Audiodaten genau so gespeichert, wie sie digitalisiert wurden. Für kurze Audioschnipsel mag das noch praktikabel sein, Musikstücke beispielsweise sind dann aber sehr groß. Speichert man die Daten einer 74-Minuten-Audio-CD auf einem Rechner, belegen sie ganze 650MB. Zuviel, um sie dauerhaft zu speichern und erst recht zuviel, um sie über ein Netzwerk in Echtzeit zu übertragen (streamen). Um diese Datenmengen zu reduzieren, müssen sie komprimiert werden, und zwar möglichst ohne hörbare Verluste.
Grundsätzlich unterscheidet man zwei Arten von Audiokompressionsformaten: verlustfreie und verlustbehaftete.
Verlustfreie Verfahren packen die Daten nur zusammen, so dass sie nicht mehr ganz so viel Platz belegen, sich aber immer noch in einem Player wiedergeben lassen, ohne sie vorher komplett entpacken zu müssen.
Interessanter sind die verlustbehafteten Verfahren. Hier wird versucht, sämtliche Informationen (Töne) herauszurechnen, die das menschliche Ohr ohnehin nicht wahrnehmen kann, z.B. unhörbare Frequenzen oder leise Töne, die gleichzeitig mit lauten Tönen auftreten und von ihnen "maskiert" werden. Welche Informationen herausgerechnet werden, bestimmt das psychoakustische Modell des Codecs - dessen Güte bestimmt zugleich auch die Güte des Verfahrens. So ist es möglich, Audiodaten auf etwa ein zehntel ihrer ursprünglichen Größe zu drücken - ohne hörbaren Qualtitätsverlust. Bei derAudiokompression spricht man von "Transparenz", wenn das Ergebnis der Enkodierung nicht vom Original zu unterscheiden ist. Das erste Verfahren mit psychoakustischem Modell war MP3, das zur Zeit beste psychoakustische Modell besitzt MPC.
Qualität und Größe der enkodierten Datei werden maßgeblich durch die Bitrate beeinflußt. Sie besagt, wieviele Bits für jede Sekunde Audiodaten in der enkodierten Datei benutzt werden sollen. Sie wird üblicherweise in Kilobit pro Sekunde (kbps) angegeben. Die einfachste Möglichkeit ist, eine feste (konstante) Bitrate (CBR) vorzugeben auf die der Codec die Audiodaten entsprechend herunterrechnet. Übliche Bitraten sind 64, 128, 160, 192, 224 und 320kbps. Welcher Codec bei welchen Bitraten gute Ergebnisse liefert, hängt vom jeweiligen psychoakustischen Modell und von seiner Optimierung ab. So ist MPC nur für hohe Bitraten (ab 160kbps) zu empfehlen, liefert da aber auch die besten Ergebnisse. Ogg Vorbis schlägt sich am Besten im Bereich von 128 bis ca. 192 kbps. MP3pro und WMA (Windows Media Audio) sind auf geringere Bitraten (64kbps) optimiert, was sie für Streaming über geringe Bandbreite geeignet macht - dafür können sie bei höheren Bitraten nicht mit MPC und Vorbis mithalten. AAC macht dank seiner Flexibilität bei den meisten Bitraten eine gute Figur. Eine konstante Bitrate eignet sich gut für Streaming und ist einfacher zu implementieren (z.B. in Hardware-Playern), ist aber nicht wirklich ideal: So werden bei langsamen, leisen Musikpassagen oft nicht alle zur Verfügung stehenden Bits gebraucht und der Platz verschenkt, während bei schnellen, lauten Passagen u.U. die Klangqualität leidet, wenn mehr Bits gebraucht werden.
Die Lösung heisst hier variable Bitrate (VBR): Der Encoder analysiert zuerst die Daten und benutzt dann soviele Bits, wie für die jeweilige Sekunde (bzw. einen Zeitabschnitt) benötigt werden. Bei manchen Encodern lässt sich eine minimale und maximale Bitrate oder eine durchschnittliche Bitrate (ABR) angeben, um so einen gewissen Einfluss auf die Dateigröße zu haben. Im Fall von MP3 unterstützen leider nicht alle (Hardware-)Player VBR und einige ältere Encoder können damit auch Schwierigkeiten haben.

Links zu Audiokompression:
Audiohq.de
Hydrogenaudio.org
AudioCoding.com


MP3

Der momentan bekannteste und am weitesten verbreitete Audiocodec. MP3 steht für MPEG Layer-3 und ist eine Weiterentwicklung des MPEG Layer-2, dem Audioformat, das bei MPEG-kodierten Vidoes zum Einsatz kommt. MP3 wurde (hauptsächlich) vom Fraunhofer Institut für Integrierte Schaltungen (Erlangen) entwickelt - und patentiert. Wer das Format einsetzten möchte (vor allem in Enkodierungsprogrammen), muss u.U. Gebühren zahlen. Näheres dazu kann man hier, hier und hier nachlesen.
Es gibt lediglich einen einzigen freien MP3-Enkoder, der aber gleichzeitig auch der beste ist: LAME (von anderen "nicht-kommerziellen" MP3-Encodern lässt man aus patentrechtlichen und Qualitäts-Gründen besser die Finger). LAME steht für "LAME Ain't an MP3 Encoder" - obwohl er mittlerweile auch offiziell als MP3-Encoder bezeichnet wird gibt es ihn nur als Quelltext - und er ist auch in keiner Linux-Distribution enthalten, dank der vielen Patente. LAME ist ein "educational tool", um etwas über MP3-Enkodierung zu lernen und duch das OpenSource-Modell u.a. die Psychoakustik zu verbessern. Um LAME benutzen zu können, muss man sich zunächst das Quellcode-Paket besorgen und mit configure, make, make install übersetzen (oder im Netz nach einem passenden Binary-Paket für seine Distribution suchen). Anschliessend lassen sich mit dem Befehle "lame" mp3-Dateien erzeugen. Bequemer geht das mit Frontends wie Grip oder KAudioCreator (Teil von KDE, kdemultimedia-Paket). Besonderheit von LAME sind die sogenannten "presets", die die jeweils besten Optionen für bestimmte Qualitätsstufen zusammenfassen. Der Aufruf von lame --preset help zeigt eine Erläuterung der verfügbaren presets an. Für die meisten Fälle empfiehlt sich lame --preset standard quellfile.wav zielfile.mp3. Das erzeugt eine MP3-Datei in hervorragender Qualität (VBR) bei vernünftiger Dateigröße. Wer konstante Bitraten benötigt, sollte 160KBit/s oder 192 KBit/s wählen. Zwar soll MP3 schon bei 128KBit/s "CD-Qualität" erreichen, Hörtests haben aber gezeigt, dass dann die Qualität der MP3-Datei stark vom Quellmaterial abhängt.

Links zu MP3:
Fraunhofer IIS
Info zu MP3 in audiohq.de
Detailliertere Infos zu MP3 auf mp3-tech.org LAME
MP3 Patente und Lizensierung

Ogg Vorbis

Ogg Vorbis wurde von Xiph.org als vielseitiges Audiokompressionsformat entwickelt. "Vorbis" ist der eigentliche Audiocodec, "Ogg" nur dass Containerformat für die Dateien (ähnlich avi oder mov). Vorbis ist ein völlig freies Format: es ist OpenSource und nicht mit Patenten behaftet und deshalb bereits Bestandteil der meisten Linux-Distributionen. Vor Allem im Vergleich zu MP3 oder WMA bietet Ogg Vorbis eine wesentlich bessere Qualität. Unterstützt wird das Format von sehr vielen Software-Playern, bei den Hardware-Playern ist das Angebot noch etwas dünn.
Der eigentliche Codec steckt in den libvorbis...-Bibliotheken, im Paket Vorbis-Tools sind u.a. ein einfacher Player sowie der Encoder OggEnc enthalten. Ähnlich den presets von LAME kann bei OggEnc die Qualitätsstufe festgelegt werden (im Bereich von -1 bis 10). Empfehlenswert ist für die meisten Anwender Stufe 5 (-q 5) und für besonders hohe Qualität Stufe 6. Höhere Stufen bringen keine weitere Verbesserung, geringere Qualität sollte man nur wählen, wenn man sehr auf die Dateigröße achten muss.
Ein einfaches oggenc -q 5 input.wav erzeugt eine Ogg Vorbis-Datei in optimaler Qualität (VBR). Bequemer geht es wieder mit den Frontends Grip und KAudioCreator (siehe MP3).
Da die offizielle Entwicklung von Ogg Vorbis nicht gerade schnell von statten geht, sind noch einige weitere (experimentelle) Vorbis-Encoder entstanden, von denen einige bessere Ergebnisse liefern könnten (wenn man mit OggEnc aus irgendeinem Grund unzufrieden ist).

Links zu Ogg Vorbis:
Vorbis Homepage
Vorbis auf Xiph.org
Ausführliche Info zu Ogg Vorbis auf Audiohq.de
Ogg Vorbis auf Audiohq.de
Ogg Vorbis auf hydrogenaudio.org

FLAC

Der Free Lossless Audio Codec ist Teil des Xiph.org-Projektes. Wie Ogg Vorbis ist auch FLAC quelloffen und frei. Das Verfahren arbeitet - wie der Name schon sagt- verlustfrei: Die Audiodaten werden ähnlich dem ZIP-Algorithmus nur eingepackt. FLAC erreicht dabei aber eine wesentlich bessere Kompressionsrate, da es speziell für Audiodaten designt wurde. FLAC-Dateien können ganz normal in einem Player wiedergegben werden (sofern dieser das Format unterstützt). Natürlich sind die Dateien im Vergleich zu den Ergebnissen verlustbehafteter Codecs ziemlich groß, sodass sich FLAC in erster Linie für audiophile Zeitgenossen mit viel Speicherplatz empfiehlt.Das Größenverhältnis von z.B. WAVE und FLAC ist laut einem Vergleich auf der Projekthomepage etwa 2:1.
FLAC unterstützt die Kompressionsstufen von 0 (schnellste) bis 8 (beste). Auf die Geschwindigkeit der Dekodierung hat die Kompressionsstufe keinen (messbaren) Einfluss.
flac input.wav erzeugt eine FLAC-komprimierte Datei mit Kompressionsstufe 5 (guter Kompromiss aus Dateigröße und Enkodiergeschwindigkeit).

Links zu FLAC:
FLAC Homepage
FLAC auf Audiohq.de
FLAC auf hydrogenaudio.org

AAC

"Advanced Audio Coding" ist ein recht neuer Codec. Er wurde von der Industrie als Teil der MPEG4-Spezifikationen entwickelt und gilt als Nachfolger von MP3. AAC ist offizieller ISO-Standard und durch viele, viele Patente geschützt. Die Klangqualität ist sehr gut, allerdings nicht besser die von Ogg Vorbis oder MPC. AAC unterstützt mehrere Profile für verschiedene Anwendungsgebiete (die z.T. inkompatibel zueinander sind) und mehrere Containerformate. Deshalb spielt nicht jeder Player jede AAC-Codierte Datei, jedoch ist der Codec enorm flexibel. AAC wird momentan noch nicht von vielen Hard- und Softwareplayern unterstützt, was sich im Laufe der Zeit aber ändern dürfte. Für Linux gibt es nur den Encoder FAAC (Freeware Advanced Audio Coder) (und den zugehörigen Decoder FAAD2); ähnlich LAME ist FAAC der einzige (legale) nicht-kommerzielle, freie AAC-Encoder. Auch hier wird auf der offiziellen Seite nur der Quelltext angeboten, vorcompilierte Pakete muss man selbst im Netz suchen. FAAC sollte bereits sehr ordentliche Qualität liefern.

Links zu AAC:
AAC auf Audiohq.de
AAC auf hydrogenaudio.org
Übersicht AAC-Implementationen
FAAC auf AudioCoding.com
FAAC-Downloads auf SourceForge.net AAC Lizensierung
Fraunhofer IIS

MPC

MPC oder Musepack ist eine "Weiterentwicklung" von MP3 und gilt als bestes Audiokompressionsformat für hohe Bitraten (ab 160kbps). Da MPC auf den MPEG-1 Layer-2 (MP2)-Algorithmen basiert ist die patentrechtliche Lage etwas unklar. Hardwareplayer unterstützen MPC gar nicht. Es ist das ideale Format für Leute, die ihre Musik größtenteils am Recher hören und ein Musikarchiv in sehr hoher Qualität aufbauen wollen.
Für Linux sind Encoder, Decoder und Plugins für XMMS und BMP hier erhältlich.

Links zu MPC:
MPC Homepage
MPC auf Audiohq.de
MPC auf hydrogenaudio.org


Audiobearbeitung

Im folgenden sollen kurz Möglichkeiten zu Audiobearbeitung unter Linux vorgestellt werden.
Mittlerweile gibt es mit JACK (siehe oben) einen Soundserver, der sich hervorragend für dieses Einsatzgebiet eignet und eine riesige Auswahl an Software z.B. für MIDI, Komposition, Editierung, Aufnahme, Abmischen etc.
Als einfache, vielfältig einsetzbare Schnittstelle für Audio-Effektplugins wurde LADSPA (Linux Audio Developer's Simple Plugin API) entwickelt (ähnlich dem VST-Standard für Windows und MAC). Viele Linux-Audio-Anwendungen unterstützen die Schittstelle, so dass sich einfach zusätzliche Effekte einbinden lassen. Eine große Anzahl (natürlich freier) LADSPA-Plugins ist im Netz erhältlich (einige Plugin-Bibliotheken sin auf der ladspa.org verlinkt).
Leuten, die sich näher mit dem Thema Audiobearbeitung unter Linux beschäftigen wollen, sei das AGNULA-Projekt und ihre Linux-Audio-Distributionen empfohlen: DeMuDi (Debian Multimedia Distribution) vereint die wichtigste Audiosoftware in einem Paket und sollte sich auch für professionellen Einsatz eignen. Die Redhat Multimedia Distribution (wie der Name schon sagt statt auf Debain auf RedHat aufsetzend) wird momentan nicht gepflegt.
An dieser Stelle sollen nur einige Audioeditoren kurz vorgestell werden, da dies die Art Audiobearbeitung ist, mit der der Durchschnittsuser am ehesten in Berührung kommen dürfte:

Audiostreaming

Audiostreaming bedeutet, einen Strom von Audiodaten in Echtzeit über ein Netzwerk zu übertragen (z.B. Internetradio, oder durchs Heimnetzwerk vom Musikserver im Keller). Dank moderner Kompressionsverfahren wie MP3, Ogg Vorbis, RealMedia oder WMA klappt das auch bei verhältnismäßig geringer Bandbreite in guter oder zumindest brauchbarer Qualität. Streams lassen sich z.B. mit XMMS, BMP, amaroK, zinf oder auch mplayer bzw. xine wiedergeben (sie fungieren als Sreamingclient).
Einen Blick loht das Programm Streamtuner, mit dem sich sehr einfach öffentliche Streams (z.B. die Shoutcast Yellowpages) durchsuchen lassen. Wer eine entsprechende Internetanbindung hat kommt so in den Genuss zwischen vielen, vielen Audiostreams wählen zu können, unter denen sich für jeden Geschmack etwas finden sollte.
Natürlich läßt sich (auch) unter Linux ein eigener Streaming-Server aufsetzen. Der besteht zum Einen aus der Server-Software selbst, die den Audiostrom (oder auch mehrere) im Netz bereistellt (ggf. in mehreren Qualitätsstufen), und zum Anderen einem Programm, das den Server mit den zu streamenden Audiodaten versorgt (die stammen meist aus einer Playlist oder kommen direkt von der Soundkarte; = "Broadcasting"). Die bekanntesten Streaming-Server sind Shoutcast von Nullsoft (für MP3-Streams) und Icecast von Xiph.org (für Ogg Vorbis-, MP3- und AAC-Streams). Einige Source-Clients und Player sind auf http://www.icecast.org/3rdparty.php aufgeführt.

Audiostreaming mit Icecast2

Als Beispiel soll hier kurz gezeigt werden, wie ein einfacher Icecast-Streamingserver aufgesetzt wird. Ein etwas ausführlicheres HowTo gitb es hier.
Icecast muss natürlich installiert sein - für das Beispiel wurde Version 2.2.0 verwendet (Binaries gibts für Fedora Core 1 auf icecast.org, für Debian im unstable-Zweig des Paketrepositories; wer das Source-Paket benutzt und selber compiliert: README im Paket lesen!!!). Icecast liest alle Einstellungen aus einer XML-Konfigurationsdatei, die beim Start angegeben werden muss. Icecast 2.2.0 bringt bereits einige Beispieldateien mit: eine mit minimaler Konfiguration (/usr/share/doc/icecast2/icecast_minimal.xml.dist - diente hier als Ausgangspunkt), eine für Shoutcast-Kompatibilität und eine mit allen Optionen (inkl. Kommentare).
Hier das benutzte config-file: icecast.xml. Man beachte, dass der Nutzer, der Icecast startet, Schreibrechte auf das Log-Verzeichnis (und die Dateien darin) hat, das in der Config-Datei in den -Tags angegeben wurde!
Eine ausführliche Dokumentation aller Konfigurationsoptionen ist hier zu finden.

icecast2 -c ./icecast.xml

startet dann den Icecast-Server (mit der zusätzlichen Option -b als Hintergrundprozess). Der macht vorerst noch nichts, weil er noch nicht weiss, was er streamen soll. Um ihn mit Daten zu füttern soll hier Ices verwendet werden (auch von Xiph.org). Es ist in 2 Versionen verfügbar: Ices0.x unterstützt nur MP3, Ices 2.x nur Ogg Vorbis. Wie Icecast wird es über eine xml-Datei konfiguriert, einige Optionen lassen sich aber auch über Kommandozeilenparameter mitgeben.
siehe:

ices --help

Mit Ices lassen sich Audiodaten direkt von der Soundkarte oder über eine Playliste lesen. In diesem Beispiel wird eine Playlist benutzt: eine einfache Textdatei, in der untereinander die Pfade zu den mp3-Dateien aufgeführt sind. Man kann auch z.B. aus XMMS, amaroK oder Winamp eine .m3u-Playlist speichern und die benutzen - dann beschwert sich Ices zwar wegen den Metadaten, die da noch mit drinstehen, es funktioniert aber trotzdem. Hier die Konfigurationsdatei: ices_playlist.xml (basiert auf einer Beispieldatei, die Ices mitbringt; alle Optionen sind gut kommentiert). Nach dem start mit

ices -c ices_playlist.xml

sollte folgende Ausschrift erscheinen:

Playing (Pfad-zur-mp3-Datei)
Mounted on http://localhost:8000/ices.mp3

Der Stream kann dann wiedergegeben werden, indem man z.B. XMMS öffnet und die Adresse "http://localhost:8000/ices.mp3" abspielen lässt.

Video unter Linux

Videoausgabe

XVideo

In der Version 4.0 des X-Servers erschien die XVideo-Extension. Es bietet im Gegensatz zum reinen X11-Zugriff Hardwarebeschleunigung durch das Benutzen von Hardware-YUV-Routinen. XVideo läuft auf so gut wie jeder modernen Hardware und Konfiguration mit akzeptabler Geschwindigkeit.

Die Unterstützung des eigenen Systems für XVideo läßt sich mit dem Tool xvinfo ermitteln.

XVidix

Vidix bedeutet Video Interface for *nix und hat den Anspruch eine vereinheitlichte Schnittstelle für bereits vorhandene Beschleunigungsinterfaces darzustellen. XVidix ist dazu das X-Server-Frontend. (Es gibt auch ein CVidix, zur Ausgabe über den Framebuffer der Konsole)
Um das sehr schnelle Vidix nutzen zu können, benötigt man demzufolge eine Grafikkarte die zu einem der vorhandenen Interfaces kompatibel ist. Viele ATI-Karten (Radeon, Rage 128), nVidia, M64, SiS, MGA und weitere) werden unterstützt. Die Schnittstelle ist relativ neu, jedoch durchaus leistungsfähig und benutzbar. Da XVidix direkt auf die Hardware zugreift, muss das entsprechende Programm (z.B. MPlayer) als root ausgeführt werden, eine Initialisierung des Videointerfaces schlägt sonst fehl. Alternativ kann das s-Bit in den Dateizugriffsrechten des Playerprogramms gesetzt sein.
ACHTUNG: Dies ist ein enstzunehmendes Sicherheitsproblem, da anderen Nutzer somit root-Rechte verschafft werden können!

DGA

Direct Graphics Access umgeht den X-Server und schreibt die Videodaten direkt in den Framebuffer (Video RAM der Grafikkarte). Technisch geschieht dies, indem der Video RAM-Bereich auf den Speicherbereich des Prozesses abgebildet wird. Dies ist nur mit root-Rechten möglich, es gelten also auch hier dieselben Vorsichtsmaßnahmen wie bei Vidix.
In der Version 1 war nur grundlegende Wiedergabe möglich, in der aktuellen Version 2 sind Verbesserungen wie etwa die Änderung der Auflösung enthalten. DGA wird nachgesagt stark vom Grafikchip abhängig zu sein was als Nachteil zu werten ist, zusätzlich kann ein gewisser Konfigurationsaufwand nötig sein um zum Erfolg zu kommen.

OpenGL

Bei dieser Methode wird versucht eine Ausgabe über OpenGL zu realisieren. Generell kann man hier von schlechter Performance ausgehen. Ohne 3D-Beschleunigung des X-Servers sollte man auf das Ausprobieren von OpenGL zur Wiedergabe lieber verzichten. Der Einsatz ist nur sinnvoll wenn die Implementation des X-Servers kein XVideo unterstützt und andere Möglichkeiten wie XVidix nicht zur Verfügung stehen.

Player

Für Linux und die Unixartigen Betriebssysteme existiert eine größere Anzahl von Videoplayern. Wir wollen hier nur die 3 größeren Projekte MPlayer, Xine und VideoLAN vorstellen.

MPlayer

Installation

MPlayer ist ein aus Ungarn stammendes Projekt, das aus den Teilen MPlayer und MEncoder besteht. Wie die Namen schon vermuten lassen, kann man mit MPlayer Videos (und Audio) abspielen und mit MEncoder diese kodieren.

Beide Programme bedienen sich, soweit sinnvoll, gleich und die jeweiligen Parameter folgen demselben Schema. Für MPlayer existiert ein GUI, das beim configure-Vorgang explizit angeschalten werden muss, außerdem gibt es ein Menü das bei Benutzung des GUI mit Rechtsklick erreicht werden kann. Der Configure-Aufruf lautet also:

 $ ./configure --enable-gui --enable-menu

Die restliche Installation läuft nach dem üblichen make && su -c "make install" Schema ab. Um das GUI benutzen zu können, ist noch ein Skin nötig der in ein Systemverzeichnis und/oder nach ~/.mplayer/Skin kopiert werden muss. Die grafische Oberfläche wird dann mit gmplayer anstatt mplayer gestartet.

Um das volle Potential von MPlayer (und MEncoder) auszuschöpfen, empfiehlt es sich, eins von den auf der MPlayer-Homepage vorhandenen Codec-Paketen herunterzuladen und installieren. Darin sind einige Windows-Codec-DLLs (gepatcht) enthalten, die das Abspielen von Formaten ermöglichen die der eingebaute FFmpeg-Codec nicht verarbeiten kann. Derart ausgerüstet kann man mit dem fertig installierten MPlayer jedes mögliche Format abspielen und einen Großteil selbst erzeugen (MEncoder). Man kann davon ausgehen dass MPlayer derart konfiguriert, jede Quelle (DVB,TV,DVD, VCD, Dateiformate, usw.) und jedes Format abspielen kann. Weiterhin spielt MPlayer beschädigte MPEG-Dateien stabil ab ("rock solid" in der Dokumentation), womit man z.B. schon einmal in gerade herunterladende Dateien hineinsehen kann.

Im Vergleich zu Xine hat MPlayer leichte Geschwindigkeitsvorteile. Weiterhin gibt es einen Windows-Build von MPlayer. ;-)

Benutzung

Da die Bedienung des MPlayer über die grafische Oberfläche selbsterklärend ist, folgen einige wenige Beispiele für die Benutzung des MPlayer über die Konsole.
Den ersten Erfolg hat man durch den Aufruf

 $ mplayer test.avi

Das klappt prima, oder? Natürlich wollen wir die Ausgabe auch steuern, standardmäßig sind folgende Tasten voreingestellt:

  • Cursortasten - Navigieren im Strom
  • 0,9 - Lauter bzw. leiser
  • f - Vollbild
  • Space - Pause
  • o - OSD anzeigen (falls Fonts installiert)
  • q - Beenden

Das reicht ersteinmal um gut mit MPlayer zurechtzukommen.
Um einen Internetstream anzusehen genügt der Aufruf von MPlayer mit der entsprechenden Adresse, je nach Internetanbindung kann man noch mit dem Parameter -cache 1024 den Cache auf z.B. 1024 KB setzen. Angenommen, wir wollen den Stream für später auf die Festplatte schreiben, dies kann zum Beispiel der Fall sein bei live-Übertragungen von Konzerten. Die Parameter -dumpstream schreibt alles in die Datei stream.dump (alternativ mit der Option -dumpfile und Angabe des Dateinamens). Dort liegt der Stream dann und kann später weiterverarbeitet werden, möglicherweise mit Umkodierung mittels MEncoder.

Die Performance von MPlayer läßt sich steigern, indem die bessere Ausgabetreiber als die standardmäßig eingestellten gewählt werden. Dazu gibt es die Parameter -vo (VideoOut) und -ao (AudioOut) die den Namen des Treibers entgegennehmen. Die Liste der verfügbaren (Video-)Treiber erhält man mit

 $ mplayer -vo help
MPlayer 1.0pre6-3.3.5 (C) 2000-2004 MPlayer Team
[...]
Available video output drivers:
xv X11/Xv
x11 X11 ( XImage/Shm )
xover General X11 driver for overlay capable video output drivers
gl X11 (OpenGL)
gl2 X11 (OpenGL) - multiple textures version
dga DGA ( Direct Graphic Access V2.0 )
fbdev Framebuffer Device
fbdev2 Framebuffer Device
aa AAlib
vesa VESA VBE 2.0 video output
xvidix X11 (VIDIX)
cvidix console VIDIX
null Null video output
mpegpes Mpeg-PES to DVB card
yuv4mpeg yuv4mpeg output for mjpegtools
png PNG file
jpeg JPEG file
tga Targa output
pnm PPM/PGM/PGMYUV file
md5sum md5sum of each frame

Welcher dieser Treiber sich besonders gut für das eigene System eignet läßt sich nur durch Probieren herausfinden, generell kann man jedoch sagen dass Xv (Standard) und Vidix einen Versuch wert sind. Damit diese und mehr Einstellungen nicht jedesmal über die Kommandozeile übergeben werden müssen, besitzt MPlayer unter ~/.mplayer ein config-File in dem die Einstellungen durch ihren Namen und Wert festgelegt werden können. Die Attribute und Werte haben die gleichen Namen wie auf der Kommandozeilenparameter.
Beispiel:

 # Zuerst xvidix als Videoausgabe probieren, dann XVideo
vo=xvidix,vo
# Audio über Arts Daemon
ao=arts
# entspricht der -framedrop Option
framedrop=yes
#cache auf grosszuegige 1024 KB
cache=1024

Zum Abschluß von ein MPlayer-Screenshot:
MPlayer mit GUI

Xine

Xine besteht aus der xine-lib (eigentlicher Kern) und verschiedenen User Interfaces, die den Kern ansteuern. Somit ändert sich mit jedem UI das Auftreten und teilweise das Verhalten von Xine. Hier wird das UI xine-ui verwendet und bei Beispielen herangezogen.
Xine-UI

Prinzipiell ist Xine mit MPlayer (oder andersherum) vergleichbar. Ihm fehlt jedoch der "eingebaute" Encoder, was viele nicht stören mag. Die im Netz verfügbare Version bringt ffmpeg-Komponenten mit und unterstützt Codecs die in gepatchten Windows-DLLs vorhanden sind. Dazu können auch die DLLs von MPlayer verwendet werden. Je nach Vorhandensein von libdvdcss besteht volle DVD-Unterstützung, die libdvdnav ist bereits integriert. (Super-)VideoCDs sind auch kein Problem, ebenso wie Audio-CDs und DVB-Quellen. Leider ist Xine nicht ganz so schnell wie MPlayer und hat bei der Navigation innerhalb von Videodateien Schwächen.

In Sachen Bedienbarkeit liegen jedoch die Stärken von Xine, sofern man Wert auf eine grafische Oberfläche legt. Sämtliche Konfigurationen lassen sich im GUI vornehmen, die Auswahlmöglichkeiten lassen sich über einen Erfahrungslevel des Users begrenzen. Die Tastaturbelegung läßt sich ebenfalls relativ einfach über das Konfigurationsfenster einstellen. Bei schwierigen Einstellungen hilft eine Popup-Hilfe. Die Dokumentation ist ebenfalls hilfreich.

Xine wird z.B. von SuSE in ihrer Distribution mit ausgeliefert, muss jedoch leider wegen rechtlichen Probleme auf einige (die wichtigsten) Plugins verzichten. Damit wird der Player leider um einiges ärmer, sodass damit ein akzeptables Benutzen kaum noch möglich ist (viele Formate fehlen). Abhilfe schafft das Herunterladen von Xine und selberkompilieren, dass (im Gegensatz zu MPlayer) meistens völlig problemlos abläuft. Dazu sei noch einmal darauf hingewiesen, dass man xine-lib und ein passendes GUI (z.B. xine-ui) benötigt und in dieser Reihenfolge installiert.

VLC

Der VLC (VideoLAN Client) und sein Gegenstück VLS (VideoLAN Server) bilden das VideoLAN-Projekt. Im Vornherein sollte klargestellt werden, dass der VLS nur noch wenig Entwickungsaufwand erfährt. VLC beherrscht mittlerweile viele, wenn nicht sogar alle Fähigkeit des Servers. (Dazu das Schema von der VideoLAN-Seite)

VLC ist ein portabler (Linux, Windows, Mac) Videoplayer, der Video- und Audiodateien (MPEG und OGG-Formate), DVD,(S)VCD, Audio-CDs, Video4Linux/DVB und besonders Netzwerkstreams wiedergeben kann. Er unterstützt zahlreiche Codecs, Playlisten, Equalizer, Visualisierungen, Mouse Gestures und vieles mehr. Zudem können Module eingebunden werden, die den Funktionsumfang noch mehr erweitern.

Diese Merkmale sind allerdings nicht die wahre Stärke von VLC. Herausragend ist die Möglichkeit jede Quelle die der Player verarbeiten kann, in einen Netzwerkstream umzuwandeln. Dabei kann der Strom in Echtzeit umkodiert werden. Dabei stehen die vielen vorhandenen Formate zur Verfügung, am Besten funktioniert jedoch die Benutzung von MPEG. Der im Datei-Menü zu findende Streaming-Assistent verhilft auch dem unbedarften Nutzer zu schnellen Erfolgen.(Screenshot)
Als Streamprotokolle stehen UDP-Unicast und UDP-Multicast, sowie HTTP bereit. Außerdem ist es mit dem Assistenten auch möglich, Transkodierungen in andere Dateiformate vorzunehmen.

Verfügt man über ein ausreichend schnelles Netzwerk bzw. Rechner (zur Umkodierung) kann man sich ohne weiteres eine DVD von einem Rechner zum anderen streamen lassen und dort ansehen.

Videobearbeitung

Cinelerra

"Cinelerra is not for consumer use" erfährt man auf der Webseite von Heroine Virtual Ltd.. In der Tat stellt Cinelerra hohe Ansprüche an Anwender und Hardware. Benötigt wird für effektives Arbeiten mindestens ein Frontendrechner (empfohlene Austattung : Dual-2,4 GHz Opteron, 4 GB RAM). Im Hintergrund sollte man allerdings eine Renderfarm besitzen, die aus einigen handelsüblichen Rechnern besteht.

Angesichts dieser Profi-Ansprüche wird Cinelerra dann allerdings auch allen Profi-Ansprüchen gerecht. Die ellenlange Liste der Features liest man sich am Besten auf der Webseite durch. Es exisitiert eine gute Dokumentation, siehe dazu : The Secrets of Cinelerra.

Kino

Noch in einer relativen frühen Phase befindet sich Kino von Arne Schirmacher. Kino nennt sich selbst einen "non-linear DV-Editor", wobei non-linear in der Videobearbeitung bedeutet, an jeden beliebigen Punkt des Materials springen zu können - ohne vorher die vorangehenden Sequenzen zu durchlaufen. Es ist speziell auf die Benutzung von DV-Medien ausgelegt. Mit einem IEEE-1394-kompatiblen DV-Camcorder kann man dessen Daten direkt aus Kino importieren und auf der Festplatte speichern.

Die Bedienung von Kino ist verhältnismäßig einfach, leider kann (und wird) er sich noch nicht mit Programmen wie MainActor messen, für den Heimgebrauch des Hobbyfilmers reicht es allerdings aus. Eine gewisse Anzahl an Effekten ist verfügbar, multiple Timelines gibt es allerdings (noch?) nicht. Auf der Webseite des Autors steht Kino zum Download bereit.

MainActor

Das kommerzielle Produkt MainActor (Version 5) von MainConcept ist ein vollwertiger Videoeditor. Geboten werden multiple Timelines, unbegrenzt viele Audio- und Videospuren, voller DV-Support, viele Effekte und einige andere Funktionen die dem Profi das Arbeiten erleichtern.

Interessant ist die von MainConcept bereitgestellte Demoversion, die denselben Funktionsumfang wie die Vollversion zur Verfügung stellt. Allerdings wird in das Arbeitsergebnis ein Wasserzeichen eingearbeitet. Der Download dazu findet sich hier als RPM. In den SuSE-Distributionen wird eine MainActor-Version mit ausgeliefert.

DVD-Support

Linux und die DVD

Der DVD-Pionier unter Linux heißt ogle und wird hauptsächlich von einigen Stundenten an der Universität von Chalmers in Schweden entwickelt. Mit ogle wurden die heute immer noch wichtigen Bibliotheken libdvdread und libdvdnav entwickelt, die für das Lesen der Filmdaten bzw. das Navigieren im DVD-Menü nötig sind. Daher kann sich ogle auch damit rühmen einer der ersten DVD-Player gewesen zu sein, die die Navigation im DVD-Menü unterstützen. Mittlerweile ist die dazu nötige libdvdnav auch in andere Player wie z.B. Xine eingeflossen.
Die drei "großen" Mediaplayer MPlayer, Xine und VLC können unterschiedlich komfortabel mit DVDs umgehen, siehe dazu die Abschnitte zu den Videoplayern.

Für das (legale) Sichern bzw. Archivieren von (unverschlüsselten) DVDs auf etwa CDs, also das Umkodieren (z.B. nach XviD) bieten die Programme

  • dvd::rip
  • acidrip
  • transcode
  • MEncoder

gute Dienste. dvd::rip ist ein Frontend für das mächte Konsolenprogramm transcode, während acidrip ebenfalls ein Frontend für den bereits erwähnten MEncoder ist. Acidrip läßt sich komfortabel und schnell bedienen, während dvd::rip die kodierten Daten auf Wunsch auf CD gleich brennt.
acidrip

Das CSS-Problem

Viele (vor allem kommerzielle) DVDs sind mit CSS (Content Scrambling System) verschlüsselt. Damit der verschlüsselte Teil der DVD verwertet werden kann, muss die DVD mit einem passenden Schlüssel aufgeschlossen werden.
Der dazu nötige Schlüssel ist in lizensierten Playern enthalten und entstammt einem Pool von etwa 400 Schlüsseln die von der DVD CCA vergeben werden. Die Lizensierung an sich ist kostenfrei, es wird jedoch jährlich eine Verwaltungsgebühr von 5000 US $ erhoben, zusätzlich enstehen weitere Kosten.
Von Seiten der DVD CCA ist es nur zu verständlich die Lizensierung an freie Projekte zu unterlassen, da das Interesse besteht die Funktionsweise von CSS möglichst geheim zu halten. Dies ist offensichtlich unvereinbar mit den Grundsätzen der Open Source Software-Entwicklung.
Da die Community bei der Lizensierung kein Gehör fand, machte man sich an die Entwicklung eines Verfahrens um verschlüsselte DVDs auch unter Linux abspielen zu können. Durch einige Schwachstellen des CSS-Systems gelang es schlussendlich, einen Algorithmus zu entwickeln der binnen weniger Sekunden den erforderlichen Schlüssel für eine DVD "rät". Unter Linux wird die dazu libdvdcss verwendet, die ebenfalls dem Ogle-Projekt entsprungen ist. Seit der Urheberrechtsmodernisierung ist die Benutzung der libdvdcss jedoch möglicherweise rechtswidrig. Es wird praktisch eine technische Schutzmaßnahme umgangen und somit ist der Einsatz der Bibliothek mit Vorsicht zu genießen.

Analog-TV

TV-Anwendungen

Unter Linux gibt es eine schiere Unmenge von TV-Anwendungen mit unterschiedlichen Zielsetzungen. Nachfolgend werden einige davon vorgestellt.

Das Urgestein ist zweifellos das immer noch aktuelle xawtv. Es basiert auf Motif und hat sich im Laufe der Zeit zu einer umfangreichen Suite entwickelt, die das Hauptprogramm xawtv umschließen. xawtv kann Videos (unkomprimiert) und durch ein Plugin sogar Quicktime aufnehmen. Leider verfügt xawtv nur über ein etwas sprödes GUI.

Gänzlich ohne GUI kommt tvtime aus. Hier wird besonders auf die Qualität des Fernsehbildes geachtet. Um Verbesserungen zu erreichen, verwendet tvtime dazu den Deinterlacer der aus der Windowswelt bekannten Anwendung DScaler. Trotz des fehlenden GUIs läßt sich tvtime intuitiv und komfortabel bedienen, nicht zuletzt durch das eingebaute OSD. Dort können auch die Einstellungen zur Bildausgabe vorgenommen werden, wie etwa Auflösung, Framerate, Kanallisten und Farbe, Helligkeit, Kontrast etc. Ein weiteres nützliches Feature von tvtime ist das Einblenden von EPG-Informationen (Screenshot), die dem Programm als XML-Datei übergeben werden können.

 $ tvtime -t epg.xml

Diese Datei kann man sich vom Programm NextViewEPG exportieren lassen, nachdem man genügend EPG-Informationen über die Sender Kabel1 und RTL2 empfangen hat.
NextViewEPG

Die Windowmanager KDE und GNOME bringen jeweils ihre eigenen Fernsehanwendungen mit, kdetv (kwintv "from scratch" neu geschrieben) und zapping (GNOME). Beide unterscheiden sich in Funktionalität und Bedienbarkeit kaum voneinander. Kdetv (Screenshot) benötigt KDE 3 und wartet mit einer Plugin-Schnittstelle auf, die den Spielraum für neue Funktionen erweitert. Durch Plugins kann u.a. ein OSD und Videotext dargestellt werden und die Ein- und Ausgabe verändert werden. Zapping (Screenshot) bietet die gleichen Features wie kdetv, kann jedoch durch Plugins auch Videos aufnehmen.

Videorekorder

Freevo

Einen anderen Weg geht Freevo. Es handelt sich um einen Multimedia-Center der optisch an eine Set-Top-Box erinnert. Die einfache intuitive Bedienung und LIRC-Unterstützung lassen Freevo als Lösung für einen Wohnzimmer-PC ideal erscheinen. Freevo lässt den Nutzer Fernsehen schauen, Video ansehen und aufnehmen, Bilder auf der Festplatte betrachten und vieles mehr (Plugins). Die Anwendung läuft in den Auflösungen 640x480, 768x576 und 800x600. Beim Betrachten von Fotos werden diese deswegen praktisch herunterskaliert und erscheinden deswegen pixelig. Im Fernsehmodus läuft permanent die Aufnahme mit, um Timeshift zu ermöglichen.
Freevo Hauptbildschirm

Download und Installation von freevo ist vergleichsweise einfach, sofern man eine Pythonumgebung besitzt. Für verschiedene Distributionen stehen Repositories oder RPM-Dateien zur Verfügung, die den Umgang mit den zahlreichen Abhängigkeiten erleichtern. Während der Einrichtung wählt man über eine Konsolenoberfläche die nötigsten Einstellungen (TV-Norm, Kanalliste, Auflösung) und kann danach freevo starten.

MythTV

Sehr ähnlich zu Freevo ist MythTV, ein anderes Multimediacenter-Projekt. Es wartet mit Support für mehrere TV-Karten (Bild-im-Bild), Timeshifting, Analog-,Digital-TV-Karten sowie PVR-Karten auf. Durch eine Menge an Plugins bleiben auch hier kaum Wünsche offen, vom Wetter-Plugin, über Browser, Spiele und einen RSS-Reader (um z.B. die Heise-News zu lesen) ist alles denkbare vorhanden.
MythTV Hauptbildschirm

Die Installation von MythTV ist nicht unkompliziert. Es wird ein laufender Mysql-Server benötigt (zur Speicherung der Programminformationen) sowie einige andere Abhängikeiten. Hat man die Grundvorraussetzungen erfüllt, startet man als root die Kommandos mythfilldatabase (füllt die MySQL-Datenbank) und mythbackend (Verbindung zur DB, etc.). Anschließend werden mit mythfrontend die letzten Einstellungen vorgenommen und MythTV kann in Betrieb genommen werden. Eine detaillierte Installationshilfe findet sich hier.

Mehr Informationen zum Thema Linux als Videorekorder gibt es bei der c't.

Digital-TV (DVB) und VDR

Wie vorhin bereits erwähnt, ist es mit vielen Videoplayern möglich digitales Zukunftsfernsehen zu nutzen. Es gibt jedoch ein interessantes Projekt dass auf das Empfangen und Aufzeichnen von DVB ausgerichtet ist. Nachfolgend eine kurze Vorstellung davon.

VDR (Video Disk Rekorder) ist ein Personal Video Recorder-Projekt auf Linuxbasis. Um VDR benutzen zu können benötigt man weniger einen leistungsstarken Rechner (300MHz-CPU u.U. ausreichend) als eine DVB-Karte mit MPEG2-En/Decoder. Dieser liefert den MPEG2-Datenstrom und sorgt für die Wiedergabe, sodass dem aufnehmenden Programmm wenig zu tun bleibt außer die empfangenen Ströme auf die Festplatte zu schreiben. Zur Wiedergabe wird im Idealfall einfach der TV-Ausgang der DVB-Karte genutzt oder etwa eine Hollywood-Karte.
Für VDR existieren viele Plugins, die Aussehen, Funktionalität und Unterstützung von Komponenten verbessern.

Es gibt speziell auf das einfache Installieren von VDR ausgelegte Linuxdistributionen, wie LinVDR oder das c't-VDR-Projekt. Eine Ansprechende Möglichkeit zum Programmieren von Aufnahmen und ähnlichem bietet VDR Admin. Über den Webbrowser lassen sich damit von einem beliebigen Rechner aus Aufnahmen steuern, das aktuelle Fernsehprogramm einsehen, Konfigurationen ändern u.v.m.

Erwähnt werden sollte ein Plugin namens Analog TV für VDR um auch ohne eine DVB-Karte die Vorzüge des Projektes nutzen zu können. Dazu wird allerdings eine PVR-TV-Karte benötigt, also eine analoge TV-Karte mit Onboard-MPEG-Encoder. Diese liefert dann denselben MPEG-Strom wie eine DVB-Karte und könnte somit als "halbdigital" bezeichnet werden. Vollkommen analoge TV-Karten werden von VDR nicht unterstützt. Dafür sind Projekte wie Freevo oder MythTV besser geeignet.

Weitere Informationen gibt es unter :

Videocodecs

FFMpeg

Das FFmpeg-Projekt ist das wohl wichtigste Codecprojekt für Linux und Unixartige Betriebssysteme. Es besteht aus den Teilen

  • ffmpeg
  • ffserver
  • ffplay
  • libavcodec
  • libavformat

Mit dem Konsolentool ffmpeg lassen sich verschiedene Videoformate in ein anderes konvertieren, sogar die direkte Aufnahme von einer TV-Karte ist möglich. Um beispielsweise die DivX-Datei mit einer Auflösung von 720x512 und 25 fps direkt von der TV-Karte /dev/video0 aufzunehmen verwendet man folgenden Aufruf:

 $ ffmpeg -vd /dev/video0 -b 720 -r 25 -s 720x512 -t 15 video.avi

ffmpeg bestimmt anhand der Dateiendung der Ausgabedatei ein Format, bei AVI-Dateien standardmäßig MPEG4. Das Format läßt sich über den Schalter -f ändern, eine Liste der gültigen Formate erfährt man durch

  $ ffmpeg -formats 

ffserver ist ein Multimedia-Streamserver für HTTP, ffplay ein einfacher Videoplayer auf der Basis von SDL.

Hauptbestandteil von ffmpeg ist die libavcodec-Bibliothek. Sie enthält eine Vielzahl von Video- als auch Audiocodecs, die praktisch jedes MPEG-kompatible Format verarbeiten und kodieren können. Praktisch bedeutet dies, dass mit ffmpeg (synonym für die libavcodec verwendet) die populärsten Audio- und Videoformate abspielen bzw. verarbeiten lassen: DivX, Windows Media, XviD, MPEG1/2 (DVD, VCD, SVCD) uva. Aufgrund dieser Tatsache wird sie in den populären Mediaplayern MPlayer, Xine und VLC verwendet.

Ein weiterer wichtiger Bestandteil von ffmpeg ist libavformat. Diese Bibliothek dient zum Parsen und Erzeugen von allen verbreiteten Containerformaten, wie z.b. AVI, OGM, MKV usw. Es sollte erwähnt werden, dass die Verwendung von ffmpeg theoretisch rechtlich bedenklich sein kann, da Teile der verwendeten Codecs patentrechtlich oder anderweitig geschützt sind.

XviD

Im Jahr 2001 gründete DivXNetworks das OpenDivX-Projekt. Der OpenDivX-Codec basierte auf dem MoMuSys reference MPEG4 Encoder und unterlag einer restriktiven OpenSource-Lizenz. Nach einigen Verbesserungen wurde OpenDivX von DivXNetworks plötzlich aus dem CVS genommen, was die Community verständlicherweise verärgerte. Der letzte Stand wurde als closed-source-Codec DivX 4 veröffentlicht. Von der Community wurden später die letzten frei zugänglichen OpenDivX-Quellen weiterentwickelt und ein Seitentrieb von OpenDivX enstand. Sämtliche Codeteile von OpenDivX wurden daran ersetzt und nun wird der Codec als XviD unter der GPL veröffentlicht.

XviD ist also ein open-source MPEG4-Codec, der hochqualitative Ergebnisse liefert. Er unterstüzt Features wie mehrere B-Frames, Quarter pixel motion compensation, Global motion compensation, Lumi masking, Trellis Quantisierung, sowie H.263, MPEG und eigene Quantisierungsmatrizen. Die Installation geschieht relativ problemlos über die auf der Homepage verfügbaren Quellen.

Der Codec wartet mit vielen, für den Nutzer der einfach nur eine Datei kodieren will, komplizierten Parametern auf. Abhilfe schafft hier das Programm xvid4config, dass die Parameter zwar nicht vereinfacht allerdings alles in eine GUI verpackt und als Popup-Hilfe gute Erklärungen zu den Parametern gibt.

Für XviD bestehen dieselben rechtlichen Probleme wie für ffmpeg.

Ogg Theora

Theora ist ein freies Codecprojekt das von der Xiph.org Foundation entwickelt wird. Im Wesentlichen geht es darum, den Ogg Vorbis Audiocodec und On2's VP3-Videocodec (verbessert) in Ogg-Containerformate zu integrieren um eine freie Alternative zu MPEG-4 zu bieten.

Die freie Entwicklung an VP3 begann als On2 den Codec im Herbst 2001 freigab und alle Rechte sowie Patente daran praktisch aufgab. Wenig später wurde eine irreversible Vereinbarung mit Xiph.org getroffen, wobei der nun freie VP3-Codec Grundlage eines neuen, freien Videocodecs sein sollte. Xiph.org wird seit dieser Zeit von On2 unterstützt. Theora wurde unter einer BSD-ähnlichen Lizenz veröffentlich und erfreut sich seitdem an einer stetigen Entwicklung. Mittlerweile befindet sich Theora in der alpha-Phase der Version 1.0 (Dezember 2004), es kann dennoch voll eingesetzt werden. Alle aktuell erstellten Theora-komprimierten Dateien werden in zukünftigen Versionen unterstützt werden.

Viele populäre freie Videoplayer, bespielsweise MPlayer, Xine, VideoLAN (VLC) und Helix Player, unterstützen Theora. Unter Windows ist die Benutzung durch DirectShow-Filter möglich. Um Theora zu installieren, ist unter SuSE Linux das Quellpaket herunterzuladen und mit dem üblichen ./configure, make, make install zu installieren. Der Codec ist danach einsatzbereit, allerdings ist es sinnvoll bereits installiere Player wie MPlayer erneut zu kompilieren, damit Theora dort registriert wird.

3D-Grafik

In diesem Abschnitt soll kurz beleuchtet werden, wie Linux mit Echtzeit-3D-Grafik zurechtkommt, wie sie z.B. von den meisten modernen Computerspielen benötigt wird.
Als 3D-Grafikschnittstelle kommt OpenGL zum Einsatz. Vom X Window System wird OpenGL durch das GLX-Modul (von SGI entwickelt) unterstützt, so dass es im Prinzip kein Problem ist, unter Linux OpenGL zu verwenden. Schwierigkeiten bereitet aber hardware-beschleunigtes OpenGL: fast alle aktuellen Grafikkarten zeichnen sich durch die Fähigkeit aus, 3D-Szenen (mehr oder minder) schnell und in hoher Qualität berechnen zu können. Damit das Betriebssytem diese Funktion nutzen kann, ist ein passender Treiber notwendig. Für einige Grafikchips gibt es OpenSource-Treiber, so dass man z.B. in SuSE Linux Hardware-3D-Beschleunigung aktivieren kann - allerdings nur mit 16Bit Farbtiefe und dem Hinweis, dass dieses Feature noch "experimentell" ist. Leider werden z.B. moderne Radeon-Grafikchips (9600, 9800, X800, ...) von ATI - die sich durch besonders hohe 3D-Leistung auszeichnen - nicht unterstützt oder der Treiber beherrscht einige Features der Karte (TV-Out, Dual Head) nicht. Deshalb bieten die beiden größten Grafikkartenhersteller ATI und Nvidia eigene Closed-Source Linux-Treiber an. Die Installation ist aber nicht ganz einfach, da ein passendes Modul für den gerade benutzten Kernel erstellt und die XF86-Config angepasst werden muss. Dank der Dokumentation ist das auch für Linux-Neulinge zu bewältigen - Zeit, Geduld und Englischkenntnisse vorausgesetzt. Der Nvidia-Treiber sollte ordentlich funktionieren, der recht neue ATI-Treiber wird im Folgenden etwas näher betrachtet. Eine Notlösung, die immer funktioniert, ist der Mesa Software-OpenGL-Treiber. Er nutzt keine Hardwarebeschleunigung, d.h. er verursacht hohe Prozessorlast, ist langsam und die Ergebnisse sehen möglicherweise recht bescheiden aus.

Der ATI-Treiber für Radeon-Grafikchips (fglrx)

Wer eine Grafikkarte mit dem ATI Radeon9500 (oder neuer) Grafikchip oder eine ATI FireGL-Karte besitzt und ihre Hardware-Grafikbeschleunigung nutzen möchte, kommt um die Installation dieses Treibers nicht herum. Der Treiber unterstützt alle Chips ab Radeon8500 aufwärts. Er besteht aus einem Kernelmodul, das hardwarebeschleunigtes OpenGL in 24Bit Farbtiefe ermöglicht, und einem Treiber für X.
Die folgenden Schritte sollten selbsredent als Nutzer root durchgeführt werden...

Installation:

Auf http://ati.com/support/driver.html gibt es (nur) RPM-Pakete für aktuelle SuSE- und RedHat-Distributionen. Das RPM-Paket Installiert den Treiber für X (der sich sofort problemlos verwenden lässt) und compiliert das Kernelmodul, vorausgesetzt, man hat die Kernelquellen installiert. Für Debian gibt es unter http://xoomer.virgilio.it/flavio.stanchina/debian/fglrx-installer.html Pakete und eine ausführliche Anleitung.

Konfiguration:

Zur Konfiguration bringt der Treiber das textorientierte Tool fglrxconfig mit, das nichts anderes als ein angepasstes xf82config ist. Das Tool ist recht einfach und übersichtlich, in den meisen Fällen kann man die Vorgabe übernehmen - ausser bei Monitoreinstellungen und Auflösungen, sonst endet man bei 640x480 mit flimmerigen 60Hz. Bei der Frage nach "use the external AGP GART module" sollte man mit "y" antworten: Der Kernel bringt ein ordentliches agpgart-Modul bereits mit, das bei den meisten Distributionen beim Start auch geladen wird. Möchte man das agpgart-Modul des Treibers verwenden, sollte man seinen eigenen Kernel bauen (und bei dessen Konfiguration agpgart abwählen).

Verwendung:

Das Kernelmodul wird mit

modprobe fglrx

geladen. Ist das erfolgreich, sollte

lsmod | grep fglrx

genau einen Eintrag ausschreiben. Mit

fglrxinfo

lässt sich prüfen, ob der Treiber funktioniert. Wird in der Ausschrift "Mesa", aber nirgends "Radeon" erwähnt, ist etwas schiefgegangen. Bei der Fehlersuche kann auch ein Blick in die /var/log/messages hilfreich sein.

Der Treiber funktioniert am besten in Verbindung mit dem OpenGL-Overlay-Modus des X-Servers. Leider wird dann das Video-Overlay für die xv-Erweiterung deaktiviert, so dass z.B. viele TV-Applikationen nicht mehr funktionieren (Absturz mit Speicherzugriffsfehler, schlimmstenfalls schwarzer Bildschirm: in dem Fall kann mit Strg+Alt+F1 auf die Konsole geschaltet und mit Strg+Alt+Del der Rechner sauber neu gestartet werden).
Man kann zwischen der Verwendung von OpenGL- und Video-Overlay umschalten, indem man die fogenden Zeilen Datei /etc/X11/XF86config-4 bzw. /etc/X11/XF86config editiert (relativ weit unten):

# === Video Overlay for the Xv extension ===
Option "VideoOverlay" "on"
# === OpenGL Overlay ===
# Note: When OpenGL Overlay is enabled, Video Overlay
# will be disabled automatically
Option "OpenGLOverlay" "off"

Wer mit der Wiedergabe von Video/TV Schwierigkeiten hat, sollte diese Einstellung verwenden - OpenGL läuft dann möglicherweise etwas langsamer (und wenn man viel Pech hat gar nicht). Sonst kann man die Option "OpenGLOverlay" auf "on" setzen.
Persönliche Erfahrung: Unter SuSE 9.1 ist zwar die Installation recht einfach (zumindest mit neueren Treiberversionen), dafür lädt das Kernelmodul nicht fehlerfrei. Der Treiber scheint nur mit OpenGL-Overlay zu funktionieren. Unter Debian (unstable) macht zwar die Installation etwas mehr Arbeit, dafür lädt der Treiber problemlos und läuft auch ohne OpenGL-Overlay.

Spiele unter Linux

Abgesehen von vielen kleineren Spielereien für KDE und Gnome gibt es auch größere Projekte wie FreeCiv, TuxRacer, Pingus oder SuperTux. Kommerzielle Spiele gibts es dagegen nur wenige. Loki Games hat einige von der Windows Plattform portiert, die Firma gibt es allerdings nicht mehr. Einige wenige aktuelle Spiele laufen auch nativ unter Linux, z.B. Doom3, Unreal Tournament 2004 und Neverwinter Nights. Allerdings benötigen sie hardwarebeschleunigtes OpenGL, was unter Linux nicht unproblematisch ist. Zudem bieten zwar alle Spiele 3D-Sound (=mehr als 2 Kanäle), bei einigen ist er aber nicht nutzbar (UT2004).
Einige wenige Windows-Spiele laufen auch unter Wine, wesentlich mehr funktionieren mit Cedega. Natürlich geht durch die Emulationsschicht Performance verloren, es gibt Kompatibilitätsprobleme und evtl. auch Schwierigkeiten mit 3D-Grafik und Sound.
Als Spieleplattform ist Linux somit eher ungeeignet.

Multimedia-Entwicklung

Was Linux im Hinblick auf Multimedia vor Allem fehlt sind einfache, mächtige und erweiterbare Multimedia-Schnittstellen wie z.B. DirectX. In diese Richtung gibt es durchaus Entwicklungen, auch wenn die Verbreitung noch nicht besonders groß ist. Im Folgenden sollen drei vielversprechende Projekte kurz vorgestellt werden:

SDL

Simple Directmedia Layer ist ein Plattformübergreifendes Multimedia-Framework, das einen einfachen Zugriff z.B. auf Maus, Tastatur, Joystick, Audio, Video und 3D-Hardware (OpenGL) erlaubt. Es eignet sich hervorragend zur Spieleentwicklung. Auf http://www.libsdl.org/ gibt es weitere Informationen, zudem Tutorials, Spiele, Applikationen u.v.m.

GStreamer

GStreamer ist ein OpenSource Multimedia Framework ähnlich DirectShow. Es besteht aus einer Reihe von Codecs und Plugins zum Einlesen, Ausgeben, Dekodieren, Enkodieren etc., die in Filtergraphen angeordnet werden können, um so einen Audioplayer oder sogar ein Videoschnittsystem zu realisieren. GStreamer hat eine einfache, saubere API; weitere Codecs und Plugins lassen sich leicht hinzufügen.

NMM

Die Network-Integrated Multimedia Middleware ist ein Projekt der Saarland Universität Saarbrücken, um Multimediageräte miteinander zu vernetzen. Ähnlich GStreamer können mit NMM Filtergraphen aufgebaut werden, nur funktionert es netzwerktransparent. Weitere Codecs und Plugins ("Nodes") lassen sich auch hier einfach integrieren. Im Rahmen des Projekts ist auch die MMBox entstanden, eine Multimedia-Center-Software ähnlich Freevo oder MythTV. Wer NMM (bzw. MMBox) ausprobieren möchte, sollte sich die Binärpakete herunteralden. Selber kompilieren ist nicht empfehlenswert, da NMM von einer ganzen Reihe externer Bibliotheken abhängt (die auch erstmal alle installiert sein wollen, z.T. in bestimmten Versionen) und das Kompilieren sehr, sehr lange dauert.

Fazit

Zusammenfassend ist zu sagen, dass Linux mit dem Thema "Multimedia" mittlerweile auch gut klarkommt: es gibt nichts, was Linux in diesem Bereich (überhaupt) nicht kann. An Videoschnittprogammen und "großen" Spielen mangelt es noch und die Treiberunterstützung für OpenGL könnte besser sein, dafür gibt es eine ganze Reihe von herausragenden Multimedia-Applikationen wie MPlayer, Xine, MythTV, VDR, XMMS usw. usf. Leider fehlen in den meisten Distibutionen aus patentrechtlichen Gründen einige Pakete und Features, sodass man nicht umhin kommt, sich z.B. MPlayer, Xine, Lame oder Xvid seperat zu besorgen bzw. selbst zu compilieren.

Keine Kommentare: