Allgemeiner Gebrauch von MEncoder
Eine komplette Liste der MEncoder-Optionen
und Beispiele findest du in der Manpage. Eine Reihe praktischer Beispiele
und detaillierter Anleitungen zur Anwendung verschiedener Encodier-Parameter
findet du in den
Encodier-Tipps (im Moment nur auf englisch),
die aus verschiedenen Mailing-Listen-Threads von MPlayer-Nutzern
zusammengestellt wurden.
Durchsuche die
Archive
nach einer Fülle von Diskussionen über alle Aspekte und Probleme mit
der Encodierung mittels MEncoder.
Auswahl der Codecs und Containerformate
Audio- und Videocodecs für die Encodierung werden mit den Optionen
und respektive gewählt.
Gib zum Beispiel folgendes ein:
mencoder -ovc help
um alle von der MEncoder-Version auf deinem Rechner
unterstützten Video-Codecs aufzulisten.
Die folgenden Wahlmöglichkeiten stehen zur Verfügung:
Audiocodecs:
AudiocodecnameBeschreibungmp3lameEncodiere nach VBR-, ABR- oder CBR-MP3 mittels LAMElavcVerwende einen der Audiocodecs von
libavcodecfaacFAAC AAC Audio-EncodertoolameMPEG Audio Layer 2 EncodertwolameMPEG Audio Layer 2 Encoder basierend auf tooLAMEpcmUnkomprimiertes PCM-AudiocopyNicht neu codieren, kopiere einfach nur komprimierte Frames
Video-Codecs:
VideocodecnameBeschreibunglavcVerwende einen der Video-Codecs von
libavcodecxvidXviD, MPEG-4 Advanced Simple Profile (ASP) Codecx264x264, MPEG-4 Advanced Video Coding (AVC), AKA H.264 CodecnuvNuppelVideo, von Echtzeit-Anwendungen verwendetrawUnkomprimierte Video-FramescopyNicht neu codieren, kopiere einfach nur komprimierte FramesframenoVerwendet für 3-pass-Encodierung (nicht empfohlen)
Ausgabe-Containerformate werden mittels der Option gewählt.
Gib folgendes ein
mencoder -of help
um alle von der MEncoder-Version auf deinem Rechner
unterstützten Videocodecs aufzulisten.
Die folgenden Wahlmöglichkeiten stehen zur Verfügung:
Containerformate:
Name des ContainerformatsBeschreibunglavfEiner der von
libavformat
unterstützten ContaineraviAudio-Video InterleavedmpegMPEG-1 und MPEG-2 PSrawvideoraw-Video-Stream (kein Muxen - nur ein Video-Stream)rawaudioraw-Audio-Stream (kein Muxen - nur ein Audio-Stream)
Der AVI-Container ist das ursprüngliche Containerformat für
MEncoder, was bedeutet, dass es der am besten
gehandhabte ist und derjenige, für welchen MEncoder
entworfen wurde.
Wie oben angemerkt können weitere Containerformate verwendet werden, jedoch
kann es bei deren Gebrauch zu Problemen kommen.
libavformat-Container:
Wenn du für das Muxen der Ausgabedatei
libavformat verwendest
(mittels ),
wird das passende Containerformat entsprechend der Erweiterung der Ausgabedatei
ermittelt.
Du kannst ein bestimmtes Containerformat mit Hilfe der Option
von libavformat
erzwingen.
libavformat ContainernameBeschreibungmpgMPEG-1 und MPEG-2 PSasfAdvanced Streaming FormataviAudio-Video InterleavedwavWaveform AudioswfMacromedia FlashflvMacromedia Flash VideormRealMediaauSUN AUnutNUT offener Container (experimentell und noch nicht Spec-konform)movQuickTimemp4MPEG-4 FormatdvSony Digital Video Container
Wie du siehst, erlaubt libavformatMEncoder, in eine beachtliche Vielfalt an Containern
zu muxen.
Leider solltest du wirklich Paranoia angesichts der resultierenden Datei schieben,
da MEncoder nicht von Anfang an für die Unterstützung
anderer Containerformate als AVI entworfen wurde.
Überprüfe bitte sicherheitshalber, ob die Audio-/Video-Synchronisierung in Ordnung ist
und ob die Datei von anderen Playern als MPlayer
wiedergegeben werden kann.
Beispiel:
Erzeugen eines Macromedia Flash Videos, das in einem Web-Browser mit dem
Macromedia Flash Plugin abgespielt werden kann:
mencoder input.avi -o output.flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc \
-lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 \
-srate 22050
Auswahl von Eingabedatei oder -gerätMEncoder kann aus Dateien oder direkt von
einer DVD- oder VCD-Disk encodieren.
Schließe einfach den Dateinamen in der Befehlszeile mit ein, um
von einer Datei zu ecodieren, oder
Titelnummer
bzw. Tracknummer zum
Ecodieren von einem DVD-Titel oder VCD-Track.
Wenn du bereits einmal eine DVD auf deine Festplatte kopiert hast
(du kannst ein Tool wie etwa dvdbackup
verwenden, auf den meisten Systemen verfügbar)
und von der Kopie encodieren willst, solltest du nach wie vor die Syntax
benutzen, zusammen mit
gefolgt vom Pfad zur kopierten DVD-Root.
Die Optionen und
können auch dazu genutzt werden, die Pfade zu den Geräte-Nodes zu überschreiben,
um direkt von der Disk zu lesen, falls die Standardoptionen
/dev/dvd und /dev/cdrom auf
deinem System nicht funktionieren.
Wenn du von einer DVD encodierst, ist es oft wünschenswert, ein zu
encodierendes Kapitel oder einen Bereich von Kapiteln auszuwählen.
Du kannst zu diesem Zweck die Option nutzen.
Zum Beispiel wird 1-4
nur die Kapitel 1 bis 4 der DVD encodieren.
Dies ist besonders nützlich, wenn du eine für zwei CDs bestimmte
Encodierung mit 1400 MB durchführen willst, da du sicherstellen kannst,
dass die Unterbrechung exakt an den Kapitelgrenzen stattfindet, anstatt mitten
in einer Szene.
Besitzt du eine unterstützte TV-Capture-Karte, kannst du auch von einem
TV-In-Gerät encodieren.
Verwende Kanalnummer als
Dateinamen und zur Konfiguration der zahlreichen
Aufnahmeeinstellungen.
Der DVB-Input funktioniert ähnlich.
Encodieren ins Sony PSP Video FormatMEncoder unterstützt das Encodieren in das
Sony PSP Video Format, allerdings gibt es, abhängig von der Version der PSP
Software, unterschiedliche Beschränkungen.
Wer sicher gehen möchte, sollte folgende Beschränkungen beachten:
Bitrate: sollte 1500kbps
nicht überschreiten, frühere Versionen unterstützten allerdings fast jede
beliebige Bitrate, so lange der Header sagte, sie sei nicht zu hoch.
Dimensionen: die Breite und Höhe des
PSP videos sollte ein Vielfaches von 16 sein, und das Produkt Breite
* Höhe muss <= 64000 sein.
Unter gewissen Umständen kann es der PSP möglich sein, höhere
Auflösungen abzuspielen.
Audio: die Samplerate sollte für
MPEG-4 Videos 24khz, und für H.264 48khz betragen.
Beispiel
mencoder -oac lavc -ovc lavc -of lavf -lavcopts
aglobal=1:vglobal=1:vcodec=mpeg4:acodec=aac \
-af lavcresample=24000 -vf harddup -lavfopts
format=psp:i_certify_that_my_video_stream_does_not_use_b_frames \
-ofps 30000/1001 input.video -o output.psp
Der Titel des Videos kann folgendermaßen angepasst werden:
.
Encodieren von 2-pass-MPEG4 ("DivX")
Der Name kommt daher, dass diese Methode die Datei zweimal
encodiert.
Die erste Encodierung (synchronisierter Durchgang) erzeugt einige temporäre
Dateien (*.log) mit einer Größe von ein paar Megabyte,
lösche diese noch nicht (du kannst dabei die AVI löschen oder vielmehr einfach
kein Video erstellen, indem du sie nach /dev/null
umadressierst).
Im zweiten Durchgang wird die 2-pass-Ausgabedatei erzeugt, indem die
Bitraten-Daten der temporären Dateien genutzt werden. Die sich daraus
ergebende Datei wird eine viel bessere Bildqualität besitzen. Wenn du das
erste Mal davon gehört hast, solltest du einige im Netz verfügbare Handbücher
zu Rate ziehen.
Kopieren eines Audio-Tracks
2-pass-Encodierung des zweiten Tracks einer DVD zu einer MPEG4 ("DivX")
AVI-Datei während des gleichzeitigen Kopierens des Audio-Tracks.
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o /dev/null
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 -oac copy -o output.aviEncodieren eines Audio-Tracks
2-pass-Encodierung einer DVD nach einer MPEG4 ("DivX") AVI-Datei
während des gleichzeitigen Encodierens des Audio-Tracks nach MP3.
Sei bei der Anwendung dieser Methode vorsichtig, da sie in einigen Fällen
zur Audio-/Video-Desynchronisierung führen kann.
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac mp3lame -lameopts vbr=3 -o /dev/null
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 -oac mp3lame -lameopts vbr=3 -o output.aviEncodieren ins MPEG-FormatMEncoder kann Ausgabedateien im Format
MPEG (MPEG-PS) erzeugen.
Gewöhnlich, wenn du MPEG1- oder MPEG2-Videos benutzt, tust du dies, weil
du in ein erzwungenes Format wie SVCD, VCD oder DVD encodierst.
Die spezifischen Anforderungen an diese Formate werden im Abschnitt
Verwenden von MEncoder zum Erzeugen
VCD/SVCD/DVD-konformer Dateien
beschrieben.
Verwende die Option , um das Format der
Ausgabedatei von MEncoder zu ändern.
Beispiel:
mencoder input.avi -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video -oac copy other_options -o output.mpg
Erzeugen einer für das Abspielen auf Systemen mit minimalem Multimedia-Support
geeigneten MPEG1-Datei, wie etwa auf Standard-Windows-Installationen:
mencoder input.avi -of mpeg -mpegopts format=mpeg1:tsaf:muxrate=2000 -o output.mpg -oac lavc -ovc lavc \
-lavcopts acodec=mp2:abitrate=224:vcodec=mpeg1video:vbitrate=1152:keyint=15:mbd=2:aspect=4/3
Hinweis:
Wenn dich die Video-Qualität des zweiten Durchgangs aus irgendeinem
Grund nicht zufrieden gestellt hat, kannst du deine Encodierung
mit einer anderen Zielbitrate erneut durchlaufen lassen, vorausgesetzt,
du hast die Statistikdateien des vorherigen Durchgangs gesichert.
Dies ist möglich, weil das Primärziel der Statistikdateien die Aufzeichnung
der Komplexität jedes Frames ist, was nicht allzusehr von der Bitrate
abhängt. Du solltest daher beachten, dass du die besten Ergebnisse bekommst,
wenn alle Durchgänge mit nicht zu sehr voneinander abweichenden
Ziel-Bitraten durchlaufen werden.
Reskalierung von Filmen
Oft taucht die Notwendigkeit auf, die Größe der Bilder eines Films zu
ändern. Das kann viele Gründe haben: das Anwachsen der Dateigröße,
Netzwerkbandbreite etc. Die meisten Leute reskalieren gerade beim
Konvertieren von DVDs oder SVCDs nach DivX AVI. Wenn du reskalieren willst,
lies den Abschnitt Beibehalten des Seitenverhältnisses.
Der Skalierungsprozess wird vom scale-Video-Filter verarbeitet:
.
Seine Qualität kann mit der Option gesetzt werden.
Ist sie nicht angegeben, wird MEncoder 2: bikubisch
verwenden.
Anwendung:
mencoder input.mpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -vf scale=640:480 -o output.aviKopieren von StreamsMEncoder kann Input-Streams auf zwei Arten verarbeiten:
Encodiere oder kopiere
sie. Dieser Abschnitt behandelt das Kopieren.
Videostream (Option ):
Damit kann man nette Sachen machen :) Wie etwa FLI oder VIVO oder
MPEG1-Video in eine AVI-Datei legen (nicht konvertieren!)! Sicherlich kann
nur MPlayer solche Dateien abspielen :)
Und es hat tatsächlich keine wirkliche Daseinsberechtigung.
Rational: Das Kopieren eines Video-Stream kann zum Beispiel dann
nützlich sein, wenn nur der Audio-Stream encodiert werden muß (wie
unkomprimiertes PCM nach MP3).
Audiostream (Option ):
unkompliziert. Es ist möglich, eine externe Audio-Datei (MP3,
WAV) herzunehmen und sie in einen Ausgabestream zu muxen. Nimm dazu die
Option .
Das Anwenden von , um von einem
Containerformat zum anderen zu kopieren, kann
erfordern, um das Audio-Format-Tag der Originaldatei
beizubehalten.
Wenn du zum Beispiel eine NSV-Datei mit AAC-Audio in einen AVI-Container
konvertierst, wird der Audio-Format-Tag fehlerhaft sein und muss geändert
werden. codecs.conf enthält eine Liste von
Audio-Format-Tags.
Beispiel:
mencoder input.nsv -oac copy -fafmttag 0x706D -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -o output.aviEncodieren von mehreren Input-Bilddateien (JPEG, PNG, TGA, SGI)MEncoder ist in der Lage, Filme aus einer oder
mehreren JPEG-, PNG- oder TGA-Dateien zu erzeugen. Mit einem einfachen
framecopy kann es Dateien wie MJPEG (Motion JPEG), MPNG (Motion PNG)
oder MTGA (Motion TGA) generieren.
Erläuterung des Prozesses:MEncoderdecodiert das/die
Input-Bild(er) mittels libjpeg
(beim Decodieren von PNGs nimmt er libpng).
MEncoder führt dann das decodierte Bild dem
gewählten Video-Kompressor zu (DivX4, XviD, FFmpeg msmpeg4, etc).
Beispiele
Die Erklärung der Option steht in der Manpage.
Erzeugen einer MPEG4-Datei aus allen im aktuellen Verzeichnis liegenden
JPEG-Dateien:
mencoder mf://*.jpg -mf w=800:h=600:fps=25:type=jpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o output.avi
Erzeugen einer MPEG4-Datei aus einigen im aktuellen Verzeichnis liegenden
JPEG-Dateien:
mencoder mf://frame001.jpg,frame002.jpg -mf w=800:h=600:fps=25:type=jpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o output.avi
Erzeugen einer MPEG4-Datei aus einer eindeutigen Liste von JPEG-Dateien (list.txt im
aktuellem Verzeichnis enthält die Liste von Dateien, die als Quelle genutzt werden
sollen, eine pro Zeile):
mencoder mf://@list.txt -mf w=800:h=600:fps=25:type=jpg \
-ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o output.avi
Erzeugen einer Motion JPEG (MJPEG) Datei aus allen im aktuellen Verzeichnis liegenden
JPEG-Dateien:
mencoder mf://*.jpg -mf w=800:h=600:fps=25:type=jpg -ovc copy -oac copy -o output.avi
Erzeugen einer unkomprimierten Datei aus allen PNG-Dateien im aktuellen Verzeichnis:
mencoder mf://*.png -mf w=800:h=600:fps=25:type=png -ovc raw -oac copy -o output.avi
Die Breite muß ein Vielfaches von 4 sein, dies ist eine Einschränkung des
RAW RGB AVI Formats.
Erzeugen einer Motion PNG (MPNG) Datei aus allen PNG-Dateien im aktuellen Verzeichnis:
mencoder mf://*.png -mf w=800:h=600:fps=25:type=png -ovc copy -oac copy -o output.avi
Erzeugen einer Motion TGA (MTGA) Datei aus allen TGA-Dateien im aktuellen Verzeichnis:
mencoder mf://*.tga -mf w=800:h=600:fps=25:type=tga -ovc copy -oac copy -o output.aviExtrahieren von DVD-Untertiteln in eine VOBsub-DateiMEncoder kann Untertitel aus einer DVD
in VOBsub-formatierte Dateien extrahieren. Diese bestehen aus einem
Paar von Dateien mit den Endungen .idx und
.sub und sind für gewöhnlich in ein einzelnes
.rar-Archiv gepackt.
MPlayer kann diese mit den Optionen
und abspielen.
Du legst den Basisnamen der Ausgabedateien (z.B ohne die Erweiterung
.idx oder .sub)
mittels fest und den Index für diesen
Untertitel der resultierenden Dateien mit .
Stammt der Input nicht von einer DVD, solltest du
verwenden, um die zur Konstruktion der resultierenden
.idx-Datei benötigten .ifo-Datei
anzugeben.
Stammt der Input nicht von einer DVD und besitzt du die
.ifo-Datei nicht, musst du die Option
anwenden, um ihn wissen zu lassen, welche
Sprach-ID in die .idx-Datei eingefügt werden soll.
Jeder Start wird den laufenden Untertitel anhängen, falls die
.idx- und .sub-Dateien bereits
existieren. Also solltest du beide vor dem Start entfernen.
Kopieren zweier Untertitel aus einer DVD während einer 2-pass-Encodierung
rm subtitles.idx subtitles.sub
mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -vobsubout subtitles -vobsuboutindex 0 -sid 2
mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 -vobsubout subtitles -vobsuboutindex 1 -sid 5Kopieren eines französichen Untertitels aus einer MPEG-Datei
rm subtitles.idx subtitles.sub
mencoder movie.mpg -ifo movie.ifo -vobsubout subtitles -vobsuboutindex 0 -vobsuboutid fr -sid 1 -nosound -ovc copy
Beibehalten des Seitenverhältnisses
Dateien von DVDs und SVCDs (z.B. MPEG1/2) enthalten einen Wert für das
Seitenverhältnis, welcher beschreibt, wie der Player den Videostream
skalieren soll, damit Menschen keine Eierköpfe kriegen
(Beispiel: 480x480 + 4:3 = 640x480). Beim Encodieren zu AVI-(DivX)-Dateien
musst du dir bewusst sein, dass AVI-Header diesen Wert nicht abspeichern.
Das Reskalieren des Films ist ätzend und zeitaufwändig, da muss es doch
einen besseren Weg geben!
Es gibt ihn.
MPEG4 besitzt ein einzigartiges Feature: Der Video-Stream kann sein
benötigtes Seitenverhältnis enthalten. Ja, genau wie MPEG1/2 (DVD, SVCD)
und H.263 Dateien. Bedauerlicherweise gibt es abgesehen von
MPlayer wenige Video-Player, die dieses
MPEG4-Attribut unterstützen.
Dieses Feature kann nur mit dem mpeg4-Codec von
libavcodec
verwendet werden. Vergiss nicht: Obwohl MPlayer
die erzeugte Datei korrekt abspielen wird, könnten andere Player das verkehrte
Seitenverhältnis benutzen.
Du solltest auf jeden Fall die schwarzen Bänder oberhalb und unterhalb des
Filmbildes abschneiden.
In der Manpage steht mehr zur Verwendung der Filter cropdetect
und crop.
Anwendung:
mencoder sample-svcd.mpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:autoaspect -vf crop=714:548:0:14 -oac copy -o output.avi