2.2 Unterstützte Codecs

2.2.1 Video-Codecs

Siehe Codec-Status-Seite für die komplette, täglich generierte Liste. Eine Vielzahl von Codecs kann von unserer Homepage runtergeladen werden. Du findest sie auf der Codec-Seite.

Die wichtigsten Video-Codecs:

Wenn du einen Win32-Codec hast, der noch nicht aufgelistet und unterstützt ist, dann 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- und Divx5-Codec vom Project Mayo. Ihre ersten verfügbaren alpha-Versionen waren OpenDivX 4.0 alpha 47 und 48. Unterstützung dafür war früher standardgemäß in MPlayer eingebaut. Es wurde auch deren Postprocessing Code verwendet, um optional die Bildqualität von MPEG1/2-Filmen zu verbessern. Nun benutzen wir unseren eigenen für alle Dateitypen.

Die neue Version dieses Codecs heisst DivX4Linux und kann sogar Filme decodieren, die mit dem berüchtigten DivX-Codec (DivX 3 ;-)) erzeugt wurden! Dazu ist sie noch um einiges schneller als die traditionelle Win32-DivX-DLL aber immer noch langsamer als libavcodec. Vom Gebrauch dieses Codecs wird desshalb abgeraten. Er lässt sich jedoch trotzdem zum Encodieren verwenden. Ein Nachteil diese Codecs ist, dass er zurzeit nicht unter einer OpenSource-Lizenz verfügbar ist.

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

DivX4Linux arbeitet in zwei verschiedenen Modi:

-vc odivx
Spricht den Codec so wie den alten OpenDivX-Codec an. In diesem Fall produziert der Codec YV12-Bilder in seinem eigenen Puffer, und MPlayer nimmt die Farbraumkonvertierung mittels libvo vor (schneller und empfohlener Modus!).
-vc divx4
Benutzt die Farbraumkonvertierung des Codecs. In diesem Modus kannst du auch YUY2/UYVY benutzen (LANGSAM).

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

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

Die binäre DivX4/5-Bilbiothek kann von avifile oder divx.com heruntergeladen werden. heruntergeladen werden. Entpacke ihn, starte ./install.sh als root, und vergiss nicht, /usr/local/lib deiner /etc/ld.so.conf hinzuzufügen und ldconfig aufzurufen.

Besorge dir die CVS-Version der ALTEN OpenDivX-Kernbibliothek wie folgt:

  1. cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot login
  2. cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot co divxcore
  3. Diese Kernbibliothek inst in eine Dekodierbibliothek und eine Enkodierbibliothek aufgeteilt, sie separat compiliert werden müssen. Bei der Dekodierbibliothek gibst du einfach folgendes ein:
          cd divxcore/decore/build/linux
          make
          cp libdivxdecore.so /usr/local/lib 
          ln -s libdivxdecore.so /usr/local/lib/libdivxdecore.so.0 
          cp ../../src/decore.h /usr/local/include
        
  4. Für die Enkodierbibliothek gibt es leider kein Linux-Makefile, und der MMX-optimierte Code funktioniert auch nur unter Windows. Du kannst die Bibliothek aber trotzdem compilieren, wenn du dieses Makefile benutzt:
          cd ../../../encore/build
          mkdir linux
          cd linux
          cp path/Makefile .
          make
          cp libdivxencore.so /usr/local/lib
          ln -s libdivxencore.so /usr/local/lib/libdivxencore.so.0
          cp ../../src/encore.h /usr/local/include
        

MPlayer findet DivX4/DivX5 automatisch, sofern es richtig installiert wurde. Compiliere also einfach wie sonst auch. Wenn configure die Bibliothek nicht findet, dann hast du DivX4/5 einfach nicht richtig installiert.

2.2.1.2 FFmpeg's DivX/libavcodec

Das FFmpeg-Projekt enthält ein Open-Source-Codec-Paket, das fähig ist, mit H263/MJPEG/RV10/DivX3/DivX4/DivX5/MP41/MP42/WMV1/WMV2/HuffYUV codiertes Video und mit WMA (Windows Media Audio) codiertes Audio zu decodieren. Man kann nicht nur einige dieser Codecs zum Encodieren benutzen, sondern die Geschwindigkeit ist sogar um einiges häher als die der Win32-Codecs oder der ProjectMayo DivX4/5-Bibliothek!

FFmpeg beinhaltet auch viele nette Codecs. Die wichtigsten sind die MPEG4-Varianten: DivX3, DivX4, DivX5, Windows Media Video 7 (WMV1). Ein weiterer sehr interessanter Deocder ist der für WMA.

