2.4. Encodieren mit MEncoder

MEncoder (MPlayer's Movie Encoder) ist ein einfacher Filmencoder, entworfen um Filme, die mit MPlayer abspielbar sind (AVI/ASF/OGG/DVD/VCD/VOB/MPG/MOV/VIV/FLI/RM/NUV/NET), in ein anderes von MPlayer abspielbares Format (siehe unten) zu encodieren. Er kann mehrere Codecs zur Encodierung benutzen, wie DivX4 (1, 2 oder 3 Pass), libavcodec und PCM/MP3/VBRMP3 Audio. Er verfügt auch über eine stream-copy-Funktion und kann die Grösse der Videos ändern.

2.4.1. Kompilierung

Du bist fertig. Wie du möglicherweise weisst, benötigen andere Encoder avifile. MEncoder braucht diese überhaupt nicht.

2.4.2. MEncoder Features

Geplante Features:

2.4.2.1. 2-Pass DivX4 Encodierung

2-pass Encodierung: Der Name kommt in der Tat daher, dass diese Methode die Datei zwei Mal encodiert. Das erste Encodieren (1.

Pass [=Durchlauf]) erzeugt einige temporäre Dateien (*.log) mit einer Dateigröße von nur wenigen, lösche sie nicht (du kannst die AVI löschen). Im zweiten Pass wird die Ausgabedatei erzeugt, unter Verwendung der Bitraten-Daten der temporären Datei. Die endgü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 encodierst. Nur 2 Befehle sind erforderlich:
    rm frameno.avi - Lösche diese Datei, welche von einer früheren Encodierung kommen kann (Sie führt zu einem Konflikt mit der momentanen)
    mencoder -dvd 2 -lavcopts vcodec=mpeg4:weitere_optionen -o film.avi -pass 1
    mencoder -dvd 2 -lavcopts vcodec=mpeg4:weitere_optionen -o film.avi -pass 2

3-pass Encodierung: Dies ist eine Erweiterung der 2-Pass Encodierung, in der die Kodierung von Audio in einem separaten Durchlauf 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. Das Schema:

rm frameno.avi Lösche störende temporäre Dateien
mencoder <datei/DVD> -ovc frameno -o frameno.avi Erster Durchlauf: 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 encodierst, zeigt MEncoder die empfohlenen Bitraten-werte an für 650Mb, 700Mb und 800Mb Endgrössen, wenn er diesen Durchlauf beendet hat.
mencoder <datei/DVD> -oac copy -pass 1 -ovc divx4 -divx4opts br=<bitrate> Zweiter Durchlauf: Integriert den ersten Durchlauf der DivX4 Video-Encodierung. Optional kann die Video-Bitrate, welche am Ende des letzten Durchlaufes gezeigt wurde, hier definiert werden.
mencoder <datei/DVD> -oac copy -pass 2 -ovc divx4 -divx4opts br=<bitrate> Dritter Durchlauf: Integriert den zweiten Durchlauf der DivX4 Video Encodierung. Optional kann die Video-Bitrate, welche am Ende des letzten Durchlaufes gezeigt wurde, In diesem Durchlauf wird der Ton vom frameno.avi in die endgültige Datei eingefügt und es ist alles bereit.

Beispiel einer 3-pass Encodierung:

    rm frameno.avi - Lösche diese Datei, welche von einer früheren Encodierung kommen kann (Sie führt zu einem Konflikt mit der momentanen)
    mencoder -dvd 2 -ovc frameno -o frameno.avi
    mencoder -dvd 2 -lavcopts vcodec=mpeg4:weitere_optionen -oac copy -o film.avi -pass 1
    mencoder -dvd 2 -lavcopts vcodec=mpeg4:weitere_optionen -oac copy -o film.avi -pass 2

2 oder 3-pass Encodierung unter Benutzung des internen libavcodec Kontrollers: Man kann optional libavcodec's internen 2 oder 3-pass Modus verwenden, welcher vielleicht zu einer besseren endgültigen Genauigkeitrate führt als bei der Benutzung des externen, DivX4-inspirierten 2-pass Kontrollers mit libavcodec.

2.4.2.2. Rescaling von Filmen

Oftmals ist die Änderung der Bildgröße erforderlich. Die Gründe dafür können verschieden sein, Beispiele sind das Verkleinern des Ausgabenbildes oder das Encodieren von SVCD zu DivX. Bei gerippt DVDs wurde meinst die Größe geändert, zum Beispiel eine 4:3 DVD sollte 640x480 Pixel haben, insbesondere wenn es auf eine CD passen soll und 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 encodierst musst du bedenken, dass der Header von AVI Dateien keine solche Information enthält. Darum ist die einzige Möglichkeit das Ändern das Auslösung.

Der Skalierungsprozess erfolgt durch den 'scale Videofilter: -vop scale=X:Y. Die Qualität kann durch die Option -sws angegeben werden. Wenn nichts angegeben ist verwendet MEncoder 0: fast bilinear.

Verwendung:
    mencoder beispiel-svcd.mpg -lavcopts vcodec=mpeg4:weitere_optionen -vop scale=640:480 -sws 2 -o ausgabe.avi

2.4.2.3. Stream-Copy

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

2.4.2.4. Reparieren von AVIs mit defektem Index oder 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 -idx eingabe.avi -ovc copy -oac copy -o ausgabe.avi

2.4.2.5. Encodierung mit der libavcodec Codec-Familie

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

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 titel2.avi -ovc lavc -lavcopts vcodec=mjpeg

2.4.2.6 Encodierung von mehreren Eingangsbildern (MJPEG/MPNG)

MEncoder kann Filme aus einer oder mehreren JPEG oder PNG Dateien. durch eine einfache Kopierung der Frames kann es MJPEG (Motion JPEG) oder MPNG (Motion PNG) Dateien erzeugen.

Erklärung des Prozesses

MEncoder decodiert das/die Eingangsbild(er) mit libjpeg (wenn PNGs decodiert werden, wird die libpng benutzt).

MEncoder führt die decodierten Bilder danach dem gewählten Videokompressor zu (DivX4, Xvid, ffmpeg msmpeg4, etc...). Der eingebaute PNG-Decoder, kann momentan leider nur RGB-Formate ausgeben und kann desshalb nicht mit Codecs, welche YUV als Input benötigen (wie Divx 4 oder ffmpeg's msmpeg4), gebraucht werden.

Beispiele

Die Erklärung der -mf Option kann unten, in der globalen Optionen Sektion und in den Manpages gefunden werden.

Erstellung einer DivX4-Datei aus allen JPEG-Dateien im momentanen Verzeichnis:
  mencoder \*.jpg -mf on:w=800:h=600:fps=25 -ovc divx4 -o ausgabe.avi

Erstellung einer DivX4-Datei aus einigen JPEG-Dateien im momentanen Verzeichnis:
  mencoder frame001.jpg,frame002.jpg -mf on:w=800:h=600:fps=25 -ovc divx4 -o ausgabe.avi

Erstellung einer Motion JPEG (MJPEG) Datei aus allen JPEG-Dateien im momentanen Verzeichnis:
  mencoder \*.jpg -mf on:w=800:h=600:fps=25 -ovc copy -o ausgabe.avi

Erstellung einer unkomprimierten Datei aus allen PNG-Dateien im momentanen Verzeichnis:
  mencoder \*.png -mf on:w=800:h=600:fps=25:type=png -ovc raw -o ausgabe.avi

Erstellung einer Motion PNG (MPNG) Datei aus allen PNG-Dateien im momentanen Verzeichnis:
  mencoder \*.png -mf on:w=800:h=600:fps=25:type=png -ovc copy -o ausgabe.avi

2.4.2.7. Extrahieren von DVD Untertiteln in eine Vobsub Datei

MEncoder kann Untertitel von einer DVD extrahieren und sie als Datei im Vobsub Format speichern. Dieses besteht aus einem Dateipaar (.sub und .idx) und wird gewähnlich in ein einziges .rar Archiv verpackt. MPlayer kann diese mit den Optionen -vobsub und -vobsubid wiedergeben.

Man gibt dabei den Basisnamen (ohne .idx oder .sub Endung) der Ausgabedatei mit der Option -vobsubout und den Index des Untertitels der Ausgabedatei mit der Option -vobsuboutindex an.

Wenn die Eingabe nicht von einer DVD stammt, sollte die Option -ifo verwendet werden, welche die .ifo Datei angibt, die zur Erstellung der resultierenden .idx Datei benötigt wird.

Wenn die Eingabe nicht von einer DVD stammt und keine .ifo Datei vorhanden ist, benötigt man die -vobsuboutid Option um MPlayer zu sagen, welche Sprachid für die .idx Datei verwendet werden soll.

Jeder Aufruf fügt neue Untertitel dazu, falls die .idx und .sub Dateien bereits existieren. Sie sollten also vor dem Starten gelöscht werden.

Beispiele:

Kopieren zweier Untertitel von einer DVD mit 3-pass Encodierung
  rm untertitel.idx untertitel.sub
  mencoder -dvd 1 -vobsubout untertitel -vobsuboutindex 0 -sid 2 -o frameno.avi -ovc frameno
  mencoder -dvd 1 -oac copy -ovc divx4 -pass 1
  mencoder -dvd 1 -oac copy -ovc divx4 -pass 2 -vobsubout untertitel -vobsuboutindex 1 -sid 5

Kopieren eines französischen Untertitels von einer MPEG Datei
  rm untertitel.idx untertitel.sub
  mencoder film.mpg -ifo film.ifo -vobsubout untertitel -vobsuboutindex 0 -vobsuboutid fr -sid 1

2.4.3. Verfügbare Optionen

Für eine komplette Liste der verfügbaren Optionen sollte die Manpage durchsucht werden.