2.2. Unterstützte Codecs

2.2.1. Video Codecs

Siehe http://www.mplayerhq.hu/DOCS/codecs-status.html für die komplette, täglich generierte Liste!!!

Die wichtigsten Video-Codecs:

Wenn du einen Codec hast, der noch nicht aufgelistet und unterstützt ist, lies Win32 Codec-Importierungs HOWTO und hilf uns, die Unterstützung hinzuzufügen!

2.2.1.1. DivX4/DivX5

Diese Sektion enthält Informationen über den DivX4 Codec von Project Mayo. Ihre ersten verfügbaren alpha-Versionen waren OpenDivX 4.0 alpha 47 und 48. Unterstützung dafür wurde standardgemäß in MPlayer eingebaut. Früher verwendeten wir deren postprocessing Code, um optional die Bildqualität von MPEG1/2-Filmen zu verbessern. Nun benutzen wir unseren eigenen.

Die neue Version dieses Codecs heisst DivX4Linux und kann sogar Filme decodieren, die mit diesen relativ unbekannten DivX-Codecs erzeugt wurden! Dazu ist er noch um einiges schneller als die traditionelle Win32 DivX DLL aber immer noch langsamer als libavcodec. Der Gebrauch dieses Codecs ist desshalb ENTMUTIGEND. Er lässt sich jedoch trotzdem zur Encodierung verwenden. Ein Nachteil diese Codecs ist, dass er zur Zeit Closed-Source ist.

Der Codec kann von einer der folgenden URLs heruntergeladen werden:

Entpacke es und starte ./install.sh als Root.

Hinweis: vergiss NICHT /usr/local/lib deiner /etc/ld.so.conf hinzuzufügen!

MPlayer erkennt automatisch, ob DivX4/DivX5 korrekt installiert ist und kompiliert wie gewöhnlich. Wenn es nicht erkannt wird, wurde es nicht korrekt installiert oder konfiguriert.

DivX4Linux steht in Konflikt mit derm alten OpenDivX, da die APIs von beiden sich ähnlich aber inkompatibel sind. Desshalb kann nur einer davon zur gleichen Zeit in MPlayer einkompiliert werden.

DivX4Linux bietet einen OpenDivX-Kompatibilitäts Modus, so dass man bei der Verwendung des Codecs folgende Optionen auswählen kann:

  -vc odivx   Verwendet den Codec nach OpenDivX-Art. In diesem Fall produziert es YV12 Bilder in seinem eigenen Buffer, und MPlayer führt die Colorspace-Konversion via libvo durch (EMPFOHLEN).
-vc divx4 verwendet die Colorspace-Konversion des Codecs. In diesem Fall kannst du auch YUY2/UYVY verwenden.

Die -vc odivx Methode ist normalerweise schneller, da es die Daten in einem YV12 (Planar YUV 4:2:0) Format übermittelt, was weniger Bandbreite für den Bus bedeutet. Für gepackte YUV Formate (YUY2, UYVY) verwende die -vc divx4 Methode. Für RGB-Modus ist die Geschwindigkeit gleich, am ehesten hängt sie noch von deiner momentanen Farbtiefe ab.

HINWEIS: Wenn der -vo driver "direct rendering" unterstützt, ist -vc divx4 wahrscheinlich die schnellere oder sogar die schnellste Lösung.

Hinweis: Das ALTE OpenDivX unterstützt auch Postprocessing via die Option -oldpp. Der Bereich der Werte ist jedoch seltsam:

  0   kein Postprocessing
  10 .. 20   Postprocessing, normal (wie Level 2 mit DivX-DS)
  30 .. 60   starkes Postprocessing, benötigt viel CPU Zeit (wie Level 4 bei DivX-DS)

2.2.1.2. FFmpeg's DivX/libavcodec

Seit Beginn der Version 0.4.2, enthält FFmpeg einen Open-Source DivX-Codec, welcher kompatibel mit dem traditionellen DivX ist. MPlayer unterstützt diesen Codec und ermöglicht es, DivX/DivX4/DivX5/MP41/MP42-Filme auf nicht-x86 Platformen zu sehen!. Des weiteren besitzt er eine schnellere Decodierungs-Geschwindigkeit als der Win32-Codec oder die orginale DivX4-Library!

