2.4. Enkodieren mit MEncoder

2.4.1. Übersicht

MEncoder (MPlayers Movie Enkoder) ist ein einfacher Filmenkoder, entworfen um Filme, die mit MPlayer abspielbar sind (AVI/DVD/VCD/VOB/MPG/MOV/VIV/NET), in ein anderes von MPlayer abspielbares Format (siehe unten) zu enkodieren. Zur Zeit ist es noch im Beta-Stadium und es enkodiert nur DivX4 (1 oder 2 Passes) Video und PCM/MP3/VBRMP3 Audio. Es verfügt auch stream-copy-Funktion. In Zukunft wird es auch zuscheiden des Videos, ändern der Größe und andere andere interessante Sachen beherrschen.

Kompilierung

Du bist fertig. Wie du möglichweise weisst benötigen andere Enkoder avifile. MEncoder braucht diese überhaupt nicht.

MEncoder Features

:

Geplante Features

:

2-Pass DivX4 Enkodierung

Der Name kommt in der Tat daher, dass diese Methode die Datei zwei Mal enkodiert. Das erste Enkodieren (1.

Pass [=Durchlauf]) erzeugt einige temporäre Dateiei (*.log) mit einer Dateigröße von nur wenigen, lösche sie nicht (du kannst die AVI löschen). Im zeiten Pass wird die Ausgabedatei erzeugt, unter Verwendung der Bitraten-Daten der temporären Datei. Die entgültige Datei wird eine bessere Bildqualität besitzen. Wenn dies das erst Mal ist das du davon hörst, solltest du einige Guides in Internet lesen.

Dieses Beispiel zeigt dir, wie du eine DVD in ein 2-Pass DivX4 AVI enkodierst. Nur 2 Befehle sind erforderlich:
    mencoder -dvd 2 -ovc divx4 -oac mp3lame -divx4opts br=1100 -o movie.avi -pass 1
    mencoder -dvd 2 -ovc divx4 -oac mp3lame -divx4opts br=1100 -o movie.avi -pass 2

3-pass Enkodierung : Dies ist eine Erweiterung der 2-Pass Enkodierung, in der die Kodierung von Audio in einem separaten Schritt vollzogen wird. Diese Methode erlaubt die Untersuchung der empfohlenen Video-Bitrate um auf eine CD zu passen. Auch wird der Ton nur einmal kodiert im Unterschied zum 2-Pass.

rm frameno.avi Lösche störende temporöre Dateien
mencoder <file/DVD> -ovc frameno -o frameno.avi Erster Schritt: Pass 1 : Eine Audio-only avi Datei wird erzeugt, welche NUR den verlangten Audiostream enthält. Vergiss nicht -lameopts zu setzen, wenn du sie setzen musst. Wenn du einen langen Film enkodierst, zeigt MEncoder die empfohlenen Bitraten-werte an für 650Mb, 700Mb und 800Mb Endgrössen, wenn er diesen Schritt beendet hat.
mencoder <file/DVD> -oac copy -pass 1 -divx4opts br=<bitrate> Zweiter Schritt: Pass 2 : Integriert den ersten Schritt der DivX4 Video-Enkodierung. Optional kann die Video-Bitrate, welche am Ende des letzten Schrittes gezeigt wurde, hier definiert werden.
mencoder <file/DVD> -oac copy -pass 2 -divx4opts br=<bitrate> Dritter Schritt: Pass 3 : Integriert den zweiten Schritt der DivX4 Video Enkodierung. Optional kann die Video-Bitrate, welche am Ende des letzten Schrittes gezeigt wurde, In diesem Schritt wird der Ton vom frameno.avi in die endgültige Datei eingefügt und es ist alles bereit!

