Eine komplette Auflistung aller MEncoder-Optionen und aller Beispiele findest du in der man-page. Einige sinnvolle Beispiele und detaillierte Anleitungen, wie die diversen Parameter benutzt werden, findest du in den Encodierungstipps (englisch), die von mehreren Emails auf der mplayer-users zusammengetragen wurden. Durchsuche auch das Archiv. Dort findest du eine Unmenge an Diskussionen über alle möglichen Themen rund um die Encodierung mit MEncoder.
2-pass-Encodierung: Der Name kommt in der Tat daher, dass diese Methode die Datei zweimal encodiert. Das erste Encodieren (1.
Pass [=Durchlauf]) erzeugt einige temporäre Dateien (*.log) mit einer Dateigröße von nur wenigen MB. Lösche sie nicht (das AVI kannst du aber löschen). Im zweiten Pass wird die Ausgabedatei unter Verwendung der Bitraten-Daten der temporären Datei erzeugt. Die endgültige Datei wird deswegen eine weitaus bessere Bildqualität besitzen. Wenn dies das erst Mal ist, dass du davon hörst, solltest du einige Guides im Internet lesen.
Dieses Beispiel zeigt dir, wie du mit 2 Passes eine DVD in ein MPEG4-AVI
("DivX") encodierst. Nur 2 Befehle sind erforderlich:
rm frameno.avi
- Lösche diese Datei,
welche von einer früheren 3-Pass-Encodierung kommen kann (Sie führt zu
einem Konflikt mit der momentanen Encodierung).
mencoder -dvd 2 -lavcopts
vcodec=mpeg4:vpass=1 -oac copy -o film.avi
mencoder -dvd 2 -lavcopts
vcodec=mpeg4:vpass=2 -oac copy -o film.avi
3-Pass-Encodierung: Dies ist eine Erweiterung der 2-Pass-Encodierung, in der die Encodierung von Audio in einem separaten Durchlauf erledigt wird. Diese Methode erlaubt es MEncoder, Vorschläge für die Videobitrate zu machen, sodass das Ergebnis auf eine CD passt. Auch wird der Ton im Unterschied zum 2-Pass nur einmal encodiert. Das Schema:
CODE>rm frameno.avi
mencoder <file/DVD> -ovc frameno -oac mp3lame -lameopts
vbr=3 -o frameno.avi
Hierbei wird ein AVI erstellt, das nur die gewählte
Audiospur enthält. Vergiss nicht, die -lameopts
deinen
Wünschen anzupassen. Wenn du einen langen Film encodierst, so gibt
dir MEncoder am Schluss die empfohlenen Videobitraten aus, damit
ein resultierender Film auf eine 650MB-, eine 700MB- oder eine 800MB-CD
passt.
mencoder <file/DVD> -oac copy
-ovc lavc -lavcopts vcodec=mpeg4:vpass=1:vbitrate=<bitrate>
Genauso wie der erste Durchgang vom DivX4-Beispiel oben. Gib hier die nach dem ersten Durchlauf von MEncoderempfohlene oder eine andere von dir gewählte Videobitrate an.
mencoder <file/DVD> -oac copy
-ovc lavc -lavcopts vcodec=mpeg4:vpass=2:vbitrate=<bitrate>
Genauso wie der zweite Durchgang vom DivX4-Beispiel oben. Gib hier die gleiche Bitrate wie im ersten Durchgang an, es sei denn, du weißt genau, was du tust. In diesem Durchgang wird die im ersten Durchgang encodierte Audiospur in die endgültige Datei eingefügt. Nun ist alles fertig!
rm frameno.avi
- Lösche diese Datei,
welche von einer früheren 3-Pass-Encodierung kommen kann (Sie führt
zu einem Konflikt mit der momentanen Encodierung). mencoder -dvd 2 -ovc frameno
-o frameno.avi -oac mp3lame -lameopts vbr=3
mencoder -dvd 2 -ovc lavc
-lavcopts vcodec=mpeg4:vpass=1 -oac copy -o movie.avi
mencoder -dvd 2 -ovc lavc
-lavcopts vcodec=mpeg4:vpass=2 -oac copy -o movie.avi
MEncoder kann MPEG-Dateien (MPEG-PS) erstellen. Das ist wahrscheinlich nur in Kombination mit dem mpeg1video-Codec der libavcodec sinnvoll, da alle Player (bis auf MPlayer) MPEG1-Video und MPEG1 Layer 2 (MP2)-Audio in MPEG-Dateien erwarten.
Dieses Feature ist momentan nicht wirklich nützlich, mal davon abgesehen, dass es wahrscheinlich noch einige Fehler enthält. Schlimmer ist aber, dass MEncoder momentan kein MPEG1 Layer 2 (MP2)-Audio erzeugen kann, das alle anderen Player in einer MPEG-Datei erwarten.
Das Ausgabeformat von MEncoder kann mit -of mpeg
auf MPEG
geändert werden.
Beispiel:
mencoder -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video
-oac copy <weitere Optionen> media.avi -o ausgabe.mpg
Oftmals ist die Änderung der Bildgröße erforderlich. Die Gründe dafür können verschieden sein: Dateigröße verringern, Netzwerkbandbreite nicht überlasten etc. Viele Leute skalieren das Bild auch, wenn sie von DVD zu SVCD oder DivX-AVI konvertieren. Das ist allgemein schlecht. Wenn du das vermeiden willst, dann lies den Abschnitt über das Beibehalten des Höhen-/Breitenverhältnisses.
Der Skalierungsprozess erfolgt durch den 'scale-Videofilter:
-vop scale=breite:hoehe
. Die Qualität kann durch die Option
-sws
angegeben werden. Wenn nichts angegeben ist, verwendet
MEncoder 0: schnelle bilienare Filterung ('fast bilinear').
mencoder beispiel-svcd.mpg -ovc lavc -lavcopts
vcodec=mpeg4 -vop scale=640:480 -sws 2 -oac copy -o ausgabe.avi
MEncoder kann Input-Streams auf zwei Arten bearbeiten: encodieren oder kopieren (copy). Diese Sektion erklärt die Stream-Kopie.
-ovc copy
): Es können nette
Sachen gemacht werden :)-oac copy
): geht genauso.-audiofile <dateiname>
.
Trivial. Wir kopieren einfach die Video- und Audiostreams, und
MEncoder erzeugt den Index. Natürlich kann das keine Fehler in den
Video- und/oder Audiostreams beheben. Es kann auch Dateien mit kaputten
Interleaving reparieren, sodass die Option -ni
für diese
nicht mehr gebraucht wird.
Befehl: mencoder -idx eingabe.avi -ovc copy -oac copy -o
ausgabe.avi
Ein Nebeneffekt des oben erwähnten Reparierens ist, dass MEncoder damit auch zwei oder mehrere aneinandergehängte AVI-Dateien reparieren kann:
Kommando: cat 1.avi 2.avi | mencoder -noidx -ovc copy -oac copy -o
ausgabe.avi -
Anmerkung: Hier wird angenommen, dass 1.avi
und
2.avi
den gleichen Codec verwenden, die gleiche Auflöung und
Streamrate besitzen etc., und wenigstens 1.avi darf nicht defekt sein.
Eventuell musst du, wie oben beschrieben, die
Quelldateien erst reparieren.
libavcodec bietet eine einfache Encodierung für viele interessante Video-und Audio-formate (momentan werden deren Audio-Codecs nicht unterstützt). Du kannst zu folgenden Codecs encodieren:
Die erste Spalte enthält den Codec-Namen, den du nach dem
vcodec
-Stichwort übergibst, wie z.B.:
-lavcopts vcodec=msmpeg4
Ein Beispiel mit MJPEG-Compression:
mencoder -dvd 2 -o titel2.avi -ovc lavc -lavcopts
vcodec=mjpeg -oac copy
MEncoder kann aus mehreren JPEG-, PNG- oder TGA-Einzelbildern einen Film erstellen. Durch einfaches Kopieren der Bilder kann er MJPEG- (Motion JPEG), MPNG- (Motion PNG) oder MTGA-Filme (Motion TGA) erzeugen.
So läuft dieser Prozess ab:
libjpeg
(wenn PNGs decodiert werden, wird die libpng
benutzt).Die Erklärung der -mf
-Option kann in der Manpage gefunden
werden.
Erstellung einer DivX4-Datei aus allen JPEG-Dateien im aktuellen
Verzeichnis:
mencoder -mf on:w=800:h=600:fps=25 -ovc divx4
-o ausgabe.avi \*.jpg
Erstellung einer DivX4-Datei aus einigen JPEG-Dateien im aktuellen
Verzeichnis:
mencoder -mf on:w=800:h=600:fps=25
-ovc divx4 -o ausgabe.avi frame001.jpg,frame002.jpg
Erstellung einer Motion JPEG-Datei (MJPEG) aus allen JPEG-Dateien im
aktuellen Verzeichnis:
mencoder -mf on:w=800:h=600:fps=25 -ovc copy
-o output.avi \*.jpg
Erstellung einer unkomprimierten Datei aus allen PNG-Dateien im
momentanen Verzeichnis:
mencoder -mf on:w=800:h=600:fps=25:type=png -ovc rawrgb
-o output.avi \*.png
Anmerkung: Die Breite muss ein Vielfaches von 4 betragen, was eine Beschränkung des RGB-AVI-Formates ist.
Erstellung einer Motion PNG-Datei (MPNG) aus allen PNG-Dateien im
momentanen Verzeichnis:
mencoder -mf on:w=800:h=600:fps=25:type=png -ovc copy
-o output.avi \*.png
Erstellung einer Motion TGA-Datei (MTGA) aus allen TGA-Dateien im
aktuellen Verzeichnis:
mencoder -mf on:w=800:h=600:fps=25:type=tga -ovc copy
-o output.avi \*.tga
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.
Du gibst mit -vobsubout
den Basisnamen der Ausgabedatei (ohne
.idx
- oder .sub
-Endung) und mit
-vobsuboutindex
den Index des Untertitels der Ausgabedatei
an.
Wenn die Eingabe nicht von einer DVD stammt, solltest du mit der Option
-ifo
die Datei angeben, 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ötigst du die
-vobsuboutid
-Option, um MPlayer zu sagen, welche Sprach-ID
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 im Bedarfsfall
also vor dem Starten gelöscht werden.
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 -oac mp3lame -lameopts vbr=3
mencoder -dvd 1 -oac copy -ovc divx4 -divx4opts
pass=1
mencoder -dvd 1 -oac copy -ovc divx4 -divx4opts 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
DVDs und SVCDs (z.B. MPEG1/2) enthalten einen Wert, der das Verhältnis zwischen der Ausgebehöhe und der Ausgebebreite enthält. Der Player sorgt dann durch Skalierung dafür, dass dieses Verhältnis erreicht wird, sodass wir Menschen keine Eierköpfe sehen (Beispiel: die Bildmaße betragen 480x480, das gespeicherte Verhältnis beträgt 4:3, und der Player spielt den Videostream dann bei 640x480 ab). Wenn du allerdings solche Dateien in ein AVI umwandelst, dann musst du beachten, dass das AVI-Format das Höhen-/Breitenverhältnis nicht speichern kann. Die Skalierung beim Encodieren ist ein zeitraubender und qualitätsmindernder Prozess. Es sollte doch eine bessere Möglichkeit geben!?
Ganz genau - die gibt es.
MPEG4 enthält ein einzigartiges Feature: Im Videostream selber kann das Höhen-/Breitenverhältnis gespeichert werden. Jop, genauso wie bei MPEG1/2 (DVD, SVCD). Leider gibt es bisher keinen Videoplayer, der dieses Feature unterstützt. Bis auf MPlayer natürlich.
Dieses Feature kann nur in Verbindung mit dem mpeg4
-Codec der
libavcodec genutzt werden. Denke immer daran, dass - auch wenn
MPlayer die Datei richtig wiedergeben wird - alle anderen Player ein
falsches Höhen-/Breitenverhältnis anzeigen werden.
Du solltest ernsthaft in Erwägung ziehen, die eventuell vorhandenen
schwarzen Balken oberhalb und unterhalb des Bildes wegzuschneiden. Lies
in der man-Page dazu, wie du die cropdetect
- und
crop-Filter benutzt.
$ mencoder beispiel-svcd.mpg -ovc lavc -lavcopts
vcodec=mpeg4:aspect=16.0/9.0 -vop crop=714:548:0:14 -oac copy -o
ausgabe.avi