Er beinhaltet auch viele nette Codecs, wie RealVideo 1.0, MJPEG, h263, h263+, etc.

Wenn ein MPlayer Release verwendet wird, befindet sich libavcodec bereits im Paket, welches normal kompiliert werden kann. Wenn MPlayer über CVS verwendet wird, muss die libavcodec vom FFmpeg CVS-Server verwendet werden, das FFmpeg 0.4.5 nicht mit Mplayer zusammen läuft. Um dies zu erreichen, sollten folgende Schritte vollzogen werden:

  1. cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg login
  2. cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg co ffmpeg
  3. Dass libavcodec Verzeichnis von den FFmpeg-Sourcen muss ins Hauptverzeichnis des MPlayer CVS-Baums bewegt werden. Es sollte etwa so aussehen:

        main/libavcodec

    Symlinken ist nicht genug, es muss kopiert/verschoben werden!!!
  4. Es folgt die Kompilierung. Configure sollte allfällige Probleme vor der Kompilierung erkennen.

HINWEIS: MPlayer über CVS enthält ein libavcodec Unterverzeichnis, es enthält jedoch NICHT den Quellcode von libavcodec! Es muss der obrigen Anleitung gefolgt werden, um den Quellcode für diese Bibliothek (library) zu erhalten.

Der Codec unterstützt auch Postprocessing!

Mit FFmpeg und meiner Matrox G400 kann ich sogar DivX-Filme in hoher Auflösung auf meinem K6/2 500 ohne Framedrops betrachten.

2.2.1.3. XAnim Codecs

Vorwort:
Es ist darauf hinzuweisen, dass die XAnim Binary-Codecs mit einem Textstück geliefert werden, dass eine legal bindende Softwarelizenz sein soll, welche (neben einigen anderen Einschränkungen) dem Benutzer das Verwenden der Codecs mit anderen Programmen als XAnim verbietet. Der XAnim-Autor hat jedoch noch keine rechtliche Schritte gegen irgendjemanden wegen Codec bezogenen Fragen unternommen.

MPlayer kann XAnims Codecs für das Decodieren verwenden. Um diese zu aktivieren sollte folgende Anleitung befolgt werden:

XAnim ist die Videocodec-Familie Nummer 10. Es kann also die -vfm 10 Option verwendet werden, um MPlayer zu sagen, dass er sie, wenn möglich, verwenden soll.

Die getesteten Codecs beinhalten: Indeo 3.2, 4.1, 5.0, CVID, 3ivX, h263.

2.2.1.4. VIVO Video

MPlayer kann VIVO (1.0 und 2.0) Videos abspielen. Der beste Codec für 1.0-Dateien ist FFmpegs H263 Dekoder, du kannst ihn mit der -vc ffh263 Option aufrufen (standard) (benötigt die neuesten libavcodecs). Für 2.0-Dateien verwende die ivvideo.dll DLL-Datei (von hier) und installiere sie unter /usr/lib/win32 oder wo du deine Win32 Codecs speicherst. Der letztgenannte Codec unterstützt weder YV12 noch YUY2, nur BGR-Modus, was die Ausgabe auf X11 und OpenGL beschränkt. ffh263 wird in Zukunft hoffentlich VIVO 2.0 unterstützen.

2.2.1.5. MPEG 1/2 Video

MPEG1 und MPEG2 werden von der eingebauten multiplatform Bibliothek libmpeg2 decodiert, deren Source in MPlayer enthalten ist. Wir spielen fehlerhafte MPEG1/2 Videos durch das Abfangen des sig11 (segmentation fault) und die anschliessend schnelle neue Initialisierung des Codecs. Dadurch kann exakt an der Stelle des Fehlers fortgefahren werden. Es ist dabei kein Geschwindigkeitsverlust messbar.

2.2.1.6. MS Video 1