Beispiel einer 3-pass Enkodierung :

    rm frameno.avi - Lösche diese Datei, welche von einer früheren Enkodierung kommen kann (Sie führt zu einem Konflikt mit der momentanen)
    mencoder -dvd 2 -ovc frameno -o frameno.avi
    mencoder -dvd 2 -divx4opts br=1100 -oac copy -o movie.avi -pass 1
    mencoder -dvd 2 -divx4opts br=1100 -oac copy -o movie.avi -pass 2

Rescaling von Filmen

Oftmals ist die Änderung der Bildgröße erforderlich. Die Gründe darfür können verschieden sein, Beispiele sind das Verkleinern des Ausgabenbildes oder das Enkodieren von SVCD zu DivX. Bei gerippt DVDs wurde meinst die Größe geändert, zum Beispiel eine 4:3 DVD sollte 640x480 Pixel haben, insbesonders wenn es auf eine CD passen soll and eine gute Bildqualität zugleich aufweisen soll. SVCDs haben eine Größe von 480x480, wobei ihr Header jedoch die "Aspect Ratio" für den Player enthält (z.B.: 480x480 + 4:3 = 640x480). Wie auch immer, wenn du in eine AVI (DivX) Datei enkodierst musst du bedenken, dass der Header von AVI Dateien keine solche Infomation enthält. Darum ist die einzige Möglichkeit das Ändern das Auslösung.

Die Ausgabegröße wird mit der -x und -y Option angeben. Zusätzlich gibt es noch 3 verschiedene Filter für Rescaling in MEncoder, 0 : fast (schnell) 1 : bilinear, 2 : bilinear, bicubic (beste Qualität). Diese können mit der -sws Option ausgewählt werden. Wenn nichts angeben wird verwendet MEncoder 0 : fast bilinear.

Rescaling ist sehr einfach:
    mencoder sample-svcd.mpg -divx4opts br=1300 -x 640 -y 480 -sws 2 -o output.avi

Stream-Copy

MEncoder kann Input-Streams auf zwei Arten behandeln: enkodieren oder kopieren (copy). Diese Sektion erklärt das Kopieren copying.

  • Videostreams (Option -ovc copy) : nette Sachen können erledigt werden :)
    Wie das Geben von FLI oder VIVO oder MPEG1 Video in eine AVI Datei! Natürlich kann nur MPlayer solche Dateien abspielen :) Und vermutlich hat es auch keine Überlebensqualität. Das Kopieren von Videostream kann nützlicher sein, wenn man zum Beispiel nur den Audiostream enkodieren will (z.B.: umkomprimiertes PCM zu MP3).
  • Audiostreams (Option -oac copy) : siehe oben.

Reparieren von AVIs mit defektem Index oedr Interleaving

Einfache Sache. Wir kopieren einfach die Video- und Audiostreams und MEncoder erzeugt das Index. Natürlich kann das keine Fehler in den Video- und/oder Audiostreams lösen. Es kann auch Dateien mit kaputten Interleaving reparieren, so dass die Option -ni für diese nicht mehr gebraucht wird.

Befehl: mencoder input.avi -ovc copy -oac copy -o output.avi

2.4.3.5. Enkodierung mit der libavcodec Codec-Familie

libavcodec bietet eine einfache Enkodierung für viele interessante Video und Audio Formate (momentan sind deren Audio Codecs nicht unterstützt). Du kannst zu folgenden Codecs enkodieren:

Die erste Kolonne enthält den Codec-Name der nach dem vcodec Config übergeben werden sollte, wie z.B.: -lavcopts vcodec=msmpeg4

Ein Beispiel mit MJPEG Kompression :
    mencoder -dvd 2 -o title2.avi -ovc lavc -lavcopts vcodec=mjpeg

Syntax

  mencoder [Optionen] [Eingangsdatei] [Optionen] ...

Verfügbare Optionen

