mirror of
https://github.com/mpv-player/mpv
synced 2024-12-09 08:29:42 +00:00
d7bf90d3c0
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@10406 b3059339-0415-0410-9bf9-f77b7e298cf2
377 lines
16 KiB
HTML
377 lines
16 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<HTML>
|
|
|
|
<HEAD>
|
|
<TITLE>Encodieren - MEncoder - The Movie Encoder for Linux</TITLE>
|
|
<LINK REL="stylesheet" TYPE="text/css" HREF="../default.css">
|
|
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
|
</HEAD>
|
|
|
|
<BODY>
|
|
|
|
|
|
<H2><A NAME="encoding">7. Encodieren mit MEncoder</A></H2>
|
|
|
|
<P>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
|
|
<A HREF="../tech/encoding-tips.txt">Encodierungstipps (englisch)</A>, die
|
|
von mehreren Emails auf der
|
|
<A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-users">mplayer-users</A>
|
|
zusammengetragen wurden. Durchsuche auch das
|
|
<A HREF="http://mplayerhq.hu/pipermail/mplayer-users/">Archiv</A>. Dort findest
|
|
du eine Unmenge an Diskussionen über alle möglichen Themen rund um
|
|
die Encodierung mit MEncoder.</P>
|
|
|
|
<H3><A NAME="2pass">7.1 MPEG4-Encodierung ("DivX") in zwei oder drei
|
|
Durchläufen </A></H3>
|
|
|
|
<P><U><B>2-pass-Encodierung:</B></U> Der Name kommt in der Tat daher, dass
|
|
diese Methode die Datei <I>zweimal</I> encodiert. Das erste Encodieren (1.
|
|
<P>Pass</I> [=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.</P>
|
|
|
|
<P>Dieses Beispiel zeigt dir, wie du mit 2 Passes eine DVD in ein MPEG4-AVI
|
|
("DivX") encodierst. Nur 2 Befehle sind erforderlich:<BR>
|
|
|
|
<CODE> rm frameno.avi</CODE> - Lösche diese Datei,
|
|
welche von einer früheren 3-Pass-Encodierung kommen kann (Sie führt zu
|
|
einem Konflikt mit der momentanen Encodierung).<BR>
|
|
|
|
<CODE> mencoder dvd://2 -lavcopts
|
|
vcodec=mpeg4:vpass=1 -oac copy -o film.avi</CODE><BR>
|
|
|
|
<CODE> mencoder dvd://2 -lavcopts
|
|
vcodec=mpeg4:vpass=2 -oac copy -o film.avi</CODE></P>
|
|
|
|
<P><U><B>3-Pass-Encodierung:</B></U> 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: </P>
|
|
|
|
<OL>
|
|
<LI>Lösche die alte Datei:
|
|
<P>CODE>rm frameno.avi</CODE></P></LI>
|
|
<LI>Erster Durchlauf:
|
|
<P><CODE>mencoder <file/DVD> -ovc frameno -oac mp3lame -lameopts
|
|
vbr=3 -o frameno.avi</CODE></P>
|
|
|
|
<P>Hierbei wird ein AVI erstellt, das <B>nur</B> die gewählte
|
|
Audiospur enthält. Vergiss nicht, die <CODE>-lameopts</CODE> 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.</P></LI>
|
|
<LI>Zweiter Durchgang:
|
|
<P><CODE>mencoder <file/DVD> -oac copy
|
|
-ovc lavc -lavcopts vcodec=mpeg4:vpass=1:vbitrate=<bitrate>
|
|
</CODE></P>
|
|
<P>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.</LI></P>
|
|
<LI>Dritter Durchgang:
|
|
<P><CODE>mencoder <file/DVD> -oac copy
|
|
-ovc lavc -lavcopts vcodec=mpeg4:vpass=2:vbitrate=<bitrate>
|
|
</CODE></P>
|
|
<P>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!</LI></P>
|
|
</OL>
|
|
|
|
<H4>Beispiel einer 3-Pass-Encodierung:</H4>
|
|
|
|
<CODE> rm frameno.avi</CODE> - Lösche diese Datei,
|
|
welche von einer früheren 3-Pass-Encodierung kommen kann (Sie führt
|
|
zu einem Konflikt mit der momentanen Encodierung).<BR>
|
|
|
|
<CODE> mencoder dvd://2 -ovc frameno
|
|
-o frameno.avi -oac mp3lame -lameopts vbr=3<BR>
|
|
|
|
mencoder dvd://2 -ovc lavc
|
|
-lavcopts vcodec=mpeg4:vpass=1 -oac copy -o movie.avi<BR>
|
|
|
|
mencoder dvd://2 -ovc lavc
|
|
-lavcopts vcodec=mpeg4:vpass=2 -oac copy -o movie.avi</CODE></P>
|
|
|
|
|
|
<H2><A NAME="mpeg">7.2 In das MPEG-Format encodieren</A></H2>
|
|
|
|
<P>MEncoder kann MPEG-Dateien (MPEG-PS) erstellen. Das ist wahrscheinlich
|
|
nur in Kombination mit dem <I>mpeg1video</I>-Codec der libavcodec sinnvoll,
|
|
da alle Player (bis auf MPlayer) MPEG1-Video und MPEG1 Layer 2 (MP2)-Audio
|
|
in MPEG-Dateien erwarten.</P>
|
|
|
|
<P>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.</P>
|
|
|
|
<P>Das Ausgabeformat von MEncoder kann mit <CODE>-of mpeg</CODE> auf MPEG
|
|
geändert werden.</P>
|
|
|
|
<P>Beispiel:<BR>
|
|
<CODE>mencoder -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video
|
|
-oac copy <weitere Optionen> media.avi -o ausgabe.mpg</CODE></P>
|
|
|
|
|
|
|
|
<H3><A NAME="rescaling">7.3 Skalierung von Filmen</A></H3>
|
|
|
|
<P>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. <B>Das ist
|
|
allgemein schlecht.</B> Wenn du das vermeiden willst, dann lies den Abschnitt
|
|
über das <A HREF="#aspect">Beibehalten des
|
|
Höhen-/Breitenverhältnisses</A>.</P>
|
|
|
|
<P>Der Skalierungsprozess erfolgt durch den <I>'scale</I>-Videofilter:
|
|
<CODE>-vf scale=breite:hoehe</CODE>. Die Qualität kann durch die Option
|
|
<CODE>-sws</CODE> angegeben werden. Wenn nichts angegeben ist, verwendet
|
|
MEncoder 0: schnelle bilienare Filterung ('fast bilinear').</P>
|
|
|
|
<H4>VERWENDUNG</H4>
|
|
|
|
<CODE> mencoder beispiel-svcd.mpg -ovc lavc -lavcopts
|
|
vcodec=mpeg4 -vf scale=640:480 -sws 2 -oac copy -o ausgabe.avi</CODE></P>
|
|
|
|
<H3><A NAME="copying">7.4 Stream-Kopiermodus</A></H3>
|
|
|
|
<P>MEncoder kann Input-Streams auf zwei Arten bearbeiten:
|
|
<B>encodieren</B> oder <B>kopieren (copy)</B>. Diese Sektion erklärt die
|
|
<B>Stream-Kopie</B>.</P>
|
|
|
|
<UL>
|
|
<LI><B>Videostreams</B> (Option <CODE>-ovc copy</CODE>): Es können nette
|
|
Sachen gemacht werden :)<BR> 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).</LI>
|
|
<LI><B>Audiostreams</B> (Option <CODE>-oac copy</CODE>): geht genauso.</LI>
|
|
Es ist möglich, eine externe Audiodatei (MP3, AC3, Vorbis) zu nehmen,
|
|
und diese dem Ausgabestream hinzuzufügen. Benutze dazu die Option
|
|
<CODE>-audiofile <dateiname></CODE>.</LI>
|
|
</UL>
|
|
|
|
|
|
<H3><A NAME="fixing">7.5 Reparieren von AVIs mit defektem Index oder
|
|
schlechtem Interleaving</A></H3>
|
|
|
|
<P>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 <CODE>-ni</CODE> für diese
|
|
nicht mehr gebraucht wird.</P>
|
|
|
|
<P>Befehl: <CODE>mencoder -idx eingabe.avi -ovc copy -oac copy -o
|
|
ausgabe.avi</CODE></P>
|
|
|
|
<H3><A NAME="appending">7.5.1 Aneinanderhängen mehrerer AVI-Dateien</A>
|
|
</H3>
|
|
|
|
<P>Ein Nebeneffekt des oben erwähnten Reparierens ist, dass MEncoder
|
|
damit auch zwei oder mehrere aneinandergehängte AVI-Dateien reparieren
|
|
kann:</P>
|
|
|
|
<P>Kommando: <CODE>cat 1.avi 2.avi | mencoder -noidx -ovc copy -oac copy -o
|
|
ausgabe.avi -</CODE></P>
|
|
|
|
<P><B>Anmerkung:</B> Hier wird angenommen, dass <CODE>1.avi</CODE> und
|
|
<CODE>2.avi</CODE> den gleichen Codec verwenden, die gleiche Auflöung und
|
|
Streamrate besitzen etc., und wenigstens 1.avi darf nicht defekt sein.
|
|
Eventuell musst du, wie <A HREF="#fixing">oben</A> beschrieben, die
|
|
Quelldateien erst reparieren.</P>
|
|
|
|
<H3><A NAME="libavcodec">7.6 Encodierung mit der
|
|
<I>libavcodec</I>-Codec-Familie</A></H4>
|
|
|
|
<P><A HREF="codecs.html#libavcodec">libavcodec</A> 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:</P>
|
|
|
|
<UL>
|
|
<LI>mjpeg - Motion JPEG</LI>
|
|
<LI>h263 - H263</LI>
|
|
<LI>h263p - H263 Plus</LI>
|
|
<LI>mpeg4 - ISO-Standard-MPEG4 (kompatibel zu DivX5, XviD)</LI>
|
|
<LI>msmpeg4 - pre-Standard-MPEG4-Variante von MS, v3 (aka DivX3)</LI>
|
|
<LI>msmpeg4v2 - pre-Standard-MPEG4-Variante von MS, v2 (wird in alten
|
|
ASF-Dateien benutzt)</LI>
|
|
<LI>rv10 - ein alter RealVideo-Codec</LI>
|
|
<LI>mpeg1video - MPEG1-Video :)</LI>
|
|
<LI>huffyuv - verlustfreie Kompression</LI>
|
|
</UL>
|
|
|
|
<P>Die erste Spalte enthält den Codec-Namen, den du nach dem
|
|
<CODE>vcodec</CODE>-Stichwort übergibst, wie z.B.:
|
|
<CODE>-lavcopts vcodec=msmpeg4</CODE></P>
|
|
|
|
<P>Ein Beispiel mit MJPEG-Compression:<BR>
|
|
<CODE> mencoder dvd://2 -o titel2.avi -ovc lavc -lavcopts
|
|
vcodec=mjpeg -oac copy</CODE></P>
|
|
|
|
<H3><A NAME="image_files">7.7 Encodierung von mehreren Einzelbildern
|
|
(JPEGs, PNGs oder TGAs)</A></H3>
|
|
|
|
<P>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.</P>
|
|
|
|
<P>So läuft dieser Prozess ab:</P>
|
|
|
|
<OL>
|
|
<LI>MEncoder <I>decodiert</I> das/die Eingangsbild(er) mit
|
|
<CODE>libjpeg</CODE> (wenn PNGs decodiert werden, wird die <B>libpng</B>
|
|
benutzt).</LI>
|
|
<LI>MEncoder führt die decodierten Bilder danach dem
|
|
gewählten Videokompressor zu (DivX4, Xvid, ffmpeg msmpeg4, etc...).
|
|
</LI>
|
|
</OL>
|
|
|
|
<H4>Beispiele</H4>
|
|
|
|
<P>Die Erklärung der <CODE>-mf</CODE>-Option kann in der Manpage gefunden
|
|
werden.</P>
|
|
|
|
<P><I>Erstellung einer DivX4-Datei aus allen JPEG-Dateien im aktuellen
|
|
Verzeichnis:</I><BR>
|
|
|
|
<CODE>mencoder -mf on:w=800:h=600:fps=25 -ovc divx4
|
|
-o ausgabe.avi \*.jpg</CODE></P>
|
|
|
|
<P><I>Erstellung einer DivX4-Datei aus einigen JPEG-Dateien im aktuellen
|
|
Verzeichnis:</I><BR>
|
|
|
|
<CODE>mencoder -mf on:w=800:h=600:fps=25
|
|
-ovc divx4 -o ausgabe.avi frame001.jpg,frame002.jpg</CODE></P>
|
|
|
|
<P><I>Erstellung einer Motion JPEG-Datei (MJPEG) aus allen JPEG-Dateien im
|
|
aktuellen Verzeichnis:</I><BR>
|
|
|
|
<CODE>mencoder -mf on:w=800:h=600:fps=25 -ovc copy
|
|
-o output.avi \*.jpg</CODE></P>
|
|
|
|
<P><I>Erstellung einer unkomprimierten Datei aus allen PNG-Dateien im
|
|
momentanen Verzeichnis:</I><BR>
|
|
|
|
<CODE>mencoder -mf on:w=800:h=600:fps=25:type=png -ovc rawrgb
|
|
-o output.avi \*.png</CODE></P>
|
|
|
|
<P><B>Anmerkung:</B> Die Breite muss ein Vielfaches von 4 betragen, was eine
|
|
Beschränkung des RGB-AVI-Formates ist.</P>
|
|
|
|
<P><I>Erstellung einer Motion PNG-Datei (MPNG) aus allen PNG-Dateien im
|
|
momentanen Verzeichnis:</I><BR>
|
|
|
|
<CODE>mencoder -mf on:w=800:h=600:fps=25:type=png -ovc copy
|
|
-o output.avi \*.png</CODE></P>
|
|
|
|
<P><I>Erstellung einer Motion TGA-Datei (MTGA) aus allen TGA-Dateien im
|
|
aktuellen Verzeichnis:</I><BR>
|
|
|
|
<CODE>mencoder -mf on:w=800:h=600:fps=25:type=tga -ovc copy
|
|
-o output.avi \*.tga</CODE></P>
|
|
|
|
<H3><A NAME="vobsub">7.8 Extrahieren von DVD-Untertiteln in eine
|
|
Vobsub-Datei</A></H3>
|
|
|
|
<P>MEncoder kann Untertitel von einer DVD extrahieren und sie als Datei
|
|
im Vobsub-Format speichern. Dieses besteht aus einem Dateipaar
|
|
(<CODE>.sub</CODE> und <CODE>.idx</CODE>) und wird gewähnlich in ein
|
|
einziges <CODE>.rar</CODE> Archiv verpackt. MPlayer kann diese mit den
|
|
Optionen <CODE>-vobsub</CODE> und <CODE>-vobsubid</CODE> wiedergeben.</P>
|
|
|
|
<P>Du gibst mit <CODE>-vobsubout</CODE> den Basisnamen der Ausgabedatei (ohne
|
|
<CODE>.idx</CODE>- oder <CODE>.sub</CODE>-Endung) und mit
|
|
<CODE>-vobsuboutindex</CODE> den Index des Untertitels der Ausgabedatei
|
|
an.</P>
|
|
|
|
<P>Wenn die Eingabe nicht von einer DVD stammt, solltest du mit der Option
|
|
<CODE>-ifo</CODE> die Datei angeben, die zur Erstellung der resultierenden
|
|
<CODE>.idx</CODE>-Datei benötigt wird.</P>
|
|
|
|
<P>Wenn die Eingabe nicht von einer DVD stammt und keine
|
|
<CODE>.ifo</CODE>-Datei vorhanden ist, benötigst du die
|
|
<CODE>-vobsuboutid</CODE>-Option, um MPlayer zu sagen, welche Sprach-ID
|
|
für die <CODE>.idx</CODE> Datei verwendet werden soll.</P>
|
|
|
|
<P>Jeder Aufruf fügt neue Untertitel dazu, falls die <CODE>.idx</CODE>-
|
|
und <CODE>.sub</CODE>-Dateien bereits existieren. Sie sollten im Bedarfsfall
|
|
also vor dem Starten gelöscht werden.</P>
|
|
|
|
<H4>Beispiele:</H4>
|
|
|
|
<P><I>Kopieren zweier Untertitel von einer DVD mit 3-Pass-Encodierung</I><BR>
|
|
|
|
<CODE>rm untertitel.idx untertitel.sub</CODE><BR>
|
|
|
|
<CODE>mencoder dvd://1 -vobsubout untertitel -vobsuboutindex 0 -sid
|
|
2 -o frameno.avi -ovc frameno -oac mp3lame -lameopts vbr=3</CODE><BR>
|
|
|
|
<CODE>mencoder dvd://1 -oac copy -ovc divx4 -divx4opts
|
|
pass=1</CODE><BR>
|
|
|
|
<CODE>mencoder dvd://1 -oac copy -ovc divx4 -divx4opts pass=2
|
|
-vobsubout untertitel -vobsuboutindex 1 -sid 5</CODE></P>
|
|
|
|
|
|
<P><I>Kopieren eines französischen Untertitels von einer MPEG-Datei</I><BR>
|
|
|
|
<CODE>rm untertitel.idx untertitel.sub</CODE><BR>
|
|
|
|
<CODE>mencoder film.mpg -ifo film.ifo -vobsubout untertitel
|
|
-vobsuboutindex 0 -vobsuboutid fr -sid 1</CODE></P>
|
|
|
|
<H3><A NAME="aspect">7.9 Das Höhen-/Breitenverhältnisses erhalten
|
|
</A></H3>
|
|
|
|
<P>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 <B>nicht</B> speichern
|
|
kann. Die Skalierung beim Encodieren ist ein zeitraubender und
|
|
qualitätsmindernder Prozess. Es sollte doch eine bessere Möglichkeit
|
|
geben!?</P>
|
|
|
|
<P>Ganz genau - die gibt es.</P>
|
|
|
|
<P>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 <U>keinen</U> Videoplayer, der
|
|
dieses Feature unterstützt. Bis auf MPlayer natürlich.</P>
|
|
|
|
<P>Dieses Feature kann nur in Verbindung mit dem <CODE>mpeg4</CODE>-Codec der
|
|
<B>libavcodec</B> 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.</P>
|
|
|
|
<P>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 <CODE>cropdetect</CODE>- und
|
|
<CODE>crop</CROP>-Filter benutzt.</P>
|
|
|
|
<H4>BENUTZUNG</H4>
|
|
|
|
<P><CODE>$ mencoder beispiel-svcd.mpg -ovc lavc -lavcopts
|
|
vcodec=mpeg4:aspect=16.0/9.0 -vf crop=714:548:0:14 -oac copy -o
|
|
ausgabe.avi</CODE></P>
|
|
|
|
</BODY>
|
|
</HTML>
|