Wenn ein offizielles MPlayer-Release verwendet wird, befindet sich libavcodec (die Codec-Bilbiothek des FFmpeg-Projektes) bereits im Paket, welches normal kompiliert werden kann. Wenn du die MPlayer-Sourcen per CVS runterlädst, musst du die libavcodec vom FFmpeg CVS-Server verwenden, da das offizielle FFmpeg-Release 0.4.5 nicht mit MPlayer zusammen läuft. Um dies zu erreichen gibst du folgendes ein:

  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. Das libavcodec-Verzeichnis von den FFmpeg-Sourcen muss in's Hauptverzeichnis des MPlayer CVS-Baums verschoben/kopiert werden. Es sollte etwa so aussehen:

        main/libavcodec

    Das Erstellen eines symbolischen Links ist nicht genug; es muss kopiert/verschoben werden!
  4. Es folgt die Compilierung. configure sollte Probleme vor der Compilierung erkennen.

Hinweis: Die MPlayer-Sourcen im CVS enthalten ein libavcodec-Unterverzeichnis. Es enthält jedoch nicht den Quellcode von libavcodec! Du musst - wie oben beschrieben - dir die CVS-Version von FFmpeg besorgen.

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, das 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.

INSTALLATION UND BEDIENUNG

MPlayer kann XAnims Codecs für das Decodieren verwenden. Um diese zu aktivieren, solltest folgenden Anweisungen folgen:

  1. Lade dir die Codecs, die du verwenden willst, von der XAnim-Seite herunter. Der 3ivx Codec befindet sich nicht dort. Er kann jedoch von der 3ivx-Seite heruntergeladen werden.
  2. ODER lade dir das Codec-Paket von unserer Codecseite herunter.
  3. Verwende die --with-xanimlibdir-Option, um configure zu sagen, wo es die XAnim-Codecs finden kann. Normalerweise werden diese in /usr/local/lib/xanim/mods, /usr/lib/xanim/mods/ und /usr/lib/xanim gesucht. Weiterhin kannst du auch die Umgebungsvariable XANIM_MOD_DIR auf den Verzeichnisnamen der XAnim-Codecs setzen.
  4. Entferne/Symlinke die Dateinamen, wobei du das Architektur-Zeugs löschst, sodass die Dateinamen etwa so aussehen: vid_cvid.xa, vid_h263.xa, vid_iv50.xa.

XAnim ist die Videocodec-Familie xanim. Du kannst also die -vfm xanim-Option verwenden, 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 geeignete Codec für 1.0-Dateien ist FFmpegs H263-Decoder. Du kannst ihn mit der -vc ffh263-Option aufrufen. Für v2.0-Dateien musst du die Win32-DLLs mit der Option -vc vivo benutzen. Wenn du keine expliziten Angaben zum Codec auf der Kommandozeile machst, so wählt MPlayer automatisch den besten aus.

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 anschließend schnelle Neuinitialisierung des Codecs ab. 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 einen Open-Source-Codec (von Mike Melanson) eingebaut.

2.2.1.7 Cinepak CVID

MPlayer verwendet normalerweise seinen eigenen, Open-Source multiplatformfähigen Cinepak-Decoder, der von Dr. Tim Ferguson geschrieben wurde. Er unterstützt YUV-Ausgabe, was Hardwarescaling ermöglicht, wenn dies vom Videoausgabetreiber unterstützt wird.

2.2.1.8 RealVideo

MPlayer unterstützt die Dekodierung aller Versionen von RealVideo:

Es wird empfohlen, RealPlayer8 oder RealONE herunterzuladen und zu installieren, da MPlayer deren Bibliotheken verwenden kann, um RealVideo 2.0, 3.0 oder 4.0 zu decodieren. Das configure-Script von MPlayer sollte die RealPlayer-Bibliotheken an der normalen Stelle der Vollinstallation finden. Falls nicht, kannst du configure über die Option --with-reallibdir mitteilen, wo sie zu suchen/finden sind.

Hinweis: Momentan funktionieren die RealPlayer-Bibliotheken nur mit Linux, FreeBSD, NetBSD und Cygwin auf der x86 oder der Alpha-Plattform.

2.2.1.9 XviD

XviD ist eine abgespaltene Entwicklung des OpenDivX-Codecs. Es geschah, als ProjectMayo OpenDivX in das ClosedSource-Projekt DivX4 (jetzt DivX5) änderte, woraufhin die Leute, die an OpenDivX aber nicht beim ProjectMayo arbeiteten, sauer wurden und XviD starteten. Beide Projekte haben also den selben Urpsrung.

VORTEILE

NACHTEILE

INSTALLATION DER XVID-CVS-VERSION

XviD 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. ändere 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. compiliere MPlayer neu mit --with-xvidcore=/pfad/zu/libcore.a.

2.2.1.10 Sorenson

Sorenson ist eine von Sorenson Media entwickelte und von Apple lizensierte Videocodecfamilie. Wir sind momentan in der Lage, alle Videos zu decodieren, die mit einer der folgenden Sorenson-Versionen erstellt wurden:

COMPILIERUNG VON MPLAYER MIT UNTERSTÜTZUNG FÜR QUICKTIME-BIBLIOTHEKEN