HINWEIS: lese die Manpage für alle verfügbaren Optionen!

   -o Dateiname    definiert den Namen der Ausgabedatei
   -x Breite in Pixel    ändert die Videoausgabe auf die angegebene Anzahl von Pixel
   -y Höhe in Pixel    ändert die Videoausgabe auf die angegebene Anzahl von Pixel
   -sws 0-2    Arte der Scaling-Methode
  0 - fast bilinear
  1 - bilinear
  2 - bicubic (beste Qualität)
   -ovc Codecname    Enkodiert mit dem angegebenen Codec (Codecnamen sind von codecs.conf). Beispiele:
  help - zeigt eine Liste der verfügbaren Codecs an
  copy - kein Enkodieren, kopiert den Stream (nur von AVI/ASF zur Zeit)
  divx4 - enkodiert zu DivX4
   -oac Codecname    Enkodiert mit dem angegebenen Codec (Codecnamen sind von codecs.conf). Beispiele:
  help - zeigt eine Liste der verfügbaren Codecs an
  copy - kein Enkodieren, kopiert den Stream (nur von AVI/ASF zur Zeit)
  pcm - enkodierten zu einem unkomprimiertem PCM
  mp3lame - enkodiert zu MP3 (verwendet Lame)
   -divx4opts    Wenn du zu DivX4 enkodierst kannst du hier die Parameter angeben, wie z.B.:
  -divx4opts br=1800:deinterlace:key=250
Allgemeine Optionen: (für eine vollständige Liste siehe Mapage!)
  help - zeigt die Hilfe
  br=XXX - gibt die Bitrate in kBit <4-16000> oder Bit <16001-24000000> an
  q=XXXX - Qualität (1-schnellste, 5-beste - standard 5)
-lavcopts Wenn du mit der libavcodec enkodierst, kannst du deren Parameter hier angeben, wie:
  -lavcopts vcodec=msmpeg4:vbitrate=1800:vhq:keyint=250
Häufige Optionen: (Lies in der Manpage für die vollstöndige Liste!)
  help - zeigt die Hilfe
  vcodec=XXX - wählt den Videocodec (Siehe in der libavcodec Sektion unten nach für die vollständige Liste)
  vbitrate=XXX - gibt die Bitrate in kbit <4-16000> oder bit <16001-24000000> an
  vhq - hohe Qualität
  keyint=XXX - Keyframe Interval
   -lameopts    Wenn du zu MP3 mit libmp3lame enkodierst kannst du hier die Parameter angeben, wie z.B.:
  -lameopts q=3
  -lameopts br=192:cbr
Allgemeine Optionen: (für eine vollständige Liste siehe Manpage!)
  help - zeigt die Hilfe
  cbr - wählt CBR MP3 (standard ist VBR)
  br=XXX - definiert die Bitrate in <0-1024> (dies ist nur für CBR!)
  q=XXXX - Qualität (0-höchste, 9-schnellste - standard 0) (dies ist nur für VBR!)

Beispiele

Die Verwendung von MEncoder ist das Einfachste auf das Erde. Siehe folgendes:

Enkodierung von DVD, Titel 2:
    mencoder -dvd 2 -o title2.avi

Das gleiche, aber mit der libavcodec Familie, MJPEG compression :
    mencoder -dvd 2 -o title2.avi -ovc lavc -lavcopts vcodec=mjpeg -ffourcc mjpg

Enkodierung von DVD, Title 2, mit Rescaling:
    mencoder -dvd 2 -x 640 -y 480 -sws 2 -o title2.avi

Enkodierung von HTTP:
    mencoder http://mplayer.hq/example.avi -o example.avi

Enkodierung von Pipe:
    rar p test-SVCD.rar | mencoder -divx4opts br=800 -ofps 24 -pass 1 -- -

Enkodierung von mehreren *.vob-Dateien:
    cat *.vob | mencoder <options> -

Enkodierung vom Tuner (für Tuner-Option siehe die TV-Input Sektion!):
    mencoder -tv on:driver=v4l:width=640:height=480 <options>

Lies die MEncoder Manpage um alle verfügbaren Optionen zu sehen.