Dies ist dein sehr alter und sehr schlechter Codec von Microsoft. In der Vergangenheit wurde es mit dem msvidc32.dll Win32-Codec decodiert, aber nun haben wir eine Open-Source-Codec (von Mike Melanson) eingebaut.

2.2.1.7. Cinepak CVID

MPlayer verwendet normalerweise einen eigenen, Open-Source, multiplatformfähigen Cinepak-Decoder. Er unterstützt YUV Ausgabe, dies ermöglicht Hardwarescaling, wenn dies vom Videoausgabetreiber unterstützt wird.

2.2.1.8. RealVideo

MPlayer unterstützt die Dekodierung aller Versionen von RealVideo:

Wie die RealPlayer Libraries installiert werden können, wird in der Sektion RealMedia Dateiformat behandelt.

2.2.1.9. XViD

XViD ist eine weitere Entwicklung von der OpenDivX-Gruppe (deren erste Entwicklung war DivX4).

Vorteile:

Nachteile:

Installation: Es ist momentan nur als CVS erhältlich. Hier sind die Download- und Installations-Anweisungen:

  1. cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid login
  2. cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid co xvidcore
  3. cd xvidcore/build/generic
  4. bearbeite Makefile.linux deinen Bedürfnissen entsprechend
  5. make -f Makefile.linux
  6. Nimm die encore2.h und decore.h vom Divx4linux-Paket und kopiere diese nach /usr/local/include/.
  7. kompiliere MPlayer neu mit --with-xvidcore=/pfad/zu/libcore.a.

2.2.2. Audiocodecs

Die wichtigsten Audiocodecs als erstes:

2.2.2.1. Software AC3 Decodierung

Dieser ist der standardgemäße Dekoder für Dateien mit AC3-Audio.

Der AC3 Dekoder kann die Audio-Ausgabe für 2, 4 oder 6 Lautsprecher erzeugen. Wenn er für 6 Lautsprecher konfigieriert ist unterstützt dieser Dekoder unterschiedliche Ausgabe für alle AC3-Kanäl an den Soundtreiber. Dabei erlaubt es die vollständige "surround Sound" Erfahrung ohne einen externen AC3 Dekoder und ohne Verwendung des hwac3-Codes.

Verwende die -channels Option um die Anzahl der Aufgabekanäle zu wählen. Verwende -channels 2 für Downmix auf Stereo. Für Downmix auf 4 Kanäle (links vorne, rechts vorne, links Surround und rechts Surround) verwende -channels 4. In diesem Fall werden alle Center-Känale gleich den Front-Kanälen sein. -channels 6 gibt alle AC3-Kanäle wie Aufgezeichnet aus - in der Reihenfolge links, rechts, links Surround, rechts Surround, Center und LFE.

Die Standardanzahl der Ausgabekanäle ist 2.

Um mehr als 2 Kanäle zu verwenden musst du OSS verwenden und eine Soundkarte besitzen, die die Anzahl der Ausgabekanäle via SNDCTL_DSP_CHANNELS ioctl unterstützt. Ein Beispiel eines passenden Treibers ist emu10k1 (verwendet bei SB Live! Karten) vom August 2001 oder neuer (ALSA CVS sollte auch funktionieren).

2.2.2.2. Hardware AC3 Decodierung

Man braucht eine AC3-fähige Soundkarte mit Digital-Out (SP/DIF). Der Treiber muss das AFMT_AC3 Format richtig unterstützen (wie C-Media). Der AC3-Decoder sollte mit dem SP/DIF Ausgang verbunden werden und die Option -ac hwac3 verwendet werden. Es ist experimentell, sollte aber mit C-Media Karten und SB Live! + ALSA (nicht OSS) Treiber funktionieren.

2.2.2.3. libmad Unterstützung

libmad ist eine multiplatform Bibliothek für die Decodierung von MPEG-Audio. Sie verarbeitet kaputte Dateien nicht so gut und hat teilweise Probleme mit dem Suchen

Um die Unterstützung zu aktivieren, verwende configure mit der Option --enable-mad.

