## 2.2. Unterstützte Codecs

### 2.2.1. Video Codecs

Siehe Codec-Status Seite für die komplette, täglich generierte Liste.

Die wichtigsten Video-Codecs:

- MPEG1 (VCD) und MPEG2 (DVD) Video
- eingebauter Dekoder für DivX ;-), OpenDivX, DivX4, DivX5, M$ MPEG4 v1, v2 und andere MPEG4 Varianten
- eingebauter Decoder für Windows Media Video 7 (WMV1) und Win32 DLL Decoder für Windows Media Video 8 (WMV2), beide werden in in .wmv Dateien verwendet
- eingebauter Sorenson (SVQ1) Decoder
- 3ivx Decoder
- Cinepak und Intel Indeo Codecs (3.1,3.2,4.1,5.0)
- MJPEG, AVID, VCR2, ASV2 und andere Hardwareformate
- VIVO 1.0, 2.0, I263 und andere h263(+) Varianten
- FLI/FLC
- RealVideo 1.0 von ffmpeg und RealVideo 2.0, 3.0 und 4.0 durch die RealPlayer Libraries
- eingebauter Decoder für HuffYUV
- Verschiedene alte, einfache RLE-ähnliche Formate

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 und Divx5 Codecs von 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 wured 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 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:

- http://avifile.sourceforge.net
- http://divx.com

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 arbeitet mit 2 Methoden:

| `-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 (schnell, empfohlen).
| `-vc divx4` |  | verwendet die Colorspace-Konversion des Codecs. In diesem Fall kannst du auch YUY2/UYVY verwenden (LANGSAM).

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.

#### 2.2.1.2. FFmpeg's DivX/libavcodec

FFmpeg enthält ein Open-Source Codec Paket, dass fähig ist H263/MJPEG/RV10/DivX3/DivX4/DivX5/MP41/MP42/WMV1 codierte Filme zu decodieren. Es kann nicht nur zu einigen davon konvertiert werden, sondern auch die Geschwindigkeit ist häher als die der Win32 Codecs oder der ProjectMayo DivX4/5 Bibliothek!

Er beinhaltet auch viele nette Codecs. Die wichtigsten sind die MPEG4 Varianten: DivX 3, DivX 4, DivX 5, Windows Media Video 7 (WMV1).

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.

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:

- Lade dir die Codecs, die du verwenden willst von der XAnim-Seite herunter. Der 3ivx Codec befindet sich nicht dort, kann jedoch von der 3ivx-Seite heruntergeladen werden.
- 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. Ansonsten kannst du auch die Umgebungsvariable XANIM_MOD_DIR zum Verzeichnis der XAnim Codecs setzen.
- Entferne/Symlinke die Dateinamen, indem du das Architektur-Zeugs löschst, so dass die Dateinamen etwa so aussehen: `vid_cvid.xa, vid_h263.xa, vid_iv50.xa`.

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 Win32 DLL 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:

- RealVideo 1.0 (fourcc RV10) - En/Dekodierung durch libavcodec unterstützt
- RealVideo 2.0 (fourcc RV20) - Dekodierung durch RealPlayer Libraries unterstützt
- RealVideo 3.0 (fourcc RV30) - Dekodierung durch RealPlayer Libraries unterstützt
- RealVideo 4.0 (fourcc RV40) - Dekodierung durch RealPlayer Libraries unterstützt

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 Video zu decodieren. Das `configure` Script von MPlayer sollte die RealPlayer Bibliotheken an der normalen Stelle der Installation finden. Falls nicht, kann man `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 Plattform.

Hinweis2: Wir können die RealPlayer Bibliotheken nicht verteilen, da die Lizenz es nicht erlaubt. Sie müssen selbst geholt werden.

#### 2.2.1.9. XViD

XViD ist eine abgespaltene (forked) Entwicklung des OpenDivX Codec. Es geschah, als ProjectMayo OpenDivX in das DivX4 Projekt mit geschlossenen Quellen änderte und die nicht-ProjectMayo, welche an OpenDivX arbeiteten wütend wurden und XViD starteten. Es besitzen also beide Projekte denselben Ursprung.

#### Vorteile:

- Open Source
- Die API ist kompatibel mit DivX4, so dass es leicht ist Unterstützung dafür einzubauen.
- 2-Pass Encodierungs-Unterstützung
- gute Encodierungsqualität, höhere Geschwindigkeit als DivX4 (man kann es, während dem Kompilieren, spezifisch für den jeweiligen Rechner optimieren)

#### Nachteile:

- Es decodiert momentan nicht alle DivX/DivX4-Dateien sauber (kein Problem, da man sie ja immer noch mit der libavcodec abspielen kann)
- Man muss sich beim Kompilieren für die DivX4 ODER XViD Unterstützung entscheiden.
- in der Entwicklung

#### 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`
7. Nimm die `encore2.h` und `decore.h` vom Divx4linux-Paket und kopiere diese nach `/usr/local/include/`.
8. kompiliere MPlayer neu mit `--with-xvidcore=/pfad/zu/libcore.a`.

#### 2.2.1.10. Sorenson

Sorenson ist ein von Apple entwickelter Videocodec. Wir sind momentan fähig, die erste Version davon mit einem eingebautem Decoder zu decodieren (SVQ1).

#### Vorteile:

- Schnell, sogar alte Macintosh Maschinen waren fähig den Codec zu decodieren

#### Nachteile:

- SVQ3 wurde immer noch nicht "reverse-engineered".

#### Installation:

Es wird standardmässig kompiliert und verwendet.

### 2.2.2. Audiocodecs

Die wichtigsten Audiocodecs als erstes:

- MPEG layer 2 und layer 3 (MP3) Audio (eingebauter Code, mit MMX/SSE/3DNow! Optimierungen)
- MPEG layer 1 Audio (eingebauter Code, mit libavcodec)
- AC3 Dolby Audio (eingebauter Code, mit MMX/SSE/3DNow! Optimierungen)
- Ogg Vorbis Audiocodec (eingebaute Bibliothek)
- Voxware Audio (Verwendung der DirectShow DLL)
- alaw, MSGSM, PCM und andere einfache, alte Audioformate
- VIVO Audio (G723, Vivo Siren)
- RealAudio: DNET (AC3 mit tiefer Bitrate), Cook

#### 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! mit dem 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 die g.723/Siren Win32 DLL von der MPlayer Seite herunterladen und dann in in das `/usr/lib/win32` Verzeichnis kopieren.

#### 2.2.2.5. RealAudio

MPlayer unterstützt die Dekodierung fast aller RealAudio Versionen:

- RealAudio DNET - Dekodierung durch liba52
- RealAudio Cook - Dekodierung durch RealPlayer Libraries
- RealAudio Sipro - Dekodierung durch RealPlayer Libraries

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

- die `system.ini` enthält nicht die Informationen die man braucht, stattdessen sind diese in der Registrierungsdatenbank gespeichert und
- man braucht die GUID des Codecs.

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]/`