Anmerkung: Momentan wird nur die 32bit-Intel-Architektur unterstützt.

  1. Lade die CVS-Version von MPlayer herunter.
  2. Compiliere MPlayer mit:
    $ ./configure --enable-qtx-codecs
  3. Lade dir das QuickTime-DLL-Paket von http://www.mplayerhq.hu/MPlayer/releases/codecs herunter.
  4. Entapcke die QuickTime-DLLs in dein Win32-Codec-Verzeichnis, das standardmäßig /usr/lib/codecs ist.
s

2.2.2 Audio-Codecs

Die wichtigsten Audiocodecs als erstes:

2.2.2.1 AC3-Decodierung in Software

Dieser ist der standardmäß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 Decoder die Ausgabe aller AC3-Kanäle an den Soundtreiber. Damit ermöglicht er die vollständige "Surround Sound"-Erfahrung ohne einen externen AC3-Decoder, der bei der Verwendung des hwac3-Codecs nötig ist.

Verwende die -channels-Option um die Anzahl der Ausgabekanä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 gleichmäßig den Frontkanälen beigemischt. -channels 6 gibt alle AC3-Kanäle wie Aufgezeichnet in der Reihenfolge links, rechts, links Surround, rechts Surround, Center und LFE aus.

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 AC3 Decodierung in Hardware

Du brauchst eine AC3-fähige Soundkarte mit einem Digitalausgang (SP/DIF). Der Treiber muss das AFMT_AC3 Format richtig unterstützen (wie z.B. der für die C-Media-Karten). Verbinde den AC3-Decoder mit dem SP/DIF-Ausgang, und benutze die Option -ac hwac3. Dieser Code ist not experimentell, laeuft aber bekanntermaßen mit C-Media-Karten, SoundBlaster Live!-Karten mit dem ALSA-Treiber (aber nicht mit dem OSS-Treiber) und mit den DXR3/Hollywood+-MPEG-Decoderkarten.

2.2.2.3 libmad-Unterstützung

libmad ist eine Multiplattform-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.

2.2.2.5 RealAudio

MPlayer unterstützt die Dekodierung fast aller RealAudio-Versionen:

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

2.2.2.6 QDesign-Codecs

QDesign-Audio (fourcc: QDMC, QDM2) findest du in MOV/QT-Dateien. Beide Versionen dieses Codecs können mit den QuickTime-Bibliotheken decodiert werden. Schau in der Sorenson-Video-Codec-Sektion für Installationsanweisungen nach.

2.2.2.7 Qualcomm-Codec

Qualcomm-Audiostreams (FourCC: Qclp) finden sich in MOV/QT-Dateien. Sie können mit den Quicktime-Bibliotheken decidiert werden. Installationsanweisungen findest du in der Sektion über den Sorenson Videocodec.

2.2.3 Win32 Codec-Importierungs-HOWTO

2.2.3.1 VfW-Codecs

VfW (Video for Windows) ist die alte Video-Schnittstelle für Windows. Diese 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 musst du nur noch herausgefunden, 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 du nun alle nötigen Informationen hast (fourcc, Codec-Datei, AVI-Beispiel), solltest du per Mail um Unterstützung für diesen Codec bitten und die Dateien auf folgenden FTP-Server hochladen:

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

Anmerkung: Auf Windows NT/2000/XP-Systemem solltest du in der Registry nach diesen Informationen suchen, also z.B. nach "VIDC.HFYU". Um herauszufinden, wie das geht, lies die Sektion "alte DirectShow-Methode".

2.2.3.2 DirectShow Codecs

DirectShow ist die neuere Video-Programmierschnittstelle, welche noch schlimmer als ihr Vorgänger ist. Den Namen der DLL herauszufinden ist bei DirectShow schwieriger, weil...

Neue Methode: mittels Microsoft GraphEdit (schnell)

  1. Besorg dir GraphEdit entweder aus dem DirectX-SDK oder von Doom9.
  2. Starte graphedit.exe.
  3. Wähle im Menü "Graph -> Insert Filters".
  4. Klappe DirectShow Filters auf.
  5. Suche und wähle den richtigen Codec, dann klappe auch diesen auf.
  6. Der Eintrag DisplayName enthält die gesuchte GUID. Diese steht nach dem Backslash (\) in geschweiften Klammern und besteht aus fünf Blöcken mit Ziffern und Buchstaben, die jeweils mit Punkten voneinander getrennt sind. Schreib diese GUID auf.
  7. Der Dateiname des Codecs steht im Eintrag Filename.

Anmerkdung: Wenn es keinen Eintrag namens Filename gibt und der DisplayName-Eintrag etwas in der Art device:dmo enthält, so handelt es sich um einen DMO-Codec.

Alte Methode: Atme tief durch und beginne mit dem Durchsuchen der Registry...

  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 die 16 Byte lange CLSID auf, dies ist die von uns benötigte GUID.

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

Da du nun alle nötigen Informationen hast (fourcc, GUID, Codec-Datei, AVI-Beispiel), solltest du per Mail um Unterstützung für diesen Codec bitten und die Dateien auf folgenden FTP-Server hochladen:

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