Eine komplette Auflistung aller MEncoder-Optionen und aller Beispiele
findest du in der Manpage. Einige sinnvolle Beispiele und
detaillierte Anleitungen, wie die diversen Parameter benutzt werden,
findest du in den Encodierungstipps (englisch)
<../tech/encoding-tips.txt>, 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).
root@linux #
mencoder -dvd 2 -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o film.avi
root@linux #
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:
-
Lösche die alte Datei:
CODE>rm frameno.avi
-
Erster Durchlauf:
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.
-
Zweiter Durchgang:
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.
-
Dritter Durchgang:
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!
Beispiel einer 3-Pass-Encodierung:
root@linux ~#
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).
user@linux $
mencoder -dvd 2 -ovc frameno -o frameno.avi -oac mp3lame -lameopts vbr=3
user@linux $
mencoder -dvd 2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o movie.avi
user@linux $
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:
root@linux #
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 <aspect>.
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').
Verwendung:
user@linux ~$
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.
-
Videostreams (Option -ovc copy): Es können nette Sachen
gemacht werden :)
Wie das kopieren (nicht konvertieren) von FLI- oder VIVO- oder
MPEG1-Video in eine AVI-Datei. Natürlich ist nur MPlayer in der
Lage, solche Dateien abspielen :) Und vermutlich ist das auch
absolut nicht praxisrelevant. Das Kopieren von Videostream kann
nützlicher sein, wenn man zum Beispiel nur den Audiostream
encodieren will (z.B.: unkomprimiertes PCM zu MP3).
-
Audiostreams (Option -oac copy): geht genauso.
Es ist möglich, eine externe Audiodatei (MP3, AC3, Vorbis) zu
nehmen, und diese dem Ausgabestream hinzuzufügen. Benutze dazu die
Option -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:
user@linux ~$
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:
user@linux ~$
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 <fixing> 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:
-
mjpeg - Motion JPEG
-
h263 - H263
-
h263p - H263 Plus
-
mpeg4 - ISO-Standard-MPEG4 (kompatibel zu DivX5, XviD)
-
msmpeg4 - pre-Standard-MPEG4-Variante von MS, v3 (aka DivX3)
-
msmpeg4v2 - pre-Standard-MPEG4-Variante von MS, v2 (wird in alten
ASF-Dateien benutzt)
-
rv10 - ein alter RealVideo-Codec
-
mpeg1video - MPEG1-Video :)
-
huffyuv - verlustfreie Kompression
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-Kompression:
user@linux ~$
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:
-
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...).
Beispiele:
Die Erklärung der -mf-Option kann in der
Manpage gefunden werden.
Erstellung einer DivX4-Datei aus allen JPEG-Dateien im aktuellen
Verzeichnis:
user@linux ~$
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:
user@linux ~$
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:
user@linux $
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:
user@linux $
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:
user@linux $
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:
user@linux $
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.
Beispiele:
Kopieren zweier Untertitel von einer DVD mit 3-Pass-Encodierung
user@linux ~$
rm untertitel.idx untertitel.sub
user@linux ~$
mencoder -dvd 1 -vobsubout untertitel -vobsuboutindex 0 -sid 2 -o
frameno.avi -ovc frameno -oac mp3lame -lameopts vbr=3
user@linux ~$
mencoder -dvd 1 -oac copy -ovc divx4 -divx4opts pass=1
user@linux ~$
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
user@linux ~$
rm untertitel.idx untertitel.sub
user@linux ~$
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.
Benutzung:
user@linux ~$
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
|
|
|