7.1. Videocodecs
Zurück | Kapitel 7. Codecs | Weiter

## 7.1. Videocodecs

Die Codecstatustabelle ist eine vollständige Liste aller unterstützten Codecs, die täglich neu erstellt wird. Einige Binärcodecs zum Gebrauch mit MPlayer sind im Downloadbereich unserer Homepage verfügbar.

Die Allerwichtigsten:

- MPEG-1 (VCD) und MPEG-2 (DVD) Video
- Native Decoder für alle DivX-Varianten, 3ivX, M$ MPEG-4 v1, v2 und andere MPEG-4 Varianten
- Nativer Decoder für Windows Media Video 7/8 (WMV1/WMV2) und Win32 DLL Decoder für Windows Media Video 9 (WMV3), beide in Gebrauch in `.wmv`-Dateien
- Nativer Sorenson 1 (SVQ1) Decoder
- Nativer Sorenson 3 (SVQ3) Decoder
- 3ivx v1, v2 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 H.263(+)-Varianten
- FLI/FLC
- RealVideo 1.0 & 2.0 von `libavcodec` und RealVideo 3.0 & 4.0 Codecs mittels der RealPlayer Bibliotheken
- Native Decoder für HuffYUV
- Verschiedene alte und simple RLE-ähnliche Formate

Falls du einen Win32 Codec hast, der hier nicht aufgeführt ist und noch nicht unterstützt wird, lies bitte die Codec Importing HOWTO und hilf uns, Unterstützung hinzuzufügen.

### 7.1.1. FFmpeg/libavcodec

FFmpeg enthält `libavcodec`, die führende Open-Source-Bibliothek für Video und Audio. Sie ist in der Lage, die meisten Multimedia-Formate zu decodieren, normalerweise schneller als die Alternativen; möglicherweise wird auch noch Unterstützung für die anderen Formate hinzugefügt. Es ist der Standarddecoder für den Großteil der Codecs, die MPlayer unterstützt. Für manche Formate ist außerdem auch Encodierung mit Hilfe von MEncoder möglich.

Für eine vollständige Liste unterstützter Codecs besuche bitte die FFmpeg Homepage. Unterstützte Video- und Audiocodecs.

MPlayer enthält `libavcodec`. Es genügt, `configure` laufen zu lassen und zu compilieren.

### 7.1.2. XviD

XviD ist ein freier MPEG-4 ASP konformer Videocodec, der Encodierung in zwei Durchläufen und das ganze MPEG-4 ASP Spektrum unterstützt, was ihn wesentlich effizienter als den gut bekannten DivX-Codec macht. Er erreicht sehr gute Qualität und dank CPU-Optimierungen für die meisten modernen Prozessoren gute Performance.

Es begann als Fork der Entwicklung des OpenDivX-Codecs. Dies geschah, als ProjectMayo OpenDivX zu Closed Source DivX4 machte und die Leute, die an OpenDivX arbeiteten aber nicht zu ProjectMayo gehörten, verärgerte. Diese riefen dann XviD ins Leben. Beide Projekte haben daher denselben Ursprung.

Beachte, dass XviD nicht benötigt wird, um mit XviD encodiertes Video zu decodieren. In der Standardkonfiguration wird dafür `libavcodec` benutzt, da er höhere Geschwindigkeit bietet.

Installation von `XviD`

Wie die meiste Open-Source-Software gibt es zwei verfügbare Varianten: offizielle Releases und die CVS-Version. Die CVS-Version ist für die Benutzung normalerweise stabil genug, da es meistens Fehlerbehebungen für Bugs enthält, die im Release vorhanden sind. Hier also, was du zu tun hast, um `XviD` vom CVS mit MEncoder ans Laufen zu bringen (du benötigst mindestens autoconf 2.50, automake und libtool):

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.     ./bootstrap.sh

5.     ./configure

   Du musst möglicherweise ein paar Optionen hinzuzufügen (schaue dir die Ausgabe von ./configure --help an).

6.     make && make install

7. Wenn du `--enable-divxcompat` angegeben hast, kopiere `../../src/divx4.h` nach `/usr/local/include/`.

8. Compiliere MPlayer erneut mit `--with-xvidlibdir=`/Pfad/zu/`libxvidcore.a` `--with-xvidincdir=`/Pfad/zu/`xvid.h`.

### 7.1.3. x264

#### 7.1.3.1. Was ist x264?

`x264` ist eine Bibliothek für die Erstellung von H.264-Videostreams. Es ist nicht 100% vollständig, hat momentan aber zumindest eine Art Unterstützung für die meisten H.264-Features, die Einfluß auf die Qualität haben. Es gibt außerdem viele fortgeschrittene Features in der H.264-Spezifikation, die mit Videoqualität per se nichts zu tun haben; viele davon sind in `x264` nicht implementiert.

Encoder-Features

- CAVLC/CABAC

- mehrere Referenzen

- Intra: alle Macroblock-Typen (16x16, 8x8, and 4x4 mit allen Vorhersagen)

- Inter P: Alle Partitionen (von 16x16 bis runter zu 4x4)

- Inter B: Partitionen von 16x16 runter zu 8x8 (inklusive SKIP/DIRECT)

- Bitratenkontrolle: konstanter Quantisierungsparameter, konstante Bitrate, einer oder mehrere Durchläufe mit durchschnittlicher Bitrate (optional VBV)

- Szenenwechselerkennung

- Adaptive Platzierung von B-Frames

- B-Frames als Referenzen / bieliebige Framereihenfolge

- 8x8 und 4x4 adaptive räumliche Transformierung

- Verlustfreier Modus

- Benutzerdefinierte Quantisierungsmatrizen

- Parallele Encodierung mehrerer Scheiben

#### 7.1.3.2. Was ist H.264?

H.264 ist ein Name für einen neuen digitalen Videocodec, der von der ITU und MPEG zusammen entwickelt wurde. Etwas umständlicher kann man ihn auch "ISO/IEC 14496-10" oder "MPEG-4 Part 10" nennen. Häufiger wird er als "MPEG-4 AVC" oder einfach "AVC" bezeichnet.

Wie auch immer du ihn nennst, H.264 ist es eventuell wert, ausprobiert zu werden, da er typischerweise die Qualität von MPEG-4 ASP bei 5%-30% Einsparung der Bitrate erreicht. Tatsächliche Ergebnisse werden sowohl vom Quellmaterial als auch dem Encoder abhängen. Die Gewinne durch die Benutzung von H.264 kommen nicht umsonst: Decodierung von H.264-Streams hat anscheinend heftige CPU- und Speicheranforderungen. Beispielsweise benötigt ein Athlon mit 1733 MHz für ein 1500kbps-H.264-Video in DVD-Auflösung um die 35% CPU-Leistung für die Decodierung. Im Vergleich dazu wird für einen 1500kbps MPEG-4 ASP Stream um die 10% CPU-Leistung gebraucht. Dies bedeutet, dass Decodierung von High-Definition-Streams für die meisten Benutzer außer Frage steht. Es bedeutet auch, dass sogar ein ordentlicher DVD-Rip auf Prozessoren langsamer als 2.0 GHz oder so ins Stocken geraten kann.

Zumindest bei `x264` sind die Anforderungen für die Encodierung nicht so viel schlimmer als das, was du von MPEG-4 ASP bereits kennst. Beispielsweise läuft eine DVD-Encodierung auf einem 1733 MHz Athlon bei etwa 5-15 fps.

Dieses Dokument hat nicht die Absicht, die Details von H.264 zu erklären, wenn du aber an einer ausführlichen Übersicht interessiert bist, kannst du dir The H.264/AVC Advanced Video Coding Standard: Overview and Introduction to the Fidelity Range Extensions durchlesen.

#### 7.1.3.3. Wie kann ich H.264-Videos mit MPlayer abspielen?

MPlayer benutzt den H.264-Decoder von `libavcodec`. `libavcodec` hat minimal nutzbare H.264-Decodierung seit etwa Juli 2004, seitdem wurden jedoch große Änderungen und Verbesserungen implementiert, sowohl hinsichtlich mehr unterstützten Funktionen als auch CPU-Last. Um einfach sicher zu sein, ist es immer eine gute Idee, einen aktuellen Subversion-Checkout zu verwenden.

Eine schnelle und einfache Methode, festzustellen, ob kürzlich Änderungen am H.264-Decoder von `libavcodec` gemacht wurden, wirf einen Blick auf das Web-Interface des Subversion-Repository von FFmpeg.

#### 7.1.3.4. Wie kann ich Videos mit MEncoder und `x264` encodieren?

Wenn du den Subversion-Client installiert hast, erhältst du die aktuellen Sourcen mit folgendem Befehl:

    svn co svn://svn.videolan.org/x264/trunk x264

MPlayer-Sourcen werden immer aktualisiert, wenn sich die API von `x264` ändert, daher ist es immer gut, auch MPlayer von Subversion zu benutzen. Möglicherweise ändert sich das, wenn und falls es ein `x264`-"Release" gibt. Bis dahin sollte `x264` hinsichtlich der Programmierschnittstelle als sehr unstabil betrachtet werden.

`x264` wird gebaut und installiert nach Standardmethode:

    ./configure && make && sudo make install

Dies installiert libx264.a nach /usr/local/lib, und x264.h landet in /usr/local/include. Mit der `x264`-Bibliothek und dem Header in den Standardverzeichnissen ist es leicht, MPlayer mit `x264`-Unterstützung zu bauen. Führe die Standardformel aus:

    ./configure && make && sudo make install

Das configure-Script wird automatisch erkennen, dass du die Bedingungen für `x264` erfüllst.

Zurück | Nach oben | Weiter
Kapitel 7. Codecs | Zum Anfang | 7.2. Audiocodecs