<?xml version="1.0" encoding="utf-8"?>
<!-- in sync with r23538 -->
<!-- missing cosmetic commit 21537 -->
<chapter id="containers">
  <title>Containerformate</title>

  <para>
    Es ist wichtig, einen häufigen Fehler zu berichtigen. Wenn Leute eine
    Datei mit <filename>.AVI</filename>-Erweiterung sehen, denken
    sie sofort, es sei keine MPEG-Datei. Das ist nicht wahr. Zumindest
    nicht ganz. Im Gegensatz zur verbreiteten Ansicht
    <emphasis>kann</emphasis> solch eine Datei MPEG1-Video
    enthalten.
  </para>

  <para>
    Ein <emphasis role="bold">Codec</emphasis> ist nicht dasselbe wie ein
    <emphasis role="bold">Datei-/Containerformat</emphasis>.
    Beispiele für <emphasis role="bold">Video-Codecs</emphasis> sind:
    MPEG1, MPEG2, DivX, Indeo5, 3ivx. Beispiele für
    <emphasis role="bold">Dateiformate</emphasis> sind: MPG, AVI, ASF.
  </para>

  <para>
    Theoretisch kannst du ein OpenDivX-Video und MP3-Audio in einer
    <emphasis role="bold">.MPG</emphasis>-Datei vereinigen. Die meisten
    Player könnten es jedoch nicht abspielen, da sie MPEG1-Video und
    MP2-Audio erwarten (im Gegensatz zu
    <emphasis role="bold">AVI</emphasis> besitzt <emphasis role="bold">MPG</emphasis>
    nicht die nötigen Felder, die die Video- und Audio-Streams
    beschreiben). Oder du könntest ein MPEG1-Video in ein .AVI legen.
    <ulink url="http://ffmpeg.org/"><application>ffmpeg</application></ulink>
    und
    <link linkend="mencoder"><application>MEncoder</application></link> können
    solche Dateien erzeugen.
  </para>


  <sect1 id="video-formats">
    <title>Videoformate</title>

    <sect2 id="mpg-vob-dat">
      <title>MPEG-Dateien</title>

      <para>
        MPEG-Dateien treten in unterschiedlichen Erscheinungen auf:
      </para>

      <itemizedlist>
        <listitem>
          <para>
            MPG: Dies ist die <emphasis role="bold">grundlegende</emphasis>
            Form des MPEG-Dateiformates.
            Es enthält MPEG1-Video und MP2-(MPEG-1 Layer 2) oder selten MP1-Audio.
          </para>
        </listitem>
        <listitem>
          <para>
            DAT: Dies ist dasselbe Format wie MPG mit einer anderen
            Endung. Es wird auf <emphasis role="bold">Video-CD</emphasis>s benutzt.
            Auf Grund der Tatsache, wie VCDs erzeugt werden und wie Linux entworfen
            wurde, kann man die DAT-Dateien einer VCD weder abspielen noch kopieren.
            Du musst die Option <option>-vcd</option> zum Abspielen einer Video-CD
            verwenden.
          </para>
        </listitem>
        <listitem>
          <para>
            VOB: VOB ist das MPEG-Dateiformat bei <emphasis role="bold">DVD</emphasis>s.
            Es ist das gleiche wie MPG mit zusätzlicher Unterstützung für Untertitel
            oder nicht-MPEG-(AC3)-Audio. Es enthält MPEG-2-Video und normalerweise
            AC3-Audio, aber auch DTS, MP2 und unkomprimierte LPCMs sind erlaubt.
            <emphasis role="bold">Lies die <link linkend="dvd">DVD-Sektion</link>!</emphasis>
          </para>
        </listitem>
        <listitem>
          <para>
            TY: Dies ist ein TiVo MPEG-Stream. Er enthält gleichermaßen MPEG-PES-Daten
            für Audio- und Video-Streams wie auch extra Informationen wie geschlossene
            Titel. Der Container ist kein MPEG-Programmstream, sondern ein geschlossenes,
            von TiVo erzeugtes Format. Mehr Informationen zum TiVo-Streamformat
            findest Du auf der
            <ulink url="http://dvd-create.sourceforge.net/tystudio/tystream.shtml">TyStudio-Seite</ulink>.
          </para>
        </listitem>
      </itemizedlist>

      <para>
        Serien von Frames bilden unabhängige Gruppen in MPEG-Dateien. Dies
        bedeutet, dass du eine MPEG-Datei mit einem Standard-Dateitool (wie
        <command>dd</command> oder <command>cut</command>)
        schneiden und zusammenfügen kannst und dieses trotzdem vollständig
        funktionsfähig bleibt.
      </para>

      <para>
        Ein wichtiges Feature von MPGs ist, dass sie ein Feld besitzen, welches das
        Breiten-/Höhenverhältnis des Videostreams angibt. SVCDs haben zum
        Beispiel Video mit einer Auflösung von 480x480, und im Header ist dieses
        Feld auf 4:3 gesetzt. Also wird es als 640x480 abgespielt. AVI-Dateien fehlt
        dieses Feld oft, sodass diese während des Encodierens skaliert werden
        müssen oder die Option <option>-aspect</option> bei der Wiedergabe verwendet
        werden muss.
      </para>
    </sect2>


    <sect2 id="avi">
      <title>AVI-Dateien</title>

      <para>
        <emphasis role="bold">AVI (Audio Video Interleaved)</emphasis> ist ein
        von Microsoft entworfenes und weitverbeitetes Multifunktionsformat, das
        zur Zeit hauptsächlich für DivX- und DivX4-Videos verwendet wird. Es
        hat einige bekannte Nachteile, und ihm fehlen ein paar wichtige Features
        (zum Beispiel Streaming). Es unterstützt einen Videostream und 0 bis
        99 Audiostreams. Die Dateien können bis zu 2 GB groß sein. Es existiert
        eine Erweiterung für größere Dateien, genannt <emphasis role="bold">OpenDML</emphasis>.
        Microsoft rät von der Verwendung dringend ab und propagiert ASF/WMV.
        Als ob das irgendwen kratzen würde.
      </para>

      <para>
        Es gibt einen Hack, der es AVI-Dateien erlaubt, Ogg Vorbis Audio-Streams zu
        enthalten, was sie aber auch inkompatibel zu Standard-AVIs macht.
        <application>MPlayer</application>
        unterstützt die Wiedergabe solcher Dateien. Eine Spulfunktion ist auch
        implementiert, jedoch wird diese stark von schlecht konvertierten Dateien mit
        verwirrenden Headern gestört. Leider schreibt der einzige Encodierer, der
        fähig ist, solche Dateien zu erzeugen (<application>NanDub</application>),
        solch problematische Header.
      </para>

      <note>
        <para>
          DV-Kameras können Raw-DV-Streams erzeugen, welche von DV-Aufnahmetools
          in zwei unterschiedliche Typen von AVI-Dateien konvertiert werden. Die
          AVI-Datei enthält dabei entweder separate Audio- und Video-Streams, die
          <application>MPlayer</application> wiedergeben kann, oder den unveränderten
          DV-Stream. An dessen Unterstützung wird gerade gearbeitet.
        </para>
      </note>

      <para>
        Es gibt 2 Arten von AVI-Dateien:
        <itemizedlist>
          <listitem>
            <para>
              <emphasis role="bold">Interleaved:</emphasis> Audio- und Videoinhalt
              werden paketweise ineinander geschachtelt. Die ist üblich, wird empfohlen
              und auch meist gemacht. Einige Tools erzeugen interleaved AVIs mit
              schlechter Synchronisation.
              <application>MPlayer</application> erkennt diese als interleaved, was
              zum Verlust von A/V-Synchronisation führen kann (evtl. erst beim Vor-/Zurückspulen).
              Diese Dateien sollten non-interleaved (mit der Option <option>-ni</option>)
              abgespielt werden.
            </para>
          </listitem>
          <listitem>
            <para>
              <emphasis role="bold">Non-interleaved:</emphasis> Als erstes kommt der
              ganze Videostream, dann der ganze Audiostream. Dies erfordert viel
              Suchen in der Datei, was die Wiedergabe vom Netzwerk oder von CDROM schwierig
              macht.
            </para>
          </listitem>
        </itemizedlist>
      </para>

      <para>
        <application>MPlayer</application> unterstützt zwei Arten des Timings für
        AVI-Dateien:
        <itemizedlist>
          <listitem>
            <para>
              <emphasis role="bold">bps-basiert</emphasis>: Diese Methode basiert auf
              der Bitrate/Samplerate des Video-/Audiostreams. Diese Methode wird von den
              meisten Playern verwendet, inklusive
              <ulink url="http://avifile.sf.net">avifile</ulink>
              und <application>Windows Media Player</application>. Dateien mit kaputten
              Headern und Dateien, welche mit VBR-Audio aber nicht VBR-unterstützendem
              Encoder erstellt wurden, führen mit dieser Methode zu A/V-Desynchronisation
              (meistens beim Spulen).
            </para>
          </listitem>
          <listitem>
            <para>
              <emphasis role="bold">interleaving-basiert</emphasis>: Diese Methode benutzt
              nicht mehr den Wert der Bitrate sondern die relative Position des
              Audio-Paketes zum aktuellen Video-Paket, was einige falsch codierte
              Dateien mit VBR-Audio abspielbar macht.
            </para>
          </listitem>
        </itemizedlist>
      </para>

      <para>
        Jeglicher Audio- und Video-Codec ist erlaubt. Aber bedenke, dass VBR-Audio
        von den meisten Playern nicht gut unstützt wird. Das Dateiformat macht es
        möglich, VBR-Audio zu verwenden, aber die meisten Player erwarten CBR-Audio,
        weswegen VBR-Audio nicht funktioniert. VBR ist ungewöhnlich, und
        Microsofts Spezifikation zu AVI beschreibt nur CBR-Audio. Bedenke auch, dass
        die meisten AVI-Encoder/Multiplexer schlechte Dateien mit VBR-Audio erzeugen.
        Es gibt nur zwei Ausnahmen: <application>NanDub</application> und
        <link linkend="mencoder"><application>MEncoder</application></link>.
      </para>
    </sect2>


    <sect2 id="asf-wmv">
      <title>ASF/WMV-Dateien</title>
      <para>
        ASF (Active Streaming Format) kommt von Microsoft. Sie haben zwei Arten von
        ASF entwickelt, v1.0 und v2.0. v1.0 wird von ihren Media Tools
        (<application>Windows Media Player</application> und
        <application> Windows Media Encoder</application>) verwendet und ist streng
        geheim. v2.0 ist veröffentlicht und patentiert :). Natürlich sind sie
        unterschiedlich und besitzten überhaupt keine Gemeinsamkeiten (es ist nur
        ein weiteres Spiel mit den Gesetzen). <application>MPlayer</application>
        unterstützt nur v1.0, weil noch niemand v2.0 Dateien gesehen hat :).
        Beachte, dass .ASF-Dateien heute auch mit der Extension <filename>.WMA</filename>
        oder <filename>.WMV</filename> vorkommen.
      </para>
    </sect2>


    <sect2 id="mov">
      <title>QuickTime/MOV-Dateien</title>

      <para>
        Diese Formate sind von Apple entworfen und können jeden beliebigen Codec
        enthalten, CBR oder VBR. Normalerweise haben sie die Endung <filename>.QT</filename>
        oder <filename>.MOV</filename>.
        Seitdem die MPEG4-Gruppe QuickTime als das empfohlene Dateiformat für
        MPEG4 ausgewählt hat, kommen ihre .MOV-Dateien mit den Endungen
        <filename>.MPG</filename> oder <filename>.MP4</filename> daher.
        (Interessanterweise sind bei diesen Dateien die Video- und Audiostreams
        richtige MPG- und AAC-Dateien. Mit den den Optionen <option>-dumpvideo</option>
        und <option>-dumpaudio</option> kannst du sie sogar extrahieren).
      </para>

    </sect2>


    <sect2 id="vivo">
      <title>VIVO-Dateien</title>

      <para>
        <application>MPlayer</application> demuxt nun auch fröhlich VIVO-Dateiformate.
        Der grösste Nachteil des Formates ist, dass es keinen Index-Block besitzt,
        auch keine fixe Paketgröße oder Sync-Bytes. Die meisten Dateien
        besitzen nicht mal Keyframes, also vergiss das Spulen!
      </para>

      <para>
        Der Videocodec von VIVO/1.0-Datei ist Standard-<emphasis role="bold">h.263</emphasis>.
        Der Videocodec der VIVO/2.0 Dateien ist veränderter,
        nichtstandard-<emphasis role="bold">h.263</emphasis>. Bei
        Audio ist es dasselbe, es ist <emphasis role="bold">g.723</emphasis> (Standard)
        oder <emphasis role="bold">Vivo Siren</emphasis>.
      </para>

    </sect2>


    <sect2 id="fli">
      <title>FLI-Dateien</title>
      <para>
        <emphasis role="bold">FLI</emphasis> ist ein sehr altes vom
        <application>Autodesk Animator</application> benutztes Dateiformat.
        Es ist aber immer noch ein im Internet gebräuchliches Dateiformat für
        kurze Animationen. <application>MPlayer</application> demuxt und
        decodiert FLI-Filme und ist sogar fähig, in ihnen vor- und zurückzuspulen
        (nützlich, wenn man looping mit der Option <option>-loop</option> aktiviert
        hat). FLI-Dateien haben keine Keyframes, was zu verunstalteten Bildern kurz
        nach dem Spulen führt.
      </para>
    </sect2>


    <sect2 id="realmedia">
      <title>RealMedia-(RM)-Dateien</title>

      <para>
        Ja, <application>MPlayer</application> kann RealMedia-Dateien
        (<filename>.rm</filename>) lesen (demuxen).
      </para>
    </sect2>


    <sect2 id="nuppelvideo">
      <title>NuppelVideo-Dateien</title>
      <para>
        NuppelVideo
        ist, soweit ich weiss, ein TV-Aufnahmeprogramm. <application>MPlayer</application>
        kann dessen <filename>.NUV</filename>-Dateien (nur NuppelVideo 5.0) lesen.
        Diese Dateien können unkomprimierte YV12-, komprimierte YV12+RTJpeg-,
        komprimierte YV12-RTJpeg+lzo- und komprimierte YV12+lzo-Frames enthalten, welche
        <application>MPlayer</application>
        alle decodiert (und diese auch mit <application>MEncoder</application> zu
        MPEG4 (DivX)/etc!) <emphasis role="bold">encodiert</emphasis>).
        Spulen funktioniert.
      </para>
    </sect2>


    <sect2 id="yuv4mpeg">
      <title>yuv4mpeg-Dateien</title>
      <para>
        <ulink url="http://mjpeg.sf.net">yuv4mpeg / yuv4mpeg2</ulink> ist ein
        Dateiformat, das von den <ulink url="http://mjpeg.sf.net">mjpegtools-Programmen</ulink>
        verwendet wird. Du kannst damit Video in diesem Format einlesen, produzieren,
        filtern oder encodieren. Das Dateiformat ist eigentlich eine Sequenz
        unkomprimierter YUV 4:2:0 Bilder.
      </para>
    </sect2>


    <sect2 id="film">
      <title>FILM-Dateien</title>
      <para>
        Dieses Format wird auf alten Sega Saturn CD-ROM-Spielen verwendet.
      </para>
    </sect2>


    <sect2 id="roq">
      <title>RoQ-Dateien</title>
      <para>
        RoQ-Dateien sind Multimedia-Dateien, welche in gewissen ID-Spielen wie
        Quake III und Return to castle Wolfenstein benutzt werden.
      </para>
    </sect2>


    <sect2 id="ogg">
      <title>OGG/OGM-Dateien</title>
      <para>
        Dies ist ein neues Dateiformat von
        <ulink url="http://www.xiph.org">Xiphophorus</ulink>. Es kann beliebige
        Video- und Audio-Codecs enthalten, sowohl CBR als auch VBR. Man benötigt
        dazu installierte <systemitem class="library">libogg</systemitem>- und
        <systemitem class="library">libvorbis</systemitem>-Bibliotheken vor
        der Kompilierung von <application>MPlayer</application>, um sie wiedergeben
        zu können.
      </para>
    </sect2>


    <sect2 id="sdp">
      <title>SDP-Dateien</title>
      <para>
        <ulink url="ftp://ftp.rfc-editor.org/in-notes/rfc2327.txt">SDP</ulink> ist ein
        IETF-Standardformat, das Video- und/oder Audio-RTP-Streams beschreibt.
        (Dazu werden die
        "<ulink url="http://www.live555.com/mplayer/">LIVE555 Streaming Media</ulink>"-Bibliotheken
        benötigt.)
      </para>
    </sect2>


    <sect2 id="pva">
      <title>PVA-Dateien</title>
      <para>
        PVA ist ein MPEG-ähnliches Format, das von verschiedenen Programmen
        benutzt wird, die bei DVB-TV-Karten mitgeliefert werden (z.B.
        <application>MultiDec</application>, <application>WinTV</application>
        unter Windows).
      </para>
    </sect2>


    <sect2 id="nsv">
      <title>NSV-Dateien</title>
      <para>
        NSV (NullSoft Video) ist das vom
        <application>Winamp</application>-Player zum Streamen von Audio und Video
        verwendete Dateiformat.
        Video ist VP3, VP5 oder VP6, Audio is MP3, AAC oder VLB.
        Die Nur-Audio-Version von NSV hat die Erweiterung <filename>.nsa</filename>.
        <application>MPlayer</application> kann beides abspielen, NSV-Streams und -Dateien.
        Beachte bitte, dass die meisten Dateien von der
        <ulink url="http://www.winamp.com">Winamp-Seite</ulink> VLB-Audio verwenden, welches
        noch nicht decodiert werden kann. Darüber hinaus benötigen Streams von dieser Seite
        einen extra Layer zum Extrahieren der Pakete, der immer noch auf seine Implementierung
        wartet (diese Dateien sind ohnehin nicht abspielbar, weil sie VLB-Audio verwenden).
      </para>
    </sect2>


    <sect2 id="matroska">
      <title>Matroska-Dateien</title>
      <para>
        Matroska ist ein offenes Containerformat.
        Lies mehr dazu auf der <ulink url="http://www.matroska.org/">offiziellen Site</ulink>.
      </para>
    </sect2>


    <sect2 id="nut">
      <title>NUT -Dateien</title>
      <para>
        NUT ist das von <application>MPlayer</application>- und
        <application>FFmpeg</application>-Leuten entwickelte Containerformat.
        Beide Projekte unterstützen es.
        Lies mehr dazu auf der <ulink url="http://www.nut.hu/">offiziellen Site</ulink>.
      </para>
    </sect2>


    <sect2 id="gif">
      <title>GIF-Dateien</title>
      <para>
        Das <emphasis role="bold">GIF</emphasis>-Format ist ein weit verbreitetes Format
        für Grafiken im Web. Es gibt zwei Versionen der GIF-Spezifikationen, GIF87a und
        GIF89a.
        Der größte Unterschied liegt darin, dass GIF89a Animationen erlaubt.
        <application>MPlayer</application> unterstützt beide Formate mit
        Hilfe der <systemitem class="library">libungif</systemitem>-Bibliothek oder
        einer anderen libgif-kompatiblen Bibliothek.
        Nicht-animierte GIFs werden als Ein-Bild-Videos dargestellt. (Mit den
        Optionen <option>-loop</option> und <option>-fixed-vo</option> können solche
        GIFs länger angezeigt werden.)
      </para>

      <para>
        Momentan unterstützt <application>MPlayer</application> das Spulen
        in GIF-Dateien nicht. Die einzelnen Bilder in GIF-Dateien haben nicht zwangsläufig
        die gleichen Dimensionen, und auch nicht eine feste Bildrate. Jedes Bild hat
        vielmehr seine eigenen Dimensionen und soll an einer bestimmten Position auf
        einem Bereich angezeigt werden, der selbst aber eine feste Größe hat.
        Die Bildrate wird von einem optionalen Block vor jedem Bild kontrolliert,
        der die Anzeigedauer des auf ihn folgenden Bildes in hundertstel Sekunden angibt.
      </para>

      <para>
        Standard-GIF-Dateien enthalten 24 Bit RGB-Bilder mit einer indizierten
        Palette, die höchstens bis 8 Bit geht. Die Bilder sind normalerweise
        mit dem LZW-Algorithmus komprimiert. Es gibt aber auch GIF-Encoder, die
        unkomprimierte Bilder erzeugen, um die Patentprobleme mit dem LZW-Algorithmus
        zu umgehen.
      </para>

      <para>
        Wenn bei deiner Distribution die <systemitem class="library">libungif</systemitem>
        nicht dabei ist, dann lade sie
        von der <ulink url="http://sourceforge.net/projects/libungif">libungif-Homepage</ulink>
        herunter. Detaillierte technische Informationen findest
        du in den
        <ulink url="http://www.w3.org/Graphics/GIF/spec-gif89a.txt">GIF89a-Spezifikationen</ulink>.
      </para>
    </sect2>
  </sect1>

  <!-- ********** -->

  <sect1 id="audio-formats">
    <title>Audioformate</title>

    <para>
      <application>MPlayer</application> ist ein <emphasis role="bold">Movie</emphasis>-
      und kein <emphasis role="bold">Media</emphasis>-Player.
      Er kann auch einige Audioformate wiedergeben (diese sind in der unteren
      Sektion beschrieben). Dies ist jedoch nicht die empfohlene Verwendung von
      <application>MPlayer</application>, du solltest besser
      <ulink url="http://www.xmms.org">XMMS</ulink> verwenden.
    </para>

    <sect2 id="mp3">
      <title>MP3-Dateien</title>
      <para>
        Du hast vielleicht Probleme mit der Wiedergabe bestimmter MP3-Dateien, die
        <application>MPlayer</application> fälschlicherweise als MPEGs erkennt und
        dementsprechend falsch oder gar nicht wiedergibt. Dies kann nicht gelöst
        werden, ohne die Unterstützung für einige kaputte MPEG-Dateien aufzugeben
        und wird deshalb bis auf weiteres so bleiben. Die Option
        <option>-demuxer</option>, welche in der Manpage beschrieben wird, könnte
        dir in diesen Fällen helfen.
      </para>
    </sect2>

    <sect2 id="ogg-vorbis">
      <title>OGG/OGM-Dateien (Vorbis)</title>
      <para>
        Benötigt richtig installierte
        <systemitem class="library">libogg</systemitem> und
        <systemitem class="library">libvorbis</systemitem>.
      </para>
    </sect2>

    <sect2 id="cdda">
      <title>CD-Audio</title>
      <para>
        <application>MPlayer</application> kann die Bibliotheken von
        <application>cdparanoia</application>
        benutzen, um CDDA-Dateien (Audio CD) wiederzugeben. Alle
        Features von <application>cdparanoia</application>
        aufzuzählen gehört nicht zu den Aufgaben dieser Dokumentation.
      </para>

      <para>
        Schau in der Manpage bei der Option <option>-cdda</option> nach, wie mit ihr
        Parameter an <application>cdparanoia</application> übergeben
        werden können.
      </para>
    </sect2>

    <sect2 id="xmms">
      <title>XMMS</title>
      <para>
        <application>MPlayer</application> kann <application>XMMS</application>-Inputplugins
        benutzen, um eine Vielzahl von Dateiformaten abzuspielen. Es gibt Plugins für
        SNES-Spielemusik, SID-Musik (vom guten alten Commodore 64), viele Amiga-Formate,
        .xm, .it, VQF, musepack, Bonk shorten und viele weitere. Du findest sie
        auf der Seite für
        <ulink url="http://www.xmms.org/plugins.php?category=input">XMMS-Inputplugins</ulink>.
      </para>

      <para>
        Um dieses Feature benutzen zu können, brauchst du <application>XMMS</application>
        und musst <application>MPlayer</application> mit
        <filename>./configure --enable-xmms</filename> compilieren.
        Funktioniert dies nicht, dann musst du eventuell die Pfade für die
        <application>XMMS</application>-Plugins und die
        <application>XMMS</application>-Bibliotheken explizit mit
        <option>--with-xmmsplugindir</option> und <option>--withxmmslibdir</option>
        angeben.
      </para>
    </sect2>
  </sect1>

</chapter>