2.2.2.4. VIVO Audio

Der verwendete Audiocodec in VIVO-Dateien hängt davon ab, ob es eine VIVO/1.0 oder VIVO/2.0 Datei ist. VIVO/1.0 Dateien verwenden g.723 Audio und VIVO/2.0 Dateien Vivo Siren Audio. Beide werden unterstützt. Man kann dazu g.723/Siren Win32 DLL von hier herunterladen und dann in in das /usr/lib/win32 Verzeichnis kopieren.

2.2.2.5. RealAudio

MPlayer unterstützt die Dekodierung aller RealAudio Versionen:

Wie die RealPlayer Libraries installiert werden können, wird in der Sektion RealMedia Dateiformat behandelt.

2.2.3. Win32 Codec-Importierungs HOWTO

2.2.3.1. VFW Codecs

VFW (Video für Windows) ist die alte Video-Schnittstelle für Windows. Deie Codecs haben die Erweiterung .DLL oder (eher selten) .DRV. Wenn MPlayer mit folgender Meldung fehlschlägt, ein AVI abzuspielen:

    UNKNOWN video codec: HFYU (0x55594648)

...bedeutet es, dass das AVI mit einem Codec erstellt wurde, der den fourcc HFYU besitzt (HFYU = HuffYUV Codec, DIV3 = DivX Low Motion, usw...). Jetzt, wo es bekannt ist, muss herausgefunden werden, welche DLL Windows lädt, um diese Datei abzuspielen. In diesem Fall enthält die System.ini diese Information in solch einer Zeile:

    VIDC.HFYU=huffyuv.dll

Also braucht man die Datei huffyuv.dll. Hinweis: die Audio-Codecs werden durch das MSACM-Prefix angegeben:

    msacm.l3acm=L3codeca.acm

Dies ist ein MP3 Codec. Da nun alle nötigen Informationen vorhanden sind (fourcc, Codec-Datei, Beispiel AVI), sollte die Codec-Unterstützungs Anfrage durch ein Mail vorgelegt und die Dateien auf folgende FTP-Seite geladen werden:

    ftp://ftp.mplayerhq.hu/MPlayer/incoming/[codecname]/

2.2.3.2. DirectShow Codecs

DirectShow ist die neuere Video-Programmierschnittstelle, welche noch schlimmer als ihr Vorgänger ist. Es ist schwieriger mit DirectShow, denn

Atme tief durch und beginne mit dem Durchsuchen der Registrierung...

  1. Starte regedit
  2. Drücke Strg-f, deaktiviere die ersten beiden Auswahlfelder und aktiviere das Dritte. Nun gib den fourcc des Codecs ein (z.B.: TM20).
  3. Du solltest ein Feld sehen, welches den Pfad und Dateinamen enthält (z.B.: C:\WINDOWS\SYSTEM\TM20DEC.AX).
  4. Jetzt da man die Datei hat, braucht man die GUID. Versuche erneut zu suchen, aber nun nach dem Codec-Namen, nicht nach der fourcc. Der Codec-Name kann bei der Wiedergabe mit dem Windows Media Player herausgefunden werden, indem man unter Datei->Eigenschaften->Erweitert nachschaut. Falls dies nichts bringt, hast du Pech. Versuche zu raten (suche z.B. nach: TrueMotion).
  5. Wenn die GUID gefunden wurde, sollte ein FriendlyName- und ein CLSID-Feld auftauchen. Schreibe 16 Byte der CLSID auf, dies ist die von uns benötigte GUID.

HINWEIS: Wenn die Suche fehlschlägt, versuche alle Auswahlfelder zu aktivieren... du hast möglicherweise falsche Ergebnisse, aber vielleicht hast du auch Glück...

Da nun alle nötigen Informationen vorhanden sind (fourcc, GUID, Codec-Datei, Beispiel AVI), sollte die Codec-Unterstützungs Anfrage durch ein Mail vorgelegt und die Dateien auf folgende FTP-Seite geladen werden:

    ftp://ftp.mplayerhq.hu/MPlayer/incoming/[codecname]/