mpv/DOCS/xml/de/encoding-guide.xml

5759 lines
260 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- in sync with r24549 -->
<!-- missing cosmetic commit 21537 -->
<chapter id="encoding-guide">
<title>Encodieren mit <application>MEncoder</application></title>
<sect1 id="menc-feat-dvd-mpeg4">
<title>Erzeugen eines hochwertigen MPEG-4-Rips ("DivX") eines DVD-Films</title>
<para>
Eine häufig gestellte Frage ist
"Wie mache ich den hochwertigsten Rip für eine gegebene Größe?".
Eine weitere Frage ist
"Wie mache ich den qualitativ bestmöglichen DVD-Rip? Die Dateigröße ist
mir egal, ich will einfach nur die beste Qualität."
</para>
<para>
Die letzte Frage ist zumindest etwas falsch gestellt. Wenn du dir
schließlich keine Gedanken um die Dateigröße machst, warum kopierst Du
dann nicht einfach den kompletten MPEG-2-Videostream der DVD?
Sicherlich, deine AVI wird am Ende 5GB groß sein, so oder so, jedoch ist
dies mit Sicherheit deine beste Option, wenn du die beste Qualität
erhalten willst und dich nicht um die Größe kümmerst.
</para>
<para>
Tatsache ist, der Grund eine DVD in MPEG-4 umzuencodieren ist
gerade <emphasis role="bold">weil</emphasis> dir die Größe wichtig ist.
</para>
<para>
Es ist sehr schwierig, ein Rezept zum Erzeugen eines sehr
hochwertigen DVD-Rips anzubieten. Es gilt mehrere Faktoren zu
berücksichtigen, und du solltest dich mit diesen Details auskennen oder
du wirst voraussichtlich am Ende von den Resultaten enttäuscht.
Nachfolgend werden wir einige dieser Themen etwas näher untersuchen
und uns danach ein Beispiel ansehen. Wir gehen davon aus, dass Du
<systemitem class="library">libavcodec</systemitem> zum Encodieren des
Videos verwendest, obwohl diese Theorie genauso gut auf andere Codecs
zutrifft.
</para>
<para>
Ist dies alles zu viel für dich, solltest du womöglich auf eins der vielen
guten Frontends zurückgreifen, die in der
<ulink url="http://www.mplayerhq.hu/design7/projects.html#mencoder_frontends">MEncoder-Sektion</ulink>
unserer diesbezüglichen Projektseite zu finden sind.
Auf diese Weise solltest du in der Lage sein, hochwertige Rips zu
erhalten ohne viel nachdenken zu müssen, da die meisten dieser Tools dazu entworfen
wurden, clevere Entscheidungen für dich zu treffen.
</para>
<sect2 id="menc-feat-dvd-mpeg4-preparing-encode">
<title>Vorbereitung aufs Encodieren: Identifiziere Quellmaterial und Framerate</title>
<para>
Bevor du über das Encodieren eines Films nachdenkst, solltest du einige einleitende
Schritte vornehmen.
</para>
<para>
Der erste und allerwichtigste Schritt vor dem Encodieren sollte sein,
festzustellen, mit welchem Inhaltstyp du umgehst.
Kommt dein Quellmaterial von einer DVD oder einem Rundfunk-/Kabel-/Satelliten-TV,
wird es in einem von zwei Formaten abgespeichert: NTSC für Nord-Amerika und Japan,
PAL für Europa usw.
Es ist wichtig, sich klar zu machen, dass dies ganz einfach die Formatierung
für die Präsentation auf einem Fernsehgerät ist und häufig
<emphasis role="bold">nicht</emphasis> mit dem originalen Format des Films
korrespondiert. Die Erfahrung zeigt, dass NTSC-Material schwieriger zu
encodieren ist, da mehr Elemente in der Quelle zu identifizieren sind.
Um eine geeignete Encodierung zu produzieren, solltest du das originale
Format kennen.
Fehler, dies sollte man berücksichtigen, führen zu diversen Fehlerstellen
in deiner Encodierung, einschließlich hässlicher Kammartefakte (combing/interlacing)
und doppelten oder gar verlorenen Frames.
Abgesehen davon, dass sie unschön sind, beeinflussen diese Artefakte die
Codierungseffizienz negativ:
Du erhältst eine schlechtere Qualität pro Bitrateneinheit.
</para>
<sect3 id="menc-feat-dvd-mpeg4-preparing-encode-fps">
<title>Identifizieren der Quellframerate</title>
<para>
Hier ist eine Liste der verbreiteten Typen des Quellmaterials, in der Du
diese und ihre Eigenschaften voraussichtlich finden wirst:
</para>
<itemizedlist>
<listitem>
<para>
<emphasis role="bold">Standardfilm</emphasis>: Produziert für
theatralische Anzeige bei 24fps.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">PAL-Video</emphasis>: Aufgenommen mit einer
PAL-Videokamera bei 50 Feldern pro Sekunde.
Ein Feld besteht ganz einfach aus den ungerade oder gerade nummerierten
Zeilen eines Frames.
Das Fernsehen wurde entworfen, diese Felder als billige Form einer
analogen Komprimierung im Wechsel zu aktualisieren.
Das menschliche Auge kompensiert dies angeblich, aber wenn du
Interlacing einmal verstanden hast, wirst du lernen, es auch auf
dem TV-Bildschirm zu erkennen und nie wieder Spass am Fernsehen haben.
Zwei Felder machen <emphasis role="bold">keinen</emphasis> kompletten
Frame, da sie in einer 50-stel Sekunde zeitlich getrennt aufgenommen
werden und so nicht Schlange stehen solange keine Bewegung da ist.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">NTSC-Video</emphasis>: Aufgenommen mit einer
NTSC-Videokamera bei 60000/1001 Feldern pro Sekunde oder 60 Feldern
pro Sekunde zu Zeiten vor dem Farbfernsehen.
Ansonsten ähnlich wie PAL.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">Animation</emphasis>: Üblicherweise bei
24fps gezeichnet, kommt jedoch auch in Varianten mit gemischter
Framerate vor.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">Computer Graphics (CG)</emphasis>: Kann
irgendeine Framerate sein, jedoch sind einige üblicher als andere;
24 und 30 Frames pro Sekunde sind typisch für NTSC und 25fps ist
typisch für PAL.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">Alter Film</emphasis>: Diverse niedrigere
Frameraten.
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3 id="menc-feat-dvd-mpeg4-preparing-encode-material">
<title>Identifizieren des Quellmaterials</title>
<para>
Filme, die sich aus Frames zusammensetzen, werden den progressiven
zugeordnet, während die aus unabhängigen Feldern bestehenden
entweder interlaced (engl. für verschachteln) oder Video
genannt werden - somit ist letzterer Terminus zweideutig.
</para>
<para>
Um das ganze noch komplizierter zu machen, sind manche Filme ein
Gemisch aus einigen den oben beschriebenen Formen.
</para>
<para>
Das wichtigste Unterscheidungsmerkmal zwischen all diesen
Formaten ist, dass einige Frame-basiert, andere wiederum
Feld-basiert sind.
<emphasis role="bold">Immer</emphasis> wenn ein Film für die
Anzeige auf dem Fernseher vorbereitet wird (einschließlich
DVD), wird er in ein Feld-basiertes Format konvertiert.
Die verschiedenen Methoden, mit denen dies bewerkstelligt werden
kann, werden zusammengenommen als "telecine" bezeichnet, von welchen
das verrufene NTSC "3:2 pulldown" eine Abart darstellt.
Sofern das Originalmaterial nicht Feld-basiert war (bei gleicher
Feldrate), erhältst du einen Film in einem anderen Format als
das Original.
</para>
<itemizedlist>
<title>Es gibt einige verbreitete Typen des pulldown:</title>
<listitem>
<para>
<emphasis role="bold">PAL 2:2 pulldown</emphasis>: Das schönste von
allen.
Jeder Frame wird durch das wechselweise Extrahieren und Anzeigen
der geradzahligen und ungeradzahligen Zeilen für die Dauer von zwei
Feldern dargestellt.
Hat das Originalmaterial 24fps, beschleunigt dieser Prozess den Film
um 4%.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">PAL 2:2:2:2:2:2:2:2:2:2:2:3 pulldown</emphasis>:
Jeder 12-te Frame, anstatt nur jeder 2-te, wird für die Dauer von zwei
Feldern dargestellt.
Dies vermeidet die 4% Geschwindigkeitssteigerung, macht jedoch das
Umkehren des Prozesses viel schwieriger.
Es ist üblicherweise in Musical-Produktionen zu sehen, wo das Anpassen der
Geschwindigkeit um 4% sicherlich das musikalische Ergebnis kaputt machen würde.
</para>
</listitem>
<listitem><para>
<emphasis role="bold">NTSC 3:2 telecine</emphasis>: Frames werden
abwechselnd für die Dauer von 3 oder 2 Feldern angezeigt.
Dies verleiht der Feldrate das 2.5-fache der originalen Framerate.
Das Resultat wird dadurch auch leicht von 60 Feldern pro Sekunde auf
60000/1001 Felder pro Sekunde verlangsamt, um die NTSC-Felddrate
beizubehalten.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">NTSC 2:2 pulldown</emphasis>: Verwendet zur
Darstellung von 30fps Material auf NTSC.
Schön, genau wie das 2:2 PAL pulldown.
</para>
</listitem>
</itemizedlist>
<para>
Es gibt auch Methoden zur Konvertierung zwischen NTSC- und PAL-Video,
jedoch liegen diese Themen jenseits des Rahmens dieser Anleitung.
Wenn du auf solch einen Film stößt und ihn encodieren willst, solltest
du besser eine Kopie im originalen Format suchen.
Die Konvertierung zwischen diesen beiden Formaten ist hochdestruktiv und
kann nicht spurlos rückgängig gemacht werden, somit wird deine Encodierung
außerordentlich darunter leiden, wenn sie aus einer konvertierten Quelle
erzeugt wurde.
</para>
<para>
Wenn ein Video auf DVD gespeichert wird, werden fortlaufend Feldpaare
als Frames gruppiert, auch wenn nicht beabsichtigt ist, diese gleichzeitig
zu zeigen.
Der bei DVD und digitalem TV verwendete MPEG-2-Standard bietet einen Weg
für beides, die originalen progressiven Frames zu encodieren und die Anzahl
der Felder, für die ein Frame gezeigt werden soll, im Header dieses Frames
zu speichern.
Wurde diese Methode angewandt, wird dieser Film oft als "soft telecined"
beschrieben, da der Prozess eher nur den DVD-Player anweist, pulldown
auf den Film anzuwenden, als den Film selbst abzuändern.
Dieser Fall sollte möglichst bevorzugt werden, da er (eigentlich ignoriert)
leicht vom Encoder rückgängig gemacht werden kann und da er die maximale
Qualität beibehält.
Wie auch immer, viele DVD- und Rundfunkproduktionsstudios verwenden
keine passenden Encodierungstechniken, sie produzieren stattdessen Filme mit
"hard telecine", bei denen Felder sogar in encodiertes MPEG-2 dupliziert
werden.
</para>
<para>
Die Vorgehensweisen für den Umgang mit solchen Fällen werden
<link linkend="menc-feat-telecine">später in diesem Handbuch</link>
behandelt.
Wir lassen dich jetzt mit einigen Anleitungen zur Identifizierung der
Materialtypen zurück, mit denen du es zu tun hast:
</para>
<itemizedlist>
<title>NTSC-Bereiche:</title>
<listitem>
<para>
Wenn <application>MPlayer</application> angibt, dass die Framerate
während des Betrachtens des Films zu 24000/1001 gewechselt hat
und diese nie wieder zurückwechselt, handelt es sich meist mit
Sicherheit um progressiven Inhalt, der "soft telecined" wurde.
</para>
</listitem>
<listitem>
<para>
Wenn <application>MPlayer</application> anzeigt, dass die Framerate
zwischen 24000/1001 und 30000/1001 vor und zurück wechselt, und Du
siehst hin und wieder Kammartefakte, dann gibt es mehrere Möglichkeiten.
Die Segmente mit 24000/1001 fps sind meist mit Sicherheit progressiver
Inhalt, "soft telecined", jedoch könnten die Teile mit 30000/1001 fps
entweder "hard telecined" 24000/1001 fps Inhalt oder 60000/1001 Felder
pro Sekunde NTSC-Video sein.
Verwende die selben Richtwerte wie in den folgenden zwei Fällen, um zu
bestimmen, um was es sich handelt.
</para>
</listitem>
<listitem>
<para>
Wenn <application>MPlayer</application> nie einen Frameratenwechsel
anzeigt und jeder einzelne Frame mit Bewegung gekämmt (combed) erscheint,
ist dein Film ein NTSC-Video bei 60000/1001 Feldern pro Sekunde.
</para>
</listitem>
<listitem>
<para>
Wenn <application>MPlayer</application> nie einen Frameratenwechsel
anzeigt und zwei von fünf Frames gekämmt (combed) erscheinen, ist der
Inhalt deines Films "hard telecined" 24000/1001 fps.
</para>
</listitem>
</itemizedlist>
<itemizedlist>
<title>PAL-Bereiche:</title>
<listitem>
<para>
Wenn du niemals irgend ein Combing siehst, ist dein Film 2:2 pulldown.
</para>
</listitem>
<listitem>
<para>
Siehst du alle halbe Sekunde abwechselnd ein- und ausgehendes Combing,
dann ist dein Film 2:2:2:2:2:2:2:2:2:2:2:3 pulldown.
</para>
</listitem>
<listitem>
<para>
Hast du immer während Bewegungen Combing gesehen, dann ist dein Film
PAL-Video bei 50 Feldern pro Sekunde.
</para>
</listitem>
</itemizedlist>
<note>
<title>Tipp:</title>
<para>
<application>MPlayer</application> kann das Filmplayback
mittels der Option -speed verlangsamen oder Frame für Frame abspielen.
Versuche <option>-speed</option> 0.2 zu verwenden, um den Film sehr lamgsam
anzusehen oder drücke wiederholt die Taste "<keycap>.</keycap>", um jeweils
einen Frame abzuspielen und identifiziere dann das Muster, falls du bei voller
Geschwindigkeit nichts erkennen kannst.
</para>
</note>
</sect3>
</sect2>
<sect2 id="menc-feat-dvd-mpeg4-2pass">
<title>Konstanter Quantisierungsparameter vs. Multipass</title>
<para>
Es ist möglich, deinen Film in einer großen Auswahl von Qualitäten zu
encodieren.
Mit modernen Videoencodern und ein wenig Pre-Codec-Kompression
(Herunterskalierung und Rauschunterdrückung), kann eine sehr gute
Qualität bei 700 MB für einen 90-110-minütigen Breitwandfilm erreicht werden.
Des Weiteren können alle Filme - sogar die längsten - mit nahezu perfekter
Qualität bei 1400 MB encodiert werden.
</para>
<para>
Es gibt drei Annäherungen für das Encodieren eines Videos: konstante Bitrate
(CBR), konstanter Quantisierungsparameter und Multipass (ABR, oder mittlere Bitrate).
</para>
<para>
Die Komplexität der Frames eines Filmes und somit die Anzahl der für
deren Komprimierung erforderlichen Bits kann von einer Szene zur anderen
außerordentlich variieren.
Moderne Videoencoder können sich durch Variieren der Bitrate an diese
Anforderungen anpassen.
In einfachen Modi wie CBR kennen die Encoder jedoch nicht den
Bitratenbedarf zukünftiger Szenen und sind somit nicht in der Lage,
die angeforderte mittlere Bitrate über längere Zeitspannen zu
überschreiten.
Erweiterte Modi wie etwa Multipass-Encodierung können die Statistik
früherer Durchgänge berücksichtigen; dies behebt das oben erwähnte
Problem.
</para>
<note><title>Anmerkung:</title>
<para>
Die meisten Codecs, die ABR-Encodierung unterstützen, unterstützen nur
die Encodierung in zwei Durchgängen (two pass) während einige andere wie
etwa <systemitem class="library">x264</systemitem>,
<systemitem class="library">Xvid</systemitem>
und <systemitem class="library">libavcodec</systemitem> Multipass
unterstützen, was die Qualität bei jedem Durchgang leicht verbessert.
Jedoch ist diese Verbesserung weder messbar noch ist sie nach dem
4-ten Durchgang oder so spürbar.
Aus diesem Grund werden in diesem Abschnitt die Encoderierung mit 2 Durchläufen
(two pass) und Multipass abwechselnd angewandt.
</para>
</note>
<para>
In jedem dieser Modi bricht der Videocodec (wie etwa
<systemitem class="library">libavcodec</systemitem>)
den Videoframe in 16x16 Pixel Macroblöcke und wendet danach einen
Quantisierer auf jeden Macroblock an. Je niedriger der Quantisierer desto
besser die Qualität und desto höher die Bitrate.
Die Methode, die der Filmencoder zur Bestimmung des auf einen gegebenen
Macroblock anzuwendenden Quantisierer verwendet, variiert und ist in
hohem Maße einstellbar. (Dies ist eine extrem übertriebene Vereinfachung
des aktuellen Prozesses aber nützlich, um das Grundkonzept zu verstehen.)
</para>
<para>
Wenn du eine konstante Bitrate festlegst, wird der Videocodec das Video
so encodieren, dass so viele Details wie notwendig und so wenig
wie möglich ausgesondert werden, um unterhalb der vorgegebenen Bitrate zu
bleiben. Wenn du dich wirklich nicht um die Dateigröße kümmerst, könntest
du auch CBR verwenden und eine nahezu endlose Bitrate festlegen.
(In der Praxis bedeutet dies einen Wert, der hoch genug ist, kein Limit
aufzuwerfen wie 10000Kbit.) Ohne echte Einschränkung der Bitrate wird
der Codec als Ergebnis den niedrigsten möglichen Quantisierer für jeden
Macroblock anwenden (wie durch <option>vqmin</option> für
<systemitem class="library">libavcodec</systemitem>
spezifiziert, Standardwert ist 2).
Sobald du eine Bitrate festlegst, die niedrig genug ist, den
Codec zur Anwendung eines höheren Quantisierers zu zwingen, bist Du
nahezu sicher dabei, die Qualität deines Videos zu ruinieren.
Um dies zu vermeiden, solltst du möglicherweise dein Video wie
in der später in diesem Handbuch beschriebenen Methode reduzieren.
Im Allgemeinen solltst du CBR vollkommen meiden, wenn dir Qualität
wichtig ist.
</para>
<para>
Mit konstantem Quantisierer wendet der Codec denselben Quantisierer, wie
durch die Option <option>vqscale</option> (für
<systemitem class="library">libavcodec</systemitem>) spezifiziert, auf jeden
Macroblock an.
Willst du einen Rip mit höchstmöglicher Qualität und ignorierst dabei
wiederum die Bitrate, kannst du <option>vqscale=2</option> verwenden.
Dies wird dieselbe Bitrate und PSNR (peak signal-to-noise ratio) liefern
wie CBR mit <option>vbitrate</option>=infinity und der Standardeinstellung
<option>vqmin</option>=2.
</para>
<para>
Das Problem mit konstantem Quantisierer ist, dass der vorgegebene Quantisierer
zum Einsatz kommt, egal ob der Macroblock ihn benötigt oder nicht. Dies heißt,
es wäre möglich, einen höheren Quantisierer auf einen Macroblock anzuwenden,
ohne sichtbare Qualität zu opfern. Warum die Bits für einen unnötig kleinen
Quantisierer verschwenden? Deine CPU hat soundso viele Arbeitsgänge Zeit zur
Verfügung, die Festplatte jedoch nur soundso viele Bits.
</para>
<para>
Bei einer Encodierung mit zwei Durchläufen (two pass), wird der erste Durchgang
den Film so rippen, als würde CBR vorliegen, jedoch wird ein Log die Eigenschaften
jedes Frames beibehalten. Diese Daten werden danach während des zweiten Durchgangs
dazu verwendet, intelligente Entscheidungen zur Wahl des Quantisierers zu treffen.
Während schneller Action oder hochdetaillierter Szenen werden womöglich
höhere Quantisierer, während langsamen Bewegungen und Szenen mit weniger Details
niedrigere Quantisierer verwendet.
Normalerweise ist die Anzahl der Bewegungen wichtiger als die der Details.
</para>
<para>
Wenn du <option>vqscale=2</option> verwendest, verschwendest du Bits. Wenn
du <option>vqscale=3</option> anwendest, wirst du keinen Rip mit bestmöglicher
Qualität erhalten. Angenommen du rippst eine DVD mit <option>vqscale=3</option>
und das Resultat ist 1800Kbit. Wenn du in zwei Durchgängen mit
<option>vbitrate=1800</option> encodierst, wird das daraus resultierende Video
eine <emphasis role="bold">bessere Qualität</emphasis> bei
<emphasis role="bold">gleicher Bitrate</emphasis> haben.
</para>
<para>
Da du nun davon überzeugt bist, dass zwei Durchgänge (two pass) den besten
Weg darstellen, stellt sich jetzt tatsächlich die Frage, welche Bitrate
verwendet werden soll? Die Antwort ist, dass es nicht nur eine
Antwort gibt. Idealerweise willst du eine Bitrate wählen, die die beste Balance
zwischen Qualität und Dateigröße ergibt. Die kann abhängig vom Quellvideo
variieren.
</para>
<para>
Interessiert die Größe nicht, stellen etwa 2000Kbit plus oder minus 200Kbit
einen guten Ausgangspunkt für einen sehr hochqualitativen Rip dar.
Bei einem Video mit schneller Action oder hohen Details, oder wenn du schlicht
und ergreifend ein sehr kritisches Auge besitzst, könntest du dich für 2400
oder 2600 entscheiden.
Bei einigen DVDs kannst du eventuell keinen Unterschied bei 1400Kbit feststellen.
Um ein besseres Gefühl zu bekommen, ist es eine gute Idee, mit Szenen bei
unterschiedlichen Bitraten herumzuexperimentieren.
</para>
<para>
Wenn du eine bestimmte Größe anvisierst, musst du die Bitrate irgendwie
kalkulieren.
Aber zuvor solltest du wissen, wieviel Platz du für den/die Audiotrack(s)
reservieren musst, daher solltest Du
<link linkend="menc-feat-dvd-mpeg4-audio">diese(n) zuerst rippen</link>.
Du kannst die Bitrate mit folgender Gleichung berechnen:
<systemitem>Bitrate = (zielgroesse_in_MByte - soundgroesse_in_MByte) * 1024 * 1024 / laenge_in_sek * 8 / 1000</systemitem>
Um zum Beispiel einen zweistündigen Film auf eine 702MB CD mit einem 60MB
Audiotrack zu bekommen, sollte die Videobitrate folgendermaßen sein:
<systemitem>(702 - 60) * 1024 * 1024 / (120*60) * 8 / 1000 = 740kbps</systemitem>
</para>
</sect2>
<sect2 id="menc-feat-dvd-mpeg4-constraints">
<title>Randbedingungen für effizientes Encodieren</title>
<para>
Aufgrund der Natur der MPEG-Komprimierung gibt es zahlreiche
Randbedingungen, denen du zum Erreichen maximaler Qualität folgen
solltest.
MPEG splittet das Video in Macroblöcke genannte 16x16 Quadrate auf,
jeder davon zusammengesetzt aus 4 8x8 Blöcken mit
Luma-(Intensitäts)-Informationen und zwei halb-auflösenden 8x8
Chroma-(Farb)-Blöcken (einer für die Rot-Cyan-Achse und der andere für
die Blau-Gelb-Achse).
Selbst wenn Breite und Höhe deines Films kein Vielfaches von 16 sind,
wird der Encoder ausreichend 16x16 Macroblöcke zur Abdeckung des
gesamten Bildbereichs verwenden und der Extraplatz wird verschwendet.
Folglich ist es keine gute Idee, im Interesse der Maximierung der
Qualität bei fester Dateigröße, Abmessungen zu verwenden, die kein
Vielfaches von 16 sind.
</para>
<para>
Die meisten DVDs besitzen ein bestimmtes Maß schwarzer Balken
an ihren Rändern. Diese dort zu belassen wird für die Qualität in mehrfacher
Hinsicht <emphasis role="bold">sehr</emphasis> schädlich sein.
</para>
<orderedlist>
<listitem>
<para>
MPEG-Kompression hängt in höchstem Maße von den
Frequenzbereichs-Transformationen ab, insbesondere von der
Discrete Cosine Transform (DCT), die der Fourier Transform ähnelt.
Diese Art Encodierung ist für darstellende Muster und weiche
Übergänge effizient, hat jedoch große Probleme mit scharfen Kanten.
Um diese zu encodieren muss sie viel mehr Bits verwenden,
oder es wird andernfalls ein als Ringing bekannter Artefakt
auftreten.
</para>
<para>
Die Discrete Frequency Transform (DCT) erfolgt separat auf jeden
Macroblock (eigentlich auf jeden Block), somit trifft dieses Problem
nur zu, wenn sich in einem Block eine scharfe Kante befindet.
Beginnt dein schwarzer Rand exakt an den Grenzen zum Vielfachen von
16 Pixeln, stellt dies kein Problem dar.
Seis drum, die schwarzen Ränder bei DVDs werden in den seltensten
Fällen schön angeordnet, daher wirst du sie in der Praxis immer
abschneiden müssen, um diesen Nachteil zu vermeiden.
</para>
</listitem>
</orderedlist>
<para>
Zusätzlich zu den Frequenzbereichs-Transformationen verwendet die
MPEG-Kompression Bewegungsvektoren, um den Wechsel von einem Frame
zum anderen darzustellen.
Bewegungsvektoren arbeiten bei Inhalt, der von den Kanten eines Bildes
her einfließt, normalerweise weniger effizient, da dieser im vorherigen
Frame nicht vorhanden ist. Solange sich das Bild bis voll zur Kante des
encodierten Bereichs hin vergrößert, haben Bewegungsvektoren kein Problem
mit Inhalt, der sich aus den Kanten des Bildes hinausbewegt. Die Präsenz
schwarzer Ränder kann jedoch Ärger machen:
</para>
<orderedlist continuation="continues">
<listitem>
<para>
Die MPEG-Kompression speichert für jeden Macroblock einen Vektor,
um ausfindig zu machen, welcher Teil des vorherigen Frames in diesen
Macroblock als Basis zur Vorhersage des nächsten Frames kopiert
werden soll. Nur die verbleibenden Unterschiede müssen encodiert werden.
Überspannt der Macroblock die Kante des Bildes und enthält einen
Teil des schwarzen Randes, werden Bewegungsvektoren aus anderen
Teilen des Bildes den schwarzen Rand überschreiben. Dies bedeutet, dass
jede Menge Bits entweder zur wiederholten Schwärzung des überschriebenen
Randes aufgewendet werden müssen, oder es wird (eher) erst gar kein
Bewegungsvektor genutzt und alle Änderungen innerhalb dieses Macroblocks
müssen explizit encodiert werden. So oder so wird die Encodiereffizienz
außerordentlich reduziert.
</para>
<para>
Nochmal, dieses Problem trifft nur dann zu, wenn schwarze Ränder
nicht an den Grenzen eines Vielfachen von 16 anstehen.
</para>
</listitem>
<listitem>
<para>
Zuletzt noch was, angenommen wir haben einen Macroblock im Inneren des
Bildes und ein Objekt bewegt sich aus Richtung Nähe der Kante des Bildes
her in diesen Block hinein. Die MPEG-Encodierung kann nicht sagen
"kopiere den Teil, der innerhalb des Bildes liegt, den schwarzen Rand
aber nicht". Somit wird der schwarze Rand ebenfalls mit hinein kopiert
und jede Menge Bits müssen zur Encodierung des Teils des Bildes, der
dort angenommen wird, aufgewendet werden.
</para>
<para>
Läuft das Bild ständig zur Kante des encodierten Bereichs hin, besitzt
MPEG spezielle Optimierungen, um immer wieder dann die Pixel am Rand des
Bildes zu kopieren, wenn ein Bewegungsvektor von außerhalb des
encodierten Bereichs ankommt. Dieses Feature wird nutzlos, wenn der Film
schwarze Ränder hat. Im Gegensatz zu den Problemen 1 und 2 hilft hier
kein Anordnen der Ränder am Vielfachen von 16.
</para>
</listitem>
<listitem>
<para>
Obwohl die Ränder komplett schwarz sind und sich nie ändern, ist
zumindest ein minimaler Overhead damit verbunden, mehr Macroblöcke
zu besitzen.
</para>
</listitem>
</orderedlist>
<para>
Aus all diesen Gründen wird empfohlen, schwarze Ränder komplett abzuschneiden.
Mehr noch, liegt ein Bereich mit Rauschen/Verzerrung an der Kante des Bildes,
steigert dessen Abschneiden ebenso die Encodiereffizienz. Videophile Puristen,
die den Originalzustand so nah wie möglich sichern wollen,
mögen dieses Abschneiden (cropping) beanstanden, wenn du jedoch nicht planst,
bei konstantem Quantisierer zu encodieren, wird der Qualitätsgewinn, den Du
durch dieses Abschneiden erreichst, beträchtlich über dem Verlust an Informationen
an den Kanten liegen.
</para>
</sect2>
<sect2 id="menc-feat-dvd-mpeg4-crop">
<title>Abschneiden und Skalieren</title>
<para>
Wiederaufruf der vorherigen Sektion, dass die letzte von Dir
encodierte Bildgröße ein Vielfaches von 16 sein sollte (bei beidem,
Breite und Höhe).
Diese kann durch Abschneiden, Skalieren erreicht werden oder durch
eine Kombination von beidem.
</para>
<para>
Beim Abschneiden gibt es ein paar Richtwerte, die befolgt werden müssen,
um eine Zerstörung des Films zu vermeiden.
Das normale YUV-Format, 4:2:0, speichert Chroma-(Farb)-Informationen
in einer Unterstichprobe (subsampled), z.B. wird Chroma nur halb so oft
in jede Richtung gesampelt wie Luma-(Intensitäts)-Informationen.
Beobachte dieses Diagramm, in dem L Luma-Samplingpunkte bedeuten und C
für Chroma steht.
</para>
<informaltable>
<?dbhtml table-width="40%" ?>
<?dbfo table-width="40%" ?>
<tgroup cols="8" align="center">
<colspec colnum="1" colname="col1"/>
<colspec colnum="2" colname="col2"/>
<colspec colnum="3" colname="col3"/>
<colspec colnum="4" colname="col4"/>
<colspec colnum="5" colname="col5"/>
<colspec colnum="6" colname="col6"/>
<colspec colnum="7" colname="col7"/>
<colspec colnum="8" colname="col8"/>
<spanspec spanname="spa1-2" namest="col1" nameend="col2"/>
<spanspec spanname="spa3-4" namest="col3" nameend="col4"/>
<spanspec spanname="spa5-6" namest="col5" nameend="col6"/>
<spanspec spanname="spa7-8" namest="col7" nameend="col8"/>
<tbody>
<row>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
</row>
<row>
<entry spanname="spa1-2">C</entry>
<entry spanname="spa3-4">C</entry>
<entry spanname="spa5-6">C</entry>
<entry spanname="spa7-8">C</entry>
</row>
<row>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
</row>
<row>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
</row>
<row>
<entry spanname="spa1-2">C</entry>
<entry spanname="spa3-4">C</entry>
<entry spanname="spa5-6">C</entry>
<entry spanname="spa7-8">C</entry>
</row>
<row>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
Wie du sehen kannst, kommen Zeilen und Spalten des Bildes natürlich paarweise.
Folglich <emphasis>müssen</emphasis> deine Abschneide-Offsets und
Abmessungen geradzahlig sein.
Sind sie dies nicht, wird Chroma nicht mehr korrekt mit Luma abgeglichen.
In der Theorie ist es möglich, mit ungeraden Offsets abzuschneiden, jedoch
erfordert dies ein Resampling von Chroma, was potentiell eine mit Verlust
verbundene Operation bedeutet und vom Crop-Filter nicht unterstützt
wird.
</para>
<para>
Weiterhin wird interlaced Video folgendermaßen gesampelt:
</para>
<informaltable>
<?dbhtml table-width="80%" ?>
<?dbfo table-width="80%" ?>
<tgroup cols="16" align="center">
<colspec colnum="1" colname="col1"/>
<colspec colnum="2" colname="col2"/>
<colspec colnum="3" colname="col3"/>
<colspec colnum="4" colname="col4"/>
<colspec colnum="5" colname="col5"/>
<colspec colnum="6" colname="col6"/>
<colspec colnum="7" colname="col7"/>
<colspec colnum="8" colname="col8"/>
<colspec colnum="9" colname="col9"/>
<colspec colnum="10" colname="col10"/>
<colspec colnum="11" colname="col11"/>
<colspec colnum="12" colname="col12"/>
<colspec colnum="13" colname="col13"/>
<colspec colnum="14" colname="col14"/>
<colspec colnum="15" colname="col15"/>
<colspec colnum="16" colname="col16"/>
<spanspec spanname="spa1-2" namest="col1" nameend="col2"/>
<spanspec spanname="spa3-4" namest="col3" nameend="col4"/>
<spanspec spanname="spa5-6" namest="col5" nameend="col6"/>
<spanspec spanname="spa7-8" namest="col7" nameend="col8"/>
<spanspec spanname="spa9-10" namest="col9" nameend="col10"/>
<spanspec spanname="spa11-12" namest="col11" nameend="col12"/>
<spanspec spanname="spa13-14" namest="col13" nameend="col14"/>
<spanspec spanname="spa15-16" namest="col15" nameend="col16"/>
<tbody>
<row>
<entry namest="col1" nameend="col8">Oberes Feld</entry>
<entry namest="col9" nameend="col16">Unteres Feld</entry>
</row>
<row>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
</row>
<row>
<entry spanname="spa1-2">C</entry>
<entry spanname="spa3-4">C</entry>
<entry spanname="spa5-6">C</entry>
<entry spanname="spa7-8">C</entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
</row>
<row>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry spanname="spa9-10">C</entry>
<entry spanname="spa11-12">C</entry>
<entry spanname="spa13-14">C</entry>
<entry spanname="spa15-16">C</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
</row>
<row>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
</row>
<row>
<entry spanname="spa1-2">C</entry>
<entry spanname="spa3-4">C</entry>
<entry spanname="spa5-6">C</entry>
<entry spanname="spa7-8">C</entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
</row>
<row>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry spanname="spa9-10">C</entry>
<entry spanname="spa11-12">C</entry>
<entry spanname="spa13-14">C</entry>
<entry spanname="spa15-16">C</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
<entry>L</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
Wie du erkennen kannst, wiederholt sich das Muster bis nach 4 Zeilen nicht.
Somit müssen bei interlaced Video dein y-Offset und die Höhe für das
Ausschneiden ein Vielfaches von 4 sein.
</para>
<para>
Die ursprüngliche DVD-Auflösung ist 720x480 für NTSC und 720x576 für PAL, es
gibt jedoch ein Aspektkennzeichen, das spezifiziert, ob Vollbild (4:3) oder
Breitwandfilm (16:9) vorliegt. Viele (wenn nicht die meisten) Breitwandfilm-DVDs
sind nicht grundsätzlich 16:9, sondern entweder 1.85:1 oder 2.35:1 (Cinescope).
Dies bedeutet, dass es schwarze Bänder im Video geben wird, die herausgeschnitten
werden müssen.
</para>
<para>
<application>MPlayer</application> stellt einen Crop-Erkennungsfilter
zur Verfügung, der das Ausschnittsrechteck (<option>-vf cropdetect</option>)
bestimmt.
Starte <application>MPlayer</application> mit
<option>-vf cropdetect</option>, und er wird die Crop-Einstellungen
zum Entfernen der Ränder ausgeben.
du solltest den Film lange genug laufen lassen, damit die gesamte Bildfläche
verwendet wird, um akkurate Crop-Werte zu erhalten.
</para>
<para>
Teste danach die Werte, die von <application>MPlayer</application>
über die Befehlszeile mittels <option>cropdetect</option> ausgegeben wurden
und passe das Rechteck nach deinen Bedürfnissen an.
Der Filter <option>rectangle</option> kann dabei helfen, indem er dir erlaubt,
das Rechteck interaktiv über dem Film zu positionieren.
Vergiss nicht, den oben genannten Teilbarkeitsrichtwerten zu folgen, sodass du
die Chroma-Ebenen nicht verkehrt anordnest.
</para>
<para>
In bestimmten Fällen könnte Skalieren nicht wünschenswert sein.
Skalierung in vertikaler Richtung ist mit interlaced Video
schwierig, und wenn du das Interlacing beibehalten willst, solltest
du für gewöhnlich das Skalieren bleiben lassen.
Hast du nicht vor zu skalieren, willst aber nach wie vor Abmessungen
in einem Vielfachen von 16 verwenden, musst du über den Rand
hinausschneiden.
Schneide aber lieber nicht über den Rand hinaus, da schwarze Ränder
sehr schlecht zu encodieren sind!
</para>
<para>
Weil MPEG-4 16x16 Macroblöcke nutzt, solltest du dich vergewissern,
dass jede Abmessung des zu encodierenden Videos ein Vielfaches von
16 ist oder du verschlechterst andernfalls die Qualität, speziell bei
niedrigeren Bitraten. Du kannst dies durch Abrunden der Breite und
Höhe des Ausschnittsrechtecks hinunter auf den nächsten Wert eines
Vielfachen von 16 erreichen.
Wie früher bereits erklärt, wirst du beim Abschneiden das y-Offset
um die Hälfte der Differenz der alten und neuen Höhe erhöhen wollen,
sodass das daraus resultierende Video aus der Mitte des Frames genommen
wird. Und stelle wegen der Art, wie ein DVD-Video gesampelt wird, sicher,
dass das Offset eine gerade Zahl ist. (Verwende in der Tat - als eine
Regel - nie ungerade Werte für irgendwelche Parameter beim Abschneiden
oder Skalieren eines Videos) Wenn du dich beim Wegwerfen einiger extra
Pixel nicht wohl fühlst, ziehst du es stattdessen vor, das Video zu
skalieren.
Wir werden uns dies im unten stehenden Beispiel mal ansehen.
Du kannst den <option>cropdetect</option>-Filter sogar alles oben erwähnte
für dich erledigen lassen, da dieser einen optionalen Parameter
<option>round</option> besitzt, der standardmäßig gleich 16 ist.
</para>
<para>
Pass auch auf "halbschwarze" Pixel an den Kanten auf. Stelle sicher, dass
du diese ebenfalls mit abschneidest oder du vergeudest dort Bits, wo sie
doch besser anderswo verwendet werden sollten.
</para>
<para>
Nachdem nun alles gesagt ist, wirst du möglicherweise bei einem
Video landen, dessen Pixel nicht ganz 1.85:1 oder 2.35:1, aber ziemlich
nahe dran sind. Du könntest ein neues Seitenverhältnis manuell berechnen,
aber <application>MEncoder</application> bietet eine Option für
<systemitem class="library">libavcodec</systemitem> genannt
<option>autoaspect</option>, die das für dich erledigt.
Skaliere dieses Video auf keinen Fall hoch, um die Pixel abzugleichen
solange du keinen Festplattenplatz verschwenden willst.
Das Skalieren sollte beim Playback gemacht werden und der Player wird das
in der AVI gespeicherte Seitenverhältnis zur Bestimmung der besten
Auflösung verwenden.
Unglücklicherweise erzwingen nicht alle Player diese Auto-Skalierinformation,
und deshalb willst du vielleicht trotzdem neu skalieren.
</para>
</sect2>
<sect2 id="menc-feat-dvd-mpeg4-resolution-bitrate">
<title>Auswahl von Auflösung und Bitrate</title>
<para>
Wenn du nicht vor hast, im Modus mit konstantem Quantisier zu encodieren,
musst du eine Bitrate auswählen.
Das Konzept der Bitrate ist denkbar einfach.
Sie ist die (mittlere) Anzahl Bits, die pro Sekunde zum Speichern des
Films verbraucht werden.
Normalerweise wird die Bitrate in Kilobit (1000 Bit) pro Sekunde gemessen.
Die Größe deines Films auf der Platte ist die Bitrate multipliziert mit der
Dauer des Films, plus einem kleinen "Overhead" (siehe zum Beispiel in der
Sektion über
<link linkend="menc-feat-dvd-mpeg4-muxing-avi-limitations">den AVI-Container</link>).
Weitere Parameter wie Skalierung, Cropping, usw. werden die Dateigröße
<emphasis role="bold">nicht</emphasis> ändern, solange du nicht auch
die Bitrate veränderst!
</para>
<para>
Die Bitrate skaliert <emphasis role="bold">nicht</emphasis> proportional
zur Auflösung.
Dies bedeutet, eine Datei 320x240 mit 200 KBit/Sek wird nicht dieselbe
Qualität aufweisen wie der gleiche Film bei 640x480 und 800 KBit/Sek!
Dafür gibt es zwei Gründe:
<orderedlist>
<listitem>
<para>
<emphasis role="bold">Wahrnehmbar</emphasis>: du bemerkst
MPEG-Artefakte eher, wenn sie größer hochskaliert sind!
Artefakte erscheinen bei einer Skalierung von Blöcken (8x8).
Dein Auge wird in 4800 kleinen Blöcken nicht so leicht Fehler sehen
wie es welche in 1200 großen Blöcken sieht (vorausgesetzt du skalierst
beide auf Vollbild).
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">Theoretisch</emphasis>: Wenn du ein Bild
runterskalierst, aber nach wie vor die selbe Größe der (8x8)
Blöcke zur Frequenzraumtransformation verwendest, bewegst Du
mehr Daten in die Hochfrequenzbänder.
Grob gesagt, jedes Pixel enthält mehr des Details als es dies
zuvor tat.
Somit enthält dein herunterskaliertes Bild 1/4 der Information
in räumlichen Richtungen, es könnte immer noch einen hohen Anteil
Information im Frequenzbereich enthalten (vorausgesetzt dass die
hohen Frequenzen im originalen 640x480 Bild nicht ausgenutzt wurden).
</para>
</listitem>
</orderedlist>
</para>
<para>
Vergangene Leitfäden legten nahe, eine Bitrate und Auflösung zu wählen,
die auf eine "Bits pro Pixel"-Näherung basieren, dies ist jedoch im
allgemeinen aus oben genannten Gründen nicht gültig.
Eine bessere Schätzung scheint zu sein, dass Bitraten proportional zur
Quadratwurzel der Auflösung skalieren, sodass 320x240 und 400 KBit/Sek
vergleichbar mit 640x480 bei 800 KBit/Sek wären.
Dies wurde aber nicht mit theoretischer oder empirischer Strenge verifiziert.
Desweiteren ist es in Anbetracht der Tatsache, dass Filme in Bezug auf Rauschen, Details,
Bewegungsgrad usw. außerordentlich variieren, zwecklos, allgemeine Empfehlungen
für die Bits pro Diagonallänge (dem Analog zu Bits pro Pixel
unter Verwendung der Quadratwurzel) abzugeben.
</para>
<para>
So weit haben wir nun die Schwierigkeit der Wahl von Bitrate und
Auflösung diskutiert.
</para>
<sect3 id="menc-feat-dvd-mpeg4-resolution-bitrate-compute">
<title>Berechnen der Auflösung</title>
<para>
Die folgenden Schritte werden dich in der Berechnung der Auflösung
deiner Encodierung anleiten, ohne das Video allzusehr zu verzerren,
indem verschiedene Typen von Informationen über das Quellvideo in
Betracht gezogen werden.
Zuerst solltest du die encodierte Auflösung berechnen:
<systemitem>ARc = (Wc x (ARa / PRdvd )) / Hc</systemitem>
<itemizedlist>
<title>wobwei:</title>
<listitem>
<para>
Wc und Hc die Breite und Höhe des zugeschnittenen Videos darstellen
</para>
</listitem>
<listitem>
<para>
ARa das angezeigte Seitenverhältnis ist, das üblicherweise 4/3 oder 16/9 beträgt
</para>
</listitem>
<listitem>
<para>
PRdvd das Pixelverhältnis der DVD ist, welches gleich 1.25=(720/576) für
PAL-DVDs und 1.5=(720/480) für NTSC-DVDs beträgt
</para>
</listitem>
</itemizedlist>
</para>
<para>
Dann kannst du die X- und Y-Auflösung berechnen, gemäß eines gewisse Faktors
der Kompressionsqualität (CQ):
<systemitem>ResY = INT(SQRT( 1000*Bitrate/25/ARc/CQ )/16) * 16</systemitem>
und
<systemitem>ResX = INT( ResY * ARc / 16) * 16</systemitem>
</para>
<para>
Okay, aber was ist der CQ?
Der CQ repräsentiert die Anzahl Bits pro Pixel und pro Frame der Encodierung.
Grob ausgedrückt, je größer der CQ, desto geringer die Wahrscheinlichkeit,
Encodierungsartefakte zu sehen.
Trotz allem, wenn du eine Zielgröße für deinen Film hast (1 oder 2 CDs zum Beispiel),
gibt es eine begrenzte Gesamtzahl an Bits, die du aufwenden kannst; deswegen ist es
notwendig, einen guten Kompromiss zwischen Komprimierbarkeit und Qualität zu suchen.
</para>
<para>
Der CQ hängt von der Bitrate, der Effektivität des Videocodecs und der
Filmauflösung ab.
Um den CQ anzuheben, könntest du typischerweise den Film unter der Annahme
herunterskalieren, dass die Bitrate mit der Funktion der Zielgröße und der
Länge des Films berechnest, die ja konstant sind.
Mit MPEG-4 ASP-Codecs wie <systemitem class="library">Xvid</systemitem>
und <systemitem class="library">libavcodec</systemitem>, resultiert ein CQ
unter 0.18 für gewöhnlich in einem ziemlich blockhaften Bild, weil nicht
genug Bits zum Codieren der Information jedes Macroblocks vorhanden sind.
(MPEG4, wie auch viele andere Codecs, gruppiert Pixel nach Blöcken verschiedener
Pixel, um das Bild zu komprimieren; sind nicht genügend Bits vorhanden,
werden die Kanten dieser Blöcke sichtbar.)
Es ist daher weise, einen CQ im Bereich von 0.20 bis 0.22 für einen 1 CD-Rip
und 0.26-0.28 für einen 2 CD-Rip mit Standard-Encodieroptionen zu nehmen.
Höherentwickelte Encodieroptionen wie die hier für
<link linkend="menc-feat-mpeg4-lavc-example-settings"><systemitem class="library">libavcodec</systemitem></link>
und
<link linkend="menc-feat-xvid-example-settings"><systemitem class="library">Xvid</systemitem></link>
aufgelisteten sollten es möglich machen, dieselbe Qualität mit einem CQ im Bereich
von 0.18 bis 0.20 für einen 1 CD-Rip und 0.24 bis 0.26 für einen 2 CD-Rip zu erreichen.
Mit den MPEG-4 AVC-Codecs wie <systemitem class="library">x264</systemitem>,
kannst du einen CQ im Bereich von 0.14 bis 0.16 mit Standard-Encodieroptionen
verwenden, und solltest bis auf 0.10 bis 0.12 mit den
<link linkend="menc-feat-x264-example-settings">erweiterten Encodieroptionen von <systemitem class="library">x264</systemitem></link>
runter gehen können.
</para>
<para>
Bitte nimm zur Kenntnis, dass der CQ lediglich eine richtungsweisendes Maß ist,
da sie vom encodierten Inhalt abhängt. Ein CQ von 0.18 kann für einen
Bergman-Film recht hübsch aussehen, im Gegensatz zu einem Film wie
The Matrix, der jede Menge High-Motion-Szenen enthält.
Auf der anderen Seite ist es nutzlos, den CQ höher als 0.30 zu schrauben,
da du ohne spürbaren Qualitätsgewinn Bits vergeuden würdest.
Beachte ebenso, dass wie früher in diesem Handbuch bereits angemerkt,
niedrig auflösende Videos einen größeren CQ benötigen, um gut auszusehen
(im Vergleich z.B. zur DVD-Auflösung).
</para>
</sect3>
</sect2>
<sect2 id="menc-feat-dvd-mpeg4-filtering">
<title>Filtern</title>
<para>
Zu lernen, wie man <application>MEncoder</application>s Videofilter
verwendet, ist essentiell, um gute Encodierungen zu produzieren.
Jede Videoverarbeitung wird über Filter ausgeführt -- Ausschneiden,
Skalieren, Farbanpassung, Rauschentfernung, Scharfzeichnen, Deinterlacing,
telecine, inverses telecine und Deblocking, um nur ein paar davon aufzuzählen.
Zusammen mit der gewaltigen Zahl unterstützter Inputformate, ist die Vielfalt der
in <application>MEncoder</application> verfügbaren Filter eine seiner
Hauptvorteile im Vergleich zu ähnlichen Programmen.
</para>
<para>
Filter werden in einer Kette über die Option -vf geladen:
<screen>-vf filter1=Optionen,filter2=Optionen,...</screen>
Die meisten Filter nehmen mehrere numerische, kommagetrennte
Optionen entgegen, jedoch variiert die Syntax der Optionen von
Filter zu Filter, also lies bitte die Manpage für Details
zu den Filtern, die du verwenden willst.
</para>
<para>
Filter wirken auf das Video in der Reihenfolge ein, in der sie geladen werden.
Zum Beispiel wird folgende Kette:
<screen>-vf crop=688:464:12:4,scale=640:464</screen>
zuerst den Bereich 688x464 aus dem Bild schneiden mit der oberen, linken
Ecke bei (12,4) und danach das Ergebnis auf 640x464 herunter skalieren.
</para>
<para>
Bestimmte Filter müssen zu oder nahe dem Anfang der Filterkette geladen
werden, um Vorteile aus den Informationen des Videodecoders zu ziehen,
die ansonsten durch andere Filter verloren gehen oder ungültig gemacht
würden.
Die wichtigsten Beispiele sind <option>pp</option>
(Nachbearbeitung (postprocessing), nur wenn es Deblock- oder
Dering-Operationen durchführt), <option>spp</option> (ein weiterer
Postprozessor zum Entfernen von MPEG-Artefakten), <option>pullup</option>
(umgekehrtes telecine) und <option>softpulldown</option> (zur Konvertierung
von soft telecine nach hard telecine).
</para>
<para>
Im Allgemeinen solltest du den Film so wenig wie möglich Filtern, um
nahe an der originalen DVD-Quelle zu bleiben. Ausschneiden ist oft
notwendig (wie oben beschrieben), vermeide aber das Skalieren von Videos.
Obwohl das Herunterskalieren manchmal vorgezogen wird, um höhere Quantisierer
zu verwenden, wollen wir beide diese Dinge vermeiden: Erinnere dich daran,
dass wir von Anfang an beschlossen hatten, einen Kompromiss zwischen
Bits und Qualität zu schließen.
</para>
<para>
Passe ebenso kein Gamma, Kontrast, Helligkeit, usw. an. Was auf deinem
Display gut aussieht, sieht auf anderen eventuell nicht gut aus. Diese
Anpassungen sollten nur im Playback vorgenommen werden.
</para>
<para>
Eine Sache, die du vielleicht machen willst, ist, das Video durch einen sehr
feinen Entrauschfilter (Denoise) zu schicken, wie etwa <option>-vf hqdn3d=2:1:2</option>.
Nochmals, es geht darum, die Bits einer besseren Verwendung zuzuführen: Warum
Bits zum Encodieren des Rauschens verschwenden, wenn du dieses Rauschen auch
während des Playback entfernen kannst?
Die Parameter für <option>hqdn3d</option> zu erhöhen, wird überdies
die Komprimierbarkeit erhöhen, erhöhst du jedoch die Werte zu sehr, riskierst Du
eine Verringerung der Bildsichtbarkeit. Die oben vorgeschlagenen Werte
(<option>2:1:2</option>) sind ziemlich konservativ; du solltest dich frei
fühlen, mit höheren Werten herumzuexperimentieren und die Ergebnisse
selbst zu beobachten.
</para>
</sect2>
<sect2 id="menc-feat-dvd-mpeg4-interlacing">
<title>Interlacing und Telecine</title>
<para>
Nahezu alle Filme sind bei 24 fps aufgenommen. Weil NTSC 30000/1001 fps entspricht,
müssen mit diesen 24 fps Videos einige Verarbeitungen durchgeführt werden,
um sie mit der korrekten NTSC-Framerate laufen zu lassen. Der Prozess wird 3:2
pulldown genannt, allgemein telecine zugeordnet (weil pulldown des öfteren
während des telecine-Prozesses angewandt wird), und naiv so beschrieben,
dass er durch Verlangsamung des Films auf 24000/1001 fps und dem
Wiederholen jeden vierten Frames arbeitet.
</para>
<para>
Keine spezielle Verarbeitung ist jedoch bei einem Video für PAL-DVDs
durchzuführen, das bei 25 fps läuft. (Technisch gesehen kann PAL telecined
werden, 2:2 pulldown genannt, dies ist jedoch in der Praxis nicht von Bedeutung.)
Der 24 fps Film wird einfach mit 25 fps abgespielt. Das Resultat ist, dass
der Film ein wenig schneller abläuft, doch solange du kein Alien bist, wirst
du möglicherweise keinen Unterschied wahrnehmen.
Die meisten PAL-DVDs haben pitch-korrigiertes Audio, dadurch hören sie sich
bei 25 fps abgespielt korrekt an, obwohl der Audiotrack (und infolgedessen der
gesamte Film) eine 4% kürzere Abspielzeit hat wie NTSC-DVDs.
</para>
<para>
Weil das Video in einer PAL-DVD nicht verändert wurde, musst du dich nicht
viel um die Framerate sorgen. Die Quelle ist 25 fps und dein Rip wird 25
fps haben. Wenn du jedoch einen NTSC-DVD-Film rippst, musst du eventuell
umgekehrtes telecine anwenden.
</para>
<para>
Für mit 24 fps aufgenommene Filme ist das Video auf der NTSC-DVD entweder telecined
30000/1001 oder hat andernfalls progressive 24000/1001 fps und es ist vorgesehen,
on-the-fly vom DVD-Player telecined zu werden. Auf der anderen Seite sind TV-Serien
üblicherweise nur interlaced, nicht telecined. Dies ist keine feste Regel: Einige
TV-Serien sind interlaced (wie etwa Buffy die Vampirjägerin), wogegen andere
eine Mixtur aus progressive und interlaced sind (so wie Angel oder 24) - wers kennt :).
</para>
<para>
Es wird strengstens empfohlen, die Sektion über
<link linkend="menc-feat-telecine">Wie mit telecine und interlacing in NTSC-DVDs umgehen</link>
durchzulesen, um den Umgang mit den verschiedenen Möglichkeiten zu lernen.
</para>
<para>
Wenn du aber hauptsächlich nur Filme rippst, gehst du wahrscheinlich entweder
mit 24 fps progressivem oder telecined Video um, in welchem Falle du
den Filter <option>pullup</option> mittels <option>-vf pullup,softskip</option>
verwenden kannst.
</para>
</sect2>
<sect2 id="menc-feat-dvd-mpeg4-encoding-interlaced">
<title>Interlaced Video encodieren</title>
<para>
Ist der Film, den du encodieren willst, interlaced (NTSC-Video oder
PAL-Video), wirst du wählen müssen, ob du ihn deinterlacen willst
oder nicht.
Während das Deinterlacing deinen Film zwar auf progressiven Scan-Displays
wie Computermonitoren und Projektoren verwendbar macht, wird dich dies
doch etwas kosten: Die Feldrate von 50 oder 60000/1001 Feldern pro Sekunde
wird auf 25 oder 30000/1001 Frames pro Sekunde halbiert und annähernd die
Hälfte der Informationen in deinem Film geht während Szenen mit
signifikanter Bewegung verloren.
</para>
<para>
Deswegen wird empfohlen, wenn du aus Gründen hochqualitativer
Archivierung encodierst, kein Deinterlacing durchzuführen.
Du kannst den Film immer noch beim Playback deinterlacen,
wenn du ihn auf progressiven Scan-Geräten anzeigst. Und zukünftige
Player werden in der Lage sein, auf volle Feldrate zu
deinterlacen, mit Interpolation auf 50 oder 60000/1001 komplette
Frames pro Sekunde aus interlaced Video heraus.
</para>
<para>
Spezielle Sorgfalt solltest du bei der Arbeit mit interlaced Video walten lassen:
</para>
<orderedlist>
<listitem>
<para>
Ausschneidehöhe und y-Offset müssen Vielfache von 4 sein.
</para>
</listitem>
<listitem>
<para>
Jedes vertikale Skalieren muss im interlaced Modus durchgeführt werden.
</para>
</listitem>
<listitem>
<para>
Nachbearbeitungs- (postprocessing) und Rauschunterdrückungsfilter (denoising)
funktionieren eventuell nicht wie erwartet, wenn du nicht speziell darauf achtest,
dass sie zu einem Zeitpunkt nur ein Feld verarbeiten, und sie können das Video
kaputt machen, wenn sie inkorrekt angewendet werden.
</para>
</listitem>
</orderedlist>
<para>
Mit diesen Dingen im Kopf, hier das erste Beispiel:
</para>
<screen>mencoder <replaceable>capture.avi</replaceable> -mc 0 -oac lavc -ovc lavc -lavcopts \
vcodec=mpeg2video:vbitrate=6000:ilme:ildct:acodec=mp2:abitrate=224</screen>
<para>
Beachte die Optionen <option>ilme</option> und <option>ildct</option>.
</para>
</sect2>
<sect2 id="menc-feat-dvd-mpeg4-av-sync">
<title>Anmerkungen zur Audio-/Videosynchronisation</title>
<para>
<application>MEncoder</application>s Algorithmen der Audio-/Videosynchronisation
wurden mit der Intention entwickelt, Dateien mit kaputter Sychronisation wieder herzustellen.
In einigen Fällen können unnötiges Überspringen und Duplizieren
von Frames und möglicherweise leichte A/V-Desynchronisation verursachen, auch wenn sie
mit dem richtigen Input verwendet werden
(gewiss, Probleme mit A/V-Synchronisation treffen nur zu, wenn du den Audiotrack während
der Transcodierung des Videos verarbeitest oder kopierst, wozu auch nachhaltig
ermutigt wird).
Hierfür müsstest du mit der Option <option>-mc 0</option> in die
Grundeinstellung der A/V-Synchronisation wechseln oder diese in deine
<systemitem>~/.mplayer/mencoder</systemitem> Konfigurationsdatei eintragen,
solange du ausschließlich mit guten Quellen arbeitest (DVD, TV-Capture,
hochqualitativen MPEG-4-Rips usw.) und mit nicht-kaputten ASF/RM/MOV-Dateien.
</para>
<para>
Wenn du dich überdies gegen merkwürdige Frameübersprünge und -duplikationen
absichern willst, kannst du beides verwenden, <option>-mc 0</option>
und <option>-noskip</option>.
Dies verhindert <emphasis>jede</emphasis> A/V-Synchronisation und kopiert die Frames
eins-zu-eins, somit kannst du sie nicht verwenden, falls du irgendwelche Filter
verwendest, die unvorhersagbar Frames hinzufügen oder streichen oder falls
deine Input-Datei eine variable Framerate besitzt!
Deshalb wird eine allgemeine Anwendung von <option>-noskip</option> nicht empfohlen.
</para>
<para>
Die von <application>MEncoder</application> unterstützte sogenannte
"3-pass" Audioencodierung soll laut Berichten A/V-Desynchronisation
verursachen.
Dies geschieht definitiv dann, wenn sie in Verbindung mit bestimmten Filtern
verwendet wird, daher wird <emphasis>nicht</emphasis> empfohlen, den
3-pass-Audio-Modus anzuwenden.
Dieses Feature ist nur aus Kompatibilitätsgründen übrig geblieben und für
erfahrene Benutzer, die wissen, wann es sicher anzuwenden ist und wann nicht.
Wenn du zuvor noch nie etwas vom 3-pass-Modus gehört hast, vergiss, dass wir es je
erwähnt haben!
</para>
<para>
Es gab auch Berichte über A/V-Desynchronisation, wenn
mit <application>MEncoder</application> von stdin encodiert wurde.
Lass das bleiben! Verwende immer eine Datei oder ein CD/DVD/usw-Laufwerk
als Input.
</para>
</sect2>
<sect2 id="menc-feat-dvd-mpeg4-codec">
<title>Auswahl des Videocodecs</title>
<para>
Welcher Videocodec die beste Wahl ist, hängt von mehreren Faktoren
wie Größe, Qualität, Streambarkeit, Brauchbarkeit und Popularität, manche
davon weitgehend vom persönlichen Geschmack und technischen
Randbedingungen ab.
</para>
<itemizedlist>
<listitem>
<para>
<emphasis role="bold">Kompressionseffizienz</emphasis>:
Es ist leicht zu verstehen, dass die meisten Codecs der neueren Generation
dafür gemacht wurden, Qualität und Komprimierung zu verbessern.
Deshalb behauptet der Autor dieses Handbuches und viele andere Leute, dass
du nichts verkehrt machen kannst,
<footnote id='fn-menc-feat-dvd-mpeg4-codec-cpu'>
<para>Sei trotzdem vorsichtig: MPEG-4 AVC-Videos in DVD-Auflösung zu
decodieren erfordert einen schnellen Rechner (z.B. einen Pentium 4
über 1.5GHz oder einen Pentium M über 1GHz).
</para>
</footnote>
wenn du MPEG-4 AVC-Codecs wie
<systemitem class="library">x264</systemitem> anstatt MPEG-4 ASP-Codecs
wie <systemitem class="library">libavcodec</systemitem> MPEG-4 oder
<systemitem class="library">Xvid</systemitem> wählst.
(Zukunftsorientierte Codec-Entwickler interessiert eventuell Michael
Niedermayers Meinung
"<ulink url="http://guru.multimedia.cx/?p=10">why MPEG4-ASP sucks</ulink>"
zu lesen.)
Ebenso solltest du mit MPEG-4 ASP eine bessere Qualität erhalten als mit
MPEG-2-Codecs.
</para>
<para>
Allerdings können neuere Codecs, die noch stark in der Entwicklung stecken,
unter unentdeckten Bugs leiden, die die Encodierung ruinieren können.
Dies nimmt man schlicht in Kauf, wenn man "bleeding edge"-Technologie
verwendet.
</para>
<para>
Außerdem erfordert der Umgang mit einem neuen Codec und sich mit dessen Optionen
vertraut zu machen eine Zeit, bis du weißt, was alles anzupassen
ist, um die erhoffte Bildqualität zu erreichen.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">Hardware-Kompatibilität</emphasis>:
Gewöhnlich dauert es bei neuen standalone Video-Playern lange, bis der
Support für die neuesten Videocodecs eingebunden ist.
Als ein Ergebnis unterstützen die meisten nur MPEG-1 (wie VCD, XVCD
und KVCD), MPEG-2 (wie DVD, SVCD und KVCD) und MPEG-4 ASP (wie DivX,
LMP4 von <systemitem class="library">libavcodec</systemitem> und
<systemitem class="library">Xvid</systemitem>)
(Vorsicht: Im Allgemeinen werden nicht alle MPEG-4 ASP-Features unterstützt).
Sieh bitte in den technischen Spezifikationen deines Players nach (falls
welche vorhanden sind) oder google nach mehr Informationen.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">Beste Qualität pro Encodierzeit</emphasis>:
Codecs, die es schon einige Zeit gibt (wie
<systemitem class="library">libavcodec</systemitem> MPEG-4 und
<systemitem class="library">Xvid</systemitem>), sind gewöhnlich heftig
mit allen möglichen intelligenten Algorithmen und SIMD Assembly-Code optimiert.
Das sind sie deshalb, weil sie darauf abzielen, das beste Verhältnis von Qualität
pro Encodierzeit zu liefern.
Jedoch haben sie oft einige sehr fortschrittliche Optionen, die,
wenn aktiviert, das Encodieren bei marginalem Gewinn wirklich langsam
machen.
</para>
<para>
Wenn du es auf die Wahnsinnsgeschwindigkeit abzielst, solltest du
in der Nähe der Standardeinstellungen des Videocodecs bleiben
(obwohl du ruhig weitere Optionen ausprobieren solltest, die in
anderen Sektionen dieses Handbuchs angesprochen werden).
</para>
<para>
Vielleicht überlegst du auch, einen Codec auszuwählen, der mit
Multi-Threading klarkommt, was nur für Benutzer von Rechnern
mit mehreren CPUs von Nutzen ist.
<systemitem class="library">libavcodec</systemitem> MPEG-4 erlaubt
dies zwar, aber die Geschwindigkeitsgewinne sind begrenzt und es gibt
einen leicht negativen Effekt in Bezug auf die Bildqualität.
Die Multi-Thread-Encodierung von <systemitem class="library">Xvid</systemitem>,
durch die Option <option>threads</option> aktiviert, kann zum Ankurbeln
der Encodiergeschwindigkeit - um in typischen Fällen etwa 40-60% -
bei wenn überhaupt geringer Bildverschlechterung verwendet werden.
<systemitem class="library">x264</systemitem> erlaubt ebenfalls
Multi-Thread-Encodierung, was das Encodieren momentan um 94% beschleunigt
bei gleichzeitiger Verringerung des PSNR um einen Wert zwischen 0.005dB und 0.01dB.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">Persönlicher Geschmack</emphasis>:
Hier beginnt die Angelegenheit oft irrational zu werden: Aus den selben
Gründen, aus denen manche über Jahre an DivX 3 hängen, während neuere
Codecs bereits Wunder wirken, ziehen einige Leute
<systemitem class="library">Xvid</systemitem>
oder <systemitem class="library">libavcodec</systemitem> MPEG-4 dem
<systemitem class="library">x264</systemitem> vor.
</para>
<para>
Du solltest dir dein eigenes Urteil bilden; lass dich nicht von Leuten
vollquasseln, die auf den einen Codec schwören.
Nimm ein paar Beispiel-Clips von Originalquellen und vergleiche die
verschiedenen Encodier-Optionen und Codecs, um den einen zu finden, mit
dem du am besten klarkommst.
Der beste Codec ist der, den du beherrschst und der in deinen Augen
auf deinem Display am besten aussieht.
<footnote id='fn-menc-feat-dvd-mpeg4-codec-playback'>
<para>Dieselbe Encodierung kann auf dem Monitor eines anderen vollkommen
anders aussehen oder wenn sie von einem anderen Decoder abgespielt wird,
also mach deine Encodierungen zukunftssicher indem du sie unter verschiedenen
Setups ablaufen lässt.</para></footnote>!
</para>
</listitem>
</itemizedlist>
<para>
Sieh dazu bitte in der Sektion
<link linkend="menc-feat-selecting-codec">Auswahl der Codecs und Containerformate</link>
nach der Liste der unterstützten Codecs.
</para>
</sect2>
<sect2 id="menc-feat-dvd-mpeg4-audio">
<title>Audio</title>
<para>
Audio ist ein leichter zu lösendes Problem: Wenn du Wert auf Qualität legst,
lass es einfach so wie es ist.
Gerade AC3 5.1 Streams sind meist 448Kbit/s und jedes Bit wert.
Möglicherweise gerätst du in Versuchung, Audio in hochwertiges Vorbis
umzuwandeln, aber nur weil du heute keinen A/V-Receiver für AC3-pass-through
besitzt, bedeutet dies nicht, dass du nicht morgen doch einen hast.
Halte deine DVD-Rips zukunftssicher, indem du den AC3-Stream beibehältst.
Du behältst den AC3-Stream entweder, indem du ihn
<link linkend="menc-feat-mpeg4">während der Encodierung</link>
direkt in den Video-Stream kopierst.
Du kannst den AC3-Stream aber auch extrahieren, um ihn in Container wie NUT
oder Matroska zu muxen.
<screen>mplayer <replaceable>source_file.vob</replaceable> -aid 129 -dumpaudio -dumpfile <replaceable>sound.ac3</replaceable></screen>
dumpt Audiotrack Nummer 129 aus der Datei <replaceable>source_file.vob</replaceable>
(NB: DVD-VOB-Dateien verwenden gewöhnlich andere Audionummerierungen,
was bedeutet, dass der VOB-Audiotrack 129 der 2-te Audiotrack der Datei ist)
in die Datei <replaceable>sound.ac3</replaceable>.
</para>
<para>
Aber manchmal hast du wirklich keine andere Wahl als den Sound weiter zu
komprimieren, sodass mehr Bits fürs Video aufgewendet werden können.
Die meisten Leute entscheiden sich für eine Audiokomprimierung mit MP3- oder
Vorbis-Audiocodecs.
Wobei letzterer ein sehr platzsparender Codec ist, MP3 wird von Hardware-Playern
besser unterstützt, wobei sich dieser Trend auch ändert.
</para>
<para>
Verwende <emphasis>nicht</emphasis> <option>-nosound</option> beim Encodieren
einer Datei, die Audio enhält, sogar wenn du Audio später separat
encodierst und muxt.
Zwar kann es im Idealfall manchmal funktionieren, wenn du <option>-nosound</option>
verwendest, wahrscheinlich um einige Probleme in deinen
Encodier-Befehlszeileneinstellungen zu verbergen.
In anderen Worten, einen Soundtrack während dem Encodieren zu haben, stellt sicher,
vorausgesetzt du siehst keine Meldungen wie
<quote>Too many audio packets in the buffer</quote>, dass du in der Lage sein
wirst, eine korrekte Synchronisation zu erhalten.
</para>
<para>
Du brauchst <application>MEncoder</application> zur Verarbeitung des Sounds.
Du kannst zum Beispiel den originalen Soundtrack während dem Encodieren mit
<option>-oac copy</option> kopieren oder ihn mittels
<option>-oac pcm -channels 1 -srate 4000</option> in eine "leichte"
4 kHz Mono WAV-PCM konvertieren.
Anderenfalls wird er - in einigen Fällen - eine Videodatei erzeugen, die
nicht mit Audio synchron läuft.
So was kommt vor, wenn die Anzahl der Videoframes in der Quelldatei nicht
mit der Gesamtlänge der Audioframes zusammenpasst oder immer dann, wenn
Unstetigkeiten/Splices vorhanden sind, wo Audioframes oder extra Audioframes
fehlen.
Der korrekte Weg, mit dieser Art Problem umzugehen, ist Stille (silence)
einzufügen oder Audio an diesen Punkten wegzuschneiden.
Seis drum, <application>MPlayer</application> kann das nicht, also wenn du
AC3-Audio demuxt und es in einer separaten Anwendung encodierst (oder
es mit <application>MPlayer</application> in eine PCM dumpst), die Splices
bleiben inkorrekt und der einzige Weg sie zu korrigieren ist, Videoframes
an diesem Splice zu streichen bzw. zu duplizieren.
Solange <application>MEncoder</application> Audio beim Encodieren des
Videos sieht, kann er dieses Streichen/Duplizieren erledigen (was
gewöhnlich OK ist, da es bei voller Schwärze/Szenenwechsel stattfindet),
aber wenn <application>MEncoder</application> Audio nicht erkennen kann,
wird er einfach alle Frames so wie sie ankommen verarbeiten und sie werden
einfach nicht zum endgültigen Audiostream passen, wenn du beispielsweise
deinen Audio- und Videotrack in eine Matroska-Datei mergst.
</para>
<para>
Zuallererst wirst du den DVD-Sound in eine WAV-Datei konvertieren müssen, die
der Audiocodec als Input nutzen kann.
Zum Beispiel:
<screen>mplayer <replaceable>source_file.vob</replaceable> -ao pcm:file=<replaceable>destination_sound.wav</replaceable> -vc dummy -aid 1 -vo null</screen>
wird den zweiten Audiotrack aus der Datei <replaceable>source_file.vob</replaceable>
in die Datei <replaceable>destination_sound.wav</replaceable> dumpen.
Vielleicht willst du den Sound vor dem Encodieren normalisieren, da
DVD-Audiotracks gemeinhin bei niedriger Lautstärke aufgenommen sind.
Du kannst beispielsweise das Tool <application>normalize</application> verwenden,
das in den meisten Distributionen zur Verfügung steht.
Wenn du Windows nutzt, kann ein Tool wie <application>BeSweet</application>
denselben Job erledigen.
Du wirst entweder nach Vorbis oder MP3 komprimieren.
Zum Beispiel:
<screen>oggenc -q1 <replaceable>destination_sound.wav</replaceable></screen>
wird <replaceable>destination_sound.wav</replaceable> mit
der Encodierqualität 1 encodieren, was annähernd 80Kb/s ergibt und
die Minimalqualität darstellt, mit der du encodieren solltest, wenn du
Wert auf Qualität legst.
Nimm bitte zur Kenntnis, dass <application>MEncoder</application> aktuell keine Vorbis-Audiotracks
in die Output-Datei muxen kann, da er nur AVI- und MPEG-Container als
Output unterstützt, wobei es beim Audio-/Videoplayback zu
Synchronisationproblemen mit einigen Playern führen wird, wenn die AVI-Datei
VBR-Audiostreams wie z.B. Vorbis enthält.
Keine Bange, dieses Dokument wird dir zeigen, wie du das mit
Third-Party-Programmen hinbekommst.
</para>
</sect2>
<sect2 id="menc-feat-dvd-mpeg4-muxing">
<title>Muxen</title>
<para>
Nun da du dein Video encodiert hast, wirst du es höchstwahrscheinlich
mit einem oder mehr Audiotracks in einen Movie-Container wie etwa
AVI, MPEG, Matroska oder NUT muxen.
<application>MEncoder</application> ist aktuell nur in der Lage,
Audio und Video nativ in MPEG- und AVI-Containerformate auszugeben.
Zum Beispiel:
<screen>mencoder -oac copy -ovc copy -o <replaceable>output_movie.avi</replaceable> -audiofile <replaceable>input_audio.mp2</replaceable> <replaceable>input_video.avi</replaceable></screen>
würde die Video-Datei <replaceable>input_video.avi</replaceable>
und die Audio-Datei <replaceable>input_audio.mp2</replaceable>
in die AVI-Datei <replaceable>output_movie.avi</replaceable> mergen.
Dieser Befehl funktioniert mit MPEG-1 Layer I, II und III Audio (eher
bekannt als MP3), WAV und auch mit ein paar weiteren Audioformaten.
</para>
<para>
<application>MEncoder</application> zeichnet sich aus durch experimentellen Support für
<systemitem class="library">libavformat</systemitem>, das eine
Programmbibliothek des FFmpeg-Projekts ist, welches das Muxen und
Demuxen einer Vielzahl von Containern unterstützt.
Zum Beispiel:
<screen>mencoder -oac copy -ovc copy -o <replaceable>output_movie.asf</replaceable> -audiofile <replaceable>input_audio.mp2</replaceable> <replaceable>input_video.avi</replaceable> -of lavf -lavfopts format=asf</screen>
wird das selbe machen, wie das obere Beispiel, außer dass der
Output-Container ASF sein wird.
Bitte nimm zur Kenntnis, dass dieser Support hochexperimentell ist
(aber von Tag zu Tag besser wird) und nur funktionieren wird, wenn du
<application>MPlayer</application> mit aktiviertem Support für
<systemitem class="library">libavformat</systemitem> kompiliert
hast (was meint, dass eine Pre-Packaged Binary Version in den meisten
Fällen nicht funktionieren wird).
</para>
<sect3 id="menc-feat-dvd-mpeg4-muxing-filter-issues">
<title>Verbessern der Mux- und A/V-Synchronisationszuverlässigkeit</title>
<para>
Es kann vorkommen, dass du ernsthafte A/V-Synchronisationsprobleme hast während
du versuchst, deine Video- und einige Audiotracks zu muxen, wobei es nichts
ändert, wenn du das Audiodelay anpasst, du bekommst nie eine korrekte
Synchronisation zu Stande.
Dies kann vorkommen, wenn du manche Videofilter verwendest, die einige Frames
weglassen oder duplizieren, wie etwa die inverse telecine-Filter.
ich kann dich nur dazu ermutigen, den <option>harddup</option>-Videofilter
ans Ende der Filterkette anzuhängen, um solcherlei Problemen aus dem Weg
zu gehen.
</para>
<para>
Ohne <option>harddup</option> verlässt sich <application>MEncoder</application>,
wenn er einen Frame duplizieren will, darauf, dass der Muxer eine Marke auf den
Container setzt, sodass der letzte Frame nochmals angezeigt wird, um
während des Schreibens des aktuellen Frames synchron zu bleiben.
Mit <option>harddup</option> wird <application>MEncoder</application>
statt dessen einfach den zuletzt angezeigten Frame nochmal in die Filterkette
einschieben.
Dies bedeutet, dass der Encoder <emphasis>exakt</emphasis> denselben Frame
zweimal entgegen nimmt und komprimiert.
Dies ergibt eine etwas größere Datei, verursacht jedoch keine Probleme
beim Demuxen oder Remuxen in ein anderes Containerformat.
</para>
<para>
Du kommst auch nicht um den Einsatz von <option>harddup</option> im
Zusammenhang mit Containerformaten herum, die nicht allzu fest mit
<application>MEncoder</application> verlinkt sind, wie etwa diejenigen,
welche von <systemitem class="library">libavformat</systemitem> unterstützt
werden, der keine Frameduplikation auf Container-Level unterstützt.
</para>
</sect3>
<sect3 id="menc-feat-dvd-mpeg4-muxing-avi-limitations">
<title>Limitierungen des AVI-Containers</title>
<para>
Obwohl es das am breitesten unterstützte Containerformat nach MPEG-1 ist,
besitzt AVI auch einige gravierende Nachteile.
Der vielleicht offensichtlichste ist der Overhead.
Für jeden Block der AVI-Datei werden 24 Byte auf Header und Indizes
verschwendet.
Dies heißt übersetzt etwas mehr als 5 MB pro Stunde oder 1-2.5%
Overhead für einen 700 MB Film. Das sieht nicht nach viel aus, könnte aber
die Differenz zwischen einem Video mit 700 KBit/Sek oder 714 KBit/Sek
bedeuten, und jedes bisschen mehr an Qualität zählt.
</para>
<para>
Zu dieser schockierenden Ineffizienz kommen bei AVI noch folgende
wesentlichen Einschränkungen:
</para>
<orderedlist>
<listitem>
<para>
Nur Inhalt mit festen fps kann gespeichert werden. Dies ist insbesondere
dann einschränkend, wenn das Originalmaterial, das du encodieren willst,
gemischter Inhalt ist, zum Beispiel ein Mix aus NTSC-Video und
Filmmaterial.
Eigentlich gibt es Hacks, die es ermöglichen, Inhalt mit gemischter
Framerate in einer AVI unterzubringen, diese vergrößern jedoch den
(ohnehin großen) Overhead fünffach oder mehr und sind somit ungeeignet.
</para>
</listitem>
<listitem>
<para>
Audio in AVI-Dateien muss entweder konstante Bitrate (CBR) oder
konstante Framegröße haben (also alle Frames decodieren zur selben Anzahl
Samples).
Unglücklicherweise erfüllt Vorbis, der effektivste Codec, keine dieser
Anforderungen.
Deshalb wirst du einen weniger effizienten Codec wie MP3 oder AC3 verwenden
müssen, wenn du planst, einen Film in AVI zu speichern.
</para>
</listitem>
</orderedlist>
<para>
Nachdem ich nun all dies erzählt habe, muss ich anmerken, momentan
unterstützt <application>MEncoder</application> keinen Output mit
variablen fps oder Vorbis-Encodierung.
Deswegen magst du dies nicht als Einschränkung ansehen, falls
<application>MEncoder</application> das einzige Tool ist, das du
nutzt, um deine Ecodierungen zu produzieren.
Es ist dennoch möglich, <application>MEncoder</application> nur zur
Videoencodierung zu verwenden und danach externe Tools, um Audio
zu encodieren und in ein anderes Containerformat zu muxen.
</para>
</sect3>
<sect3 id="menc-feat-dvd-mpeg4-muxing-matroska">
<title>Muxen in den Matroska-Container</title>
<para>
Matroska ist ein freies, offenes Containerformat, das darauf abzielt,
eine Menge erweiterter Features bereitzustellen, mit denen ältere Container
wie AVI nicht umgehen können.
Zum Beispiel unterstützt Matroska Audioinhalt mit variabler Bitrate (VBR),
variable Frameraten (VFR), Kapitel, Dateianhänge,
Fehlererkennung Error Detection Code (EDC) und modern A/V-Codecs wie "Advanced Audio
Coding" (AAC), "Vorbis" oder "MPEG-4 AVC" (H.264), so gut wie nichts
womit AVI etwas anfangen kann.
</para>
<para>
Die zum Erzeugen von Matroska-Dateien erforderlichen Tools werden
zusammen <application>mkvtoolnix</application> genannt und stehen
für die meisten Unix-Plattformen wie auch <application>Windows</application>
zur Verfügung.
Weil Matroska ein offener Standard ist, findest du vielleicht andere
Tools, die sich besser für dich eignen, aber da mkvtoolnix das am meisten
Verbreitete ist und von Matroska selbst unterstützt wird, werden wir nur
dessen Anwendung einbeziehen.
</para>
<para>
Möglicherweise der einfachste Weg, mit Matroska anzufangen, ist
<application>MMG</application> zu verwenden, das grafische Frontend,
das mit <application>mkvtoolnix</application> daherkommt, und dem
<ulink url="http://www.bunkus.org/videotools/mkvtoolnix/doc/mkvmerge-gui.html">guide to mkvmerge GUI (mmg)</ulink>
zu folgen.
</para>
<para>
Du kannst Audio und Video-Dateien auch per Befehlszeile muxen:
<screen>mkvmerge -o <replaceable>output.mkv</replaceable> <replaceable>input_video.avi</replaceable> <replaceable>input_audio1.mp3</replaceable> <replaceable>input_audio2.ac3</replaceable></screen>
würde die Video-Datei <replaceable>input_video.avi</replaceable>
und die zwei Audio-Dateien <replaceable>input_audio1.mp3</replaceable>
und <replaceable>input_audio2.ac3</replaceable> in die Matroska-Datei
<replaceable>output.mkv</replaceable> mergen.
Matroska, wie zuvor beschrieben, ist in der Lage, noch viel mehr als
das zu tun, wie etwa multiple Audiotracks (inklusive Feintuning der
Audio-/Videosynchronisation), Kapitel, Untertitel, Splitting, usw...
Sieh bitte in den Dokumentationen dieser Anwendungen nach mehr Details.
</para>
</sect3>
</sect2>
</sect1>
<sect1 id="menc-feat-telecine">
<title>Wie mit telecine und interlacing in NTSC-DVDs umgehen</title>
<sect2 id="menc-feat-telecine-intro">
<title>Einführung</title>
<formalpara>
<title>Was ist telecine?</title>
<para>
Wenn du nicht viel von dem verstehst, was in diesem Dokument beschrieben wird, lies den
<ulink url="http://en.wikipedia.org/wiki/Telecine">Wikipedia-Artikel über Telecine</ulink>.
Dies ist eine verständliche und einigermaßen umfassende
Beschreibung dessen, was telecine ist.
</para>
</formalpara>
<formalpara>
<title>Eine Anmerkung zu Zahlen</title>
<para>
Viele Dokumente, einschließlich des oben verlinkten Handbuchs, beziehen
sich auf den Wert Felder pro Sekunde von NTSC-Video als 59.94 und den
korrespondierenden Frames pro Sekunde als 29.97 (für telecined und
interlaced) und 23.976 (für progressiv). Zur Vereinfachung runden
manche dieser Dokumente sogar auf 60, 30 und 24 auf.
</para>
</formalpara>
<para>
Streng genommen sind alle diese Zahlen Näherungswerte. Das schwarz/weiße
NTSC-Video war exakt 60 Felder pro Sekunde, später wurde jedoch 60000/1001
gewählt, um die Farbdaten anzupassen, solange man gleichzeitig
zu Schwarz/weiß-Fernsehen kompatibel blieb. Digitales NTSC-Video
(so wie auf einer DVD) hat ebenfalls 60000/1001 Felder pro Sekunde. Hieraus
wird interlaced und telecined Video als 30000/1001 Frames pro Sekunde
enthaltend abgeleitet; progressive Video hat 24000/1001 Frames pro Sekunde.
</para>
<para>
Ältere Versionen der <application>MEncoder</application>-Dokumentation
und viele archivierten Posts in Mailing-Listen beziehen sich auf 59.94,
29.97 und 23.976.
Alle <application>MEncoder</application>-Dokumentationen wurden insofern
aktualisiert, dass sie fraktionale Werte verwenden, und du solltest dies
auch tun.
</para>
<para>
<option>-ofps 23.976</option> ist inkorrekt.
<option>-ofps 24000/1001</option> sollte statt dessen benutzt werden.
</para>
<formalpara>
<title>Wie telecine angewandt wird</title>
<para>
Jedes Video, das zur Anzeige auf einem NTSC-Fernseh-Set vorgesehen ist,
muss 60000/1001 Felder pro Sekunde haben. Für TV-Filme und Shows
hergestellt sind sie häufig direkt mit 60000/1001 Feldern pro Sekunde
aufgenommen, die Mehrheit der Kinofilme jedoch mit 24 oder 24000/1001
Frames pro Sekunde. Wenn cinematische Movie-DVDs gemastert werden,
wird das Video danach fürs Fernsehen mittels eines telecine genannten
Prozesses konvertiert.
</para>
</formalpara>
<para>
Auf einer DVD wird das Video eigentlich nie als 60000/1001 Felder
pro Sekunde abgelegt. Für ein Video, das ursprünglich 60000/1001 war,
wird jedes Feldpaar zu einem Frame kombiniert, was dann 30000/1001
Frames pro Sekunde ergibt. Hardware-DVD-Player lesen dann ein im
Videostream eingebettetes Kennzeichen aus, um zu bestimmen, ob die gerade
oder ungerade nummerierten Zeilen das erste Feld formen sollen.
</para>
<para>
Üblicherweise bleibt ein Inhalt mit 24000/1001 Frames pro Sekunde
so wie er ist, wenn er für eine DVD encodiert wird, und der DVD-Player
muss das Telecining on-the-fly bewerkstelligen. Manchmal jedoch wird das
Video telecined <emphasis>bevor</emphasis> es auf der DVD gespeichert wird;
selbst wenn es ursprünglich 24000/1001 Frames pro Sekunde war, wird es
60000/1001 Felder pro Sekunde. Wenn es auf der DVD gespeichert wird,
werden Feldpaare zu 30000/1001 Frames pro Sekunde kombiniert.
</para>
<para>
Wenn man das aus 60000/1001 Feldern pro Sekunde geformten Einzelframes
erzeugte Video betrachtet, ist telecined oder anderenfalls Interlacing
klar sichtbar woimmer Bewegung auftritt, da ein Feld (sagen wir, die
geradzahlig nummerierten Zeilen) einen Moment zur Zeit 1/(60000/1001) Sekunden
später als das andere repräsentiert. Spielt man ein interlaced Video auf
einem Computer ab, sehen beide hässlich aus, weil der Monitor eine höhere
Auflösung besitzt und weil das Video Frame für Frame anstatt Feld für Feld
angezeigt wird.
</para>
<itemizedlist>
<title>Anmerkungen</title>
<listitem>
<para>
Dieser Abschnitt gilt nur für NTSC-DVDs und nicht für PAL.
</para>
</listitem>
<listitem>
<para>
Die <application>MEncoder</application>-Beispielzeilen überall im
Dokument sind <emphasis role="bold">nicht</emphasis> zum
eigentlichen Gebrauch vorgesehen. Sie sind schlicht das bloße Minimum,
das zum Encodieren der betreffenden Videokategorie benötigt wird.
Wie mache ich gute DVD-Rips oder wie feintune ich
<systemitem class="library">libavcodec</systemitem> auf maximale
Qualität gehören nicht zum Umfang dieses Dokuments.
</para>
</listitem>
<listitem>
<para>
Es gibt ein paar Fußnoten speziell für dieses Handbuch, die so ähnlich
verlinkt sind:
<link linkend="menc-feat-telecine-footnotes">[1]</link>
</para>
</listitem>
</itemizedlist>
</sect2>
<sect2 id="menc-feat-telecine-ident">
<title>Wie kann man sagen, welchen Typ Video man hat</title>
<sect3 id="menc-feat-telecine-ident-progressive">
<title>Progressiv</title>
<para>
Progressive Video wurde ursprünglich mit 24000/1001 fps gefilmt und
ohne Änderung auf der DVD abgespeichert.
</para>
<para>
Wenn du eine progressive DVD in <application>MPlayer</application> abspielst,
wird <application>MPlayer</application> folgende Zeile ausgeben, sobald
das Abspielen des Films beginnt:
<screen> demux_mpg: 24000/1001 fps progressive NTSC content detected, switching framerate.</screen>
Von diesem Punkt an vorwärts sollte demux_mpg nie erzählen, es finde
"30000/1001 fps NTSC content."
</para>
<para>
Wenn du progressives Video ankuckst, solltest du nie irgendein
Interlacing sehen. Sei trotzdem vorsichtig, weil manchmal ein winziges
bisschen telecine dort hineingemischt wurde, wo du es nicht erwartest.
Ich bin TV-Serien-DVDs begegnet, die eine Sekunde telecine bei jedem
Szenenwechsel haben oder an extrem zufälligen Stellen. Ich hatte mir einmal
eine DVD angesehen, die eine progressive erste Hälfte besaß, und die
zweite Hälfte war telecined. Willst du<emphasis>wirklich</emphasis>
gründlich sein, kannst du den kompletten Film scannen:
<screen>mplayer dvd://1 -nosound -vo null -benchmark</screen>
Das Verwenden von <option>-benchmark</option> veranlasst
<application>MPlayer</application>, den Film so schnell er es nur kann
abzuspielen; dies dauert je nach Hardware trotzdem noch eine
Weile. Jedesmal wenn demux_mpg einen Frameratenwechsel meldet, wird dir
die Zeile unmittelbar darüber die Zeit zeigen, bei welcher der Wechsel
auftrat.
</para>
<para>
Manchmal wird progressive Video auf DVDs
"soft telecine" zugeordnet, weil es dazu vorgesehen ist,
vom DVD-Player telecined zu werden.
</para>
</sect3>
<sect3 id="menc-feat-telecine-ident-telecined">
<title>Telecined</title>
<para>
Telecined Video war ursprünglich mit 24000/1001 aufgenommen, wurde aber
telecined, <emphasis>bevor</emphasis> es auf die DVD geschrieben wurde.
</para>
<para>
<application>MPlayer</application> meldet keine (nie)
Frameratenwechsel, wenn er telecined Video abspielt.
</para>
<para>
Beim Betrachten eines telecined Videos wirst du Interlacing-Artefakte
sehen, die zu "blinken" scheinen: sie erscheinen wiederholt
und verschwinden wieder.
Du kannst dir das so genauer hinschauen
<orderedlist>
<listitem>
<screen>mplayer dvd://1</screen>
</listitem>
<listitem>
<para>
Suche einen Teil mit Bewegung.
</para>
</listitem>
<listitem>
<para>
Benutze die Taste <keycap>.</keycap>, um jeweils einen Frame vorwärts zu rücken.
</para>
</listitem>
<listitem>
<para>
Schau auf das Muster der interlaced und progressive aussehenden
Frames. Ist das Muster, das du siehst PPPII,PPPII,PPPII,... dann ist das
Video telecined. Siehst du andere Muster, dann wurde das Video womöglich
mittels einiger Nicht-Standard-Methoden telecined;
<application>MEncoder</application> kann ein Nicht-Standard-telecine
nicht verlustfrei nach progressive konvertieren. Siehst du überhaupt
keine Muster, ist es höchstwahrscheinlich interlaced.
</para>
</listitem>
</orderedlist>
</para>
<para>
Manchmal wird telecined Video auf DVDs "hard telecine"
zugeordnet. Da hard telecine bereits 60000/1001 Felder pro Sekunde hat,
spielt der DVD-Player das Video ohne irgendeine Manipulation ab.
</para>
<para>
Ein anderer Weg, zu sagen, ob deine Quelle telecined ist oder nicht,
ist die Quelle mit den Befehlszeilenoptionen <option>-vf pullup</option>
und <option>-v</option> abzuspielen, um nachzusehen, wie
<option>pullup</option> zu den Frames passt.
Ist die Quelle telecined, solltest du in der Befehlszeile ein 3:2 Muster
mit abwechselnd <systemitem>0+.1.+2</systemitem> und <systemitem>0++1</systemitem>
anzeigen.
Diese Technik hat den Vorteil, dass du die Quelle nicht zu beobachten
brauchst, um sie zu identifizieren, was von Nutzen sein könnte, falls du
den Encodiervorgang automatisieren willst oder besagte Prozedur ferngesteuert
mittels einer langsamen Verbindung vornehmen willst.
</para>
</sect3>
<sect3 id="menc-feat-telecine-ident-interlaced">
<title>Interlaced</title>
<para>
Interlaced Video wurde ursprünglich als 60000/1001 Felder pro Sekunde
aufgenommen und auf der DVD als 30000/1001 Frames pro Sekunde abgespeichert.
Der interlacing-Effekt (oft "combing" genannt) ist ein Ergebnis
von Kammpaaren von Feldern in Frames. Jedes Feld wird einzeln als
1/(60000/1001) Sekunden angenommen, und wenn sie simultan angezeigt werden,
wird der Unterschied offensichtlich.
</para>
<para>
Wie bei telecined Video sollte <application>MPlayer</application> niemals
einen Frameratewechsel beim Abspielen des interlaced Inhalts melden.
</para>
<para>
Wenn du ein interlaced Video genau ansiehst, in dem du dich mit der Taste
<keycap>.</keycap> durch die Frames bewegst, wirst du sehen, dass
jeder einzelne Frame interlaced ist.
</para>
</sect3>
<sect3 id="menc-feat-telecine-ident-mixedpt">
<title>Gemischtes progressive und telecine</title>
<para>
Alle "gemischten progressive und telecine" Videos wurden ursprünglich
als 24000/1001 Frames pro Sekunde aufgenommen, jedoch werden einige Teile
telecined beendet.
</para>
<para>
Spielt <application>MPlayer</application> diese Kategorie ab, wird er
(oft wiederholt) zwischen "30000/1001 fps NTSC"
und "24000/1001 fps progressive NTSC" zurück und vor wechseln.
Beobachte die untere Hälfte von <application>MPlayer</application>s Ausgabe,
um diese Meldungen anzusehen.
</para>
<para>
Du solltest die Sektion "30000/1001 fps NTSC" überprüfen, um
sicher zu gehen, dass sie auch wirklich telecine sind und nicht einfach
interlaced.
</para>
</sect3>
<sect3 id="menc-feat-telecine-ident-mixedpi">
<title>Gemischtes progressive und interlaced</title>
<para>
In "gemischtem progressive und interlaced" Inhalt wurde progressive
und interlaced Video zusammengeklebt.
</para>
<para>
Diese Kategorie sieht aus wie "gemischtes progressive und telecine",
bis du die Sektion 30000/1001 fps untersuchst und feststellst, dass
sie das telecine-Muster nicht haben.
</para>
</sect3>
</sect2>
<sect2 id="menc-feat-telecine-encode">
<title>Wie jede Kategorie encodieren</title>
<para>
Wie ich anfangs angemerkt hatte, sind die
<application>MEncoder</application>-Beispielzeilen unten eigentlich
<emphasis role="bold">nicht</emphasis> zur Anwendung bestimmt;
sie demonstrieren nur die Minimalparameter zur korrekten Encodierung
jeder Kategorie.
</para>
<sect3 id="menc-feat-telecine-encode-progressive">
<title>Progressive</title>
<para>
Progressive Video erfordert kein spezielles Filtern, um es zu encodieren.
Der einzige Parameter, den du gewiss anwenden solltest ist
<option>-ofps 24000/1001</option>. Andernfalls wird
<application>MEncoder</application> versuchen, bei 30000/1001 fps
zu encodieren und Frames duplizieren.
</para>
<para>
<screen>mencoder dvd://1 -oac copy -ovc lavc -ofps 24000/1001</screen>
</para>
<para>
Dennoch ist es öfters der Fall, dass ein Video, das progressive aussieht,
eigentlich kurze Teile telecine eingemischt hat. Solange du dir nicht
sicher bist, ist es am sichersten, das Video als
<link linkend="menc-feat-telecine-encode-mixedpt">gemischtes progressive und telecine</link>.
zu behandeln. Der Performance-Verlust ist gering
<link linkend="menc-feat-telecine-footnotes">[3]</link>.
</para>
</sect3>
<sect3 id="menc-feat-telecine-encode-telecined">
<title>Telecined</title>
<para>
Telecine kann umgekehrt werden, um den originalen 24000/1001-Inhalt zu erhalten,
indem man einen Prozess verwendet, der inverse-telecine genannt wird.
<application>MPlayer</application> enthält verschiedene Filter, um dies
zu erreichen; der beste Filter, <option>pullup</option> wird in der Sektion
<link linkend="menc-feat-telecine-encode-mixedpt">Gemischtes progressive und telecine</link>
beschrieben.
</para>
</sect3>
<sect3 id="menc-feat-telecine-encode-interlaced">
<title>Interlaced</title>
<para>
In den meisten praktischen Fällen ist es nicht möglich, ein komplett
progressives Video aus interlaced Inhalt zu erhalten. Der einzige Weg,
dies ohne den Verlust der Hälfte der vertikalen Auflösung zu erreichen,
ist das Verdoppeln der Framerate, und man kann versuchen zu
"schätzen", wie die korrespondierenden Zeilen für jedes Feld
vervollständigt werden sollten (dies hat Nachteile - siehe Methode 3).
</para>
<orderedlist>
<listitem>
<para>
Das Video in interlaced Form encodieren. Normalerweise richtet Interlacing
verheerenden Schaden für die Fähigkeit des Encoders an, gut zu komprimieren,
<systemitem class="library">libavcodec</systemitem> hat jedoch zwei
eigens für das ein wenig bessere Abspeichern von interlaced Video gedachte
Parameter: <option>ildct</option> und <option>ilme</option>. Auch wenn
die Verwendung von <option>mbd=2</option> dringend zu empfehlen ist
<link linkend="menc-feat-telecine-footnotes">[2]</link>, weil es
Macroblöcke wie nicht-interlaced an Stellen encodiert, an denen keine Bewegung
stattfindet. Beachte, dass <option>-ofps</option> hier NICHT notwendig ist.
<screen>mencoder dvd://1 -oac copy -ovc lavc -lavcopts ildct:ilme:mbd=2</screen>
</para>
</listitem>
<listitem>
<para>
Nutze einen Deinterlacing-Filter vor dem Encodieren. Es stehen verschiedene
dieser Filter zur Auswahl, jeder mit seinen eigenen Vor-
und Nachteilen. Ziehe <option>mplayer -pphelp</option> und <option>mplayer -vf help</option>
zu Rate, um zu sehen, welche
verfügbar sind (suche nach "deint"), lies Michael Niedermayers
<ulink url="http://guru.multimedia.cx/deinterlacing-filters/">Deinterlacing-Filter-Vergleich</ulink>
und durchsuche die
<ulink url="http://www.mplayerhq.hu/design7/mailing_lists.html">MPlayer-Mailinglisten</ulink>,
um Diskussionen über die zahlreichen Filter zu finden.
Nochmals, die Framerate ändert sich nicht, also kein
<option>-ofps</option>. Deinterlacing sollte außerdem nach dem Zuschneiden
(cropping) <link linkend="menc-feat-telecine-footnotes">[1]</link>
und vor dem Skalieren angewandt werden.
<screen>mencoder dvd://1 -oac copy -vf yadif -ovc lavc</screen>
</para>
</listitem>
<listitem>
<para>
Unglücklicherweise arbeitet diese Option im Zusammenhang mit
<application>MEncoder</application> fehlerhaft; sie sollte mit
<application>MEncoder G2</application> gut funktionieren, den gibts aber
noch nicht. Du könntest Abstürze erleben. Seis drum, der Zweck von
<option> -vf tfields</option> ist es, einen vollen Frame aus jedem Feld
zu erzeugen, was eine Framerate von 60000/1001 ergibt. Der Vorteil dieses
Lösungsansatzes ist, dass nie irgendwelche Daten verloren gehen;
dennoch, da jeder Frame aus nur einem Feld kommt, müssen die fehlenden Zeilen
irgendwie interpoliert werden. Es gibt keine sehr guten Methoden, die
fehlenden Daten zu generieren, und so wird das Resultat ein bisschen aussehen,
als hätte man irgendeinen Deinterlacing-Filter verwendet. Die fehlenden Zeilen
zu generieren erzeugt auch weitere Probleme, einfach weil sich die Menge
an Daten verdoppelt. Somit sind höhere Encodier-Bitraten nötig, um
die Qualität beizubehalten und mehr CPU-Power wird für beides,
Encodieren und Decodieren, aufgewendet. Das Attribut tfields hat mehrere
verschiedene Optionen dafür, wie die fehlenden Zeilen jedes Frames erzeugt
werden.
Wenn du diese Methode nutzt, dann nimm Bezug auf das Handbuch und wähle,
welche Option auch immer am besten für dein Material aussieht.
Beachte, dass du wenn <option>tfields</option> verwendet wird,
sowohl <option>-fps</option> als auch <option>-ofps</option>spezifizieren <emphasis role="bold">musst</emphasis>,
um die doppelte Framerate der originalen Quelle zu erhalten.
<screen>mencoder dvd://1 -oac copy -vf tfields=2 -ovc lavc -fps 60000/1001 -ofps 60000/1001</screen>
</para>
</listitem>
<listitem>
<para>
Wenn du vorhast, dramatisch herunterzuskalieren, kannst du nur eins
der beiden Felder extrahieren und encodieren. Sicherlich, du wirst die
Hälfte der vertikalen Auflösung verlieren, aber wenn du planst, bis auf
1/2 des Originals herunter zu skalieren, macht der Verlust so gut wie
gar nichts aus. Das Resultat wird eine progressive Datei mit 30000/1001
Frames pro Sekunde sein. Die Prozedur ist, <option>-vf field</option>
zu verwenden, dann die Ränder abzuschneiden
<link linkend="menc-feat-telecine-footnotes">[1]</link> und angemessen
zu skalieren. Vergiss nicht, dass du die Skalierung anpassen musst, um
das Halbieren der vertikalen Auflösung zu kompensieren.
<screen>mencoder dvd://1 -oac copy -vf field=0 -ovc lavc</screen>
</para>
</listitem>
</orderedlist>
</sect3>
<sect3 id="menc-feat-telecine-encode-mixedpt">
<title>Gemischtes progressive und telecine</title>
<para>
Um progressive und telecine Video komplett in progressive Video
umzuwandeln, müssen die telecined Teile inverse-telecined werden.
Die drei Wege, dies zu erreichen, werden unten beschrieben.
Beachte, dass du inverse-telecine <emphasis role="bold">immer</emphasis>
vor der Reskalierung durchführen solltest; es sei denn, du weißt wirklich,
was du tust; mache inverse-telecine auch vor dem Entfernen der Ränder
<link linkend="menc-feat-telecine-footnotes">[1]</link>.
<option>-ofps 24000/1001</option> wird hier benötigt, weil das Output-Video
24000/1001 Frames pro Sekunde werden soll.
</para>
<itemizedlist>
<listitem>
<para>
<option>-vf pullup</option> wurde entworfen, um auf telecined Material
inverse-telecine anzuwenden, während die progressiven Daten unangetastet
bleiben. Damit dies richtig funktioniert, <emphasis role="bold">muss</emphasis>
<option>pullup</option> vom <option>softskip</option>-Filter gefolgt werden, sonst
wird <application>MEncoder</application> abstürzen.
<option>pullup</option> ist trotz allem die sauberste und akkurateste
Methode, die zum Encodieren von beidem telecine und
"gemischtem progressive und telecine" zur Verfügung steht.
<screen>mencoder dvd://1 -oac copy -vf pullup,softskip -ovc lavc -ofps 24000/1001</screen>
</para>
</listitem>
<listitem>
<para>
Eine ältere Methode ist, anstatt inverse-telecine auf die telecined Teile
anzuwenden, telecine auf nicht-telecined Teile und dann inverse-telecine auf das
ganze Video anzuwenden. Hört sich verwirrend an? softpulldown ist
ein Filter, der ein Video durchgeht und die komplette Datei telecined macht.
Lassen wir auf softpulldown entweder <option>detc</option> oder <option>ivtc</option>
folgen, wird das Endergebnis vollkommen progressiv. <option>-ofps 24000/1001</option>
wird benötigt.
<screen>mencoder dvd://1 -oac copy -vf softpulldown,ivtc=1 -ovc lavc -ofps 24000/1001</screen>
</para>
</listitem>
<listitem>
<para>
Ich habe <option>-vf filmdint</option> selbst verwendet, aber lies hier, was
D Richard Felker III zu erzählen hat:
<blockquote>
<para>
Es ist OK, aber IMO versucht er zu oft eher ein deinterlace
als ein inverse telecine durchzuführen (ganz wie Settop-DVD-Player
&amp; progressive TVs), was ein hässliches Flimmern erzeugt und
andere Artefakte. Wenn du vorhast, es anzuwenden, musst du zumindest
einige Zeit darauf verwenden, die Optionen zu tunen und zuerst den Output
zu beobachten, damit du auch sicher sein kannst, dass du nichts
vermasselst.
</para>
</blockquote>
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3 id="menc-feat-telecine-encode-mixedpi">
<title>Gemischtes progressive und interlaced</title>
<para>
Es gibt zwei Optionen für den Umgang mit dieser Kategorie, jede von
beiden stellt einen Kompromiss dar. Du solltest basierend auf
Dauer/Stelle jedes Typs entscheiden.
</para>
<itemizedlist>
<listitem>
<para>
Behandle es wie progressive. Die interlaced Teile werden interlaced
aussehen und einige der interlaced Felder müssen weggelassen werden,
was ein wenig zu Sprüngen führt. Du kannst einen
Nachbearbeitungsfilter verwenden, wenn du willst, aber dies wird die
progressive-Anteile geringfügig verringern.
</para>
<para>
Diese Option sollte definitiv nicht verwendet werden, wenn du eventuell
Video auf einem interlaced Gerät anzeigen willst (mit einer TV-Karte
zum Beispiel). Wenn du interlaced Frames in einem Video mit 24000/1001
Frames pro Sekunde hast, werden diese zusammen mit den progressive
Frames telecined. Die Hälfte der interlaced "Frames" werden für die
Dauer von drei Feldern (3/(60000/1001) Sekunden) angezeigt, was
einen flimmernden "Zeitrücksprung"-Effekt zur Folge hat, der
ziemlich schlecht aussieht. Solltest du dies dennoch versuchen,
<emphasis role="bold">musst</emphasis> du einen
Deinterlacing-Filter wie <option>lb</option> oder <option>l5</option>
anwenden.
</para>
<para>
Es wäre auch keine gute Idee für eine progressive Anzeige. Es wird
Paare aufeinander folgender interlaced Felder auslassen, was eine
Unstetigkeit zur Folge hat, die eher sichtbar ist als mit der
zweiten Methode, die einige progressive Frames zweimal anzeigt.
Ein interlaced Video mit 30000/1001 Frames pro Sekunde ist bereits
ein bisschen abgehackt, weil es wirklich mit 60000/1001 Felder pro
Sekunde angezeigt werden sollte, sodass sich die doppelten Frames
nicht zu sehr abzeichnen.
</para>
<para>
Egal welchen Weg du wählst, es ist das beste, deinen Inhalt
zu berücksichtigen und wie du ihn anzeigen willst. Ist dein Video
zu 90% progressive und du hast nie vor, es auf einem TV-Bildschirm
anzuzeigen, solltest du einen progressive-Ansatz wählen. Ist es nur
halb-progressive, willst du es eventuell so encodieren, als sei alles
interlaced.
</para>
</listitem>
<listitem>
<para>
Behandle es wie interlaced. Einige Frames des progressive-Anteils
müssen dupliziert werden, was zu Sprüngen führt. Nochmal,
Deinterlacing-Filter können die progressive-Anteile leicht verringern.
</para>
</listitem>
</itemizedlist>
</sect3>
</sect2>
<sect2 id="menc-feat-telecine-footnotes">
<title>Fußnoten</title>
<orderedlist>
<listitem>
<formalpara>
<title>Über das Zuschneiden (cropping):</title>
<para>
Videodaten auf DVDs werden in einem YUV 4:2:0 genannten Format abgelegt.
In einem YUV-Video, werden Helligkeit und Chrominanz separat gespeichert.
Da das menschliche Auge ein bisschen weniger empfindlich auf Farbe
reagiert als auf Helligkeit, ist in einem YUV 4:2:0 Bild nur ein
Chrominanz-Pixel für alle vier Helligkeits-Pixel vorhanden.
In einem progressive Bild, besitzt jedes Quadrat von vier luma-Pixeln (zwei
auf jeder Seite) ein gemeinsames chroma-Pixel. Du musst progressive YUV
4:2:0 zu geradzahligen Auflösungen zurechtschneiden und geradzahlige
Offsets verwenden. Zum Beispiel ist
<option>crop=716:380:2:26</option> OK,
<option>crop=716:380:3:26 </option> aber nicht.
</para>
</formalpara>
<para>
Wenn du es mit interlaced YUV 4:2:0 zu tun hast, ist die Situation
ein wenig komplizierter. Anstatt dass immer vier luma-Pixel im
<emphasis>Frame</emphasis> sich ein chroma-Pixel teilen, teilen sich
immer vier luma-Pixel in jedem <emphasis>Feld</emphasis> ein
chroma-Pixel. Wenn Felder zur Formung eines Frames interlaced werden,
ist jede Scanzeile ein Pixel hoch. Jetzt liegen anstatt je vier
luma-Pixel in einem Quadrat immer zwei Pixel nebeneinander und die
anderen zwei Pixel liegen zwei Scanzeilen weiter unten nebeneinander.
Die zwei luma-Pixel in der dazwischen liegenden Scanzeile sind vom
anderen Feld und teilen sich somit ein anderes chroma-Pixel mit
zwei luma-Pixeln zwei Scanzeile entfernt. All diese Konfusion macht
es notwendig, vertikale Ausschneide-Abmessungen und Offsets zu
haben, die ein Vielfaches von vier sind. Horizontal kann geradzahlig
bleiben.
</para>
<para>
Für telecined Video empfehle ich, das Zuschneiden nach dem inverse
telecining stattfinden zu lassen. Ist das Video einmal progressive,
musst du nur noch mit geraden Zahlen zuschneiden. Wenn du wirklich die
leichte Beschleunigung haben willst, die zuerst zuzuschneiden
möglicherweise bietet, musst du vertikal mit einem Vielfachen von vier
zuschneiden, oder der inverse-telecine Filter wird keine korrekten Daten
haben.
</para>
<para>
Für interlaced (nicht telecined) Video musst du immer
mit einem Vielfachen von vier zuschneiden, es sei denn, du verwendest
<option>-vf field</option> vor dem Schneiden.
</para>
</listitem>
<listitem><formalpara>
<title>Über Encodier-Parameter und Qualität:</title>
<para>
Nur weil ich hier <option>mbd=2</option> vorschlage, heißt das nicht,
dass es woanders benutzt werden soll. Zusammen mit <option>trell</option>
ist <option>mbd=2</option> eine der Optionen von
<systemitem class="library">libavcodec</systemitem>, welche die
Qualität am deutlichsten heben, und du solltest stets das letzte der beiden
anwenden, außer das Abfallen der Encodiergeschwindigkeit ist abschreckend
hoch (z.B. Encodierung in Echtzeit). Es gibt eine Menge anderer Optionen für
<systemitem class="library">libavcodec</systemitem>, die die Encodierqualität
verbessern (und die Encodiergeschwindigkeit verringern), dies liegt aber jenseits
des Rahmens dieses Dokuments.
</para>
</formalpara>
</listitem>
<listitem>
<formalpara>
<title>Über die Performance von pullup:</title>
<para>
<option>Pullup</option> kann sicher (zusammen mit <option>softskip</option>)
auf progressive Video angewandt werden und ist für gewöhnlich eine gute Idee,
es sei denn, die Quelle wurde definitiv als vollkommen progressive verifiziert.
Der Performaceverlust ist in den meisten Fällen gering. Bei einer Minimalencodierung
macht <option>pullup</option> <application>MEncoder</application>
50% langsamer. Das Hinzufügen von Soundverarbeitung und erweiterten
<option>lavcopts</option> überschattet diesen Unterschied
und drückt den Performanceabfall, der mit dem Verwenden von <option>pullup</option>
verbunden war, runter auf 2%.
</para>
</formalpara>
</listitem>
</orderedlist>
</sect2>
</sect1>
<sect1 id="menc-feat-enc-libavcodec">
<title>Encodieren mit der <systemitem class="library">libavcodec</systemitem>
Codecfamilie</title>
<para>
<systemitem class="library">libavcodec</systemitem>
stellt einfache Encodierung für eine Menge interessanter Video- und Audioformate
zur Verfügung.
Du kannst folgende Codecs encodieren (mehr oder weniger aktuell):
</para>
<sect2 id="menc-feat-enc-libavcodec-video-codecs">
<title>Videocodecs von <systemitem class="library">libavcodec</systemitem></title>
<para>
<informaltable frame="all">
<tgroup cols="2">
<thead>
<row><entry>Name des Videocodecs</entry><entry>Beschreibung</entry></row>
</thead>
<tbody>
<row><entry>mjpeg</entry><entry>
Motion-JPEG
</entry></row>
<row><entry>ljpeg</entry><entry>
Verlustfreies JPEG
</entry></row>
<row><entry>jpegls</entry><entry>
JPEG LS
</entry></row>
<row><entry>targa</entry><entry>
Targa-Bild
</entry></row>
<row><entry>gif</entry><entry>
GIF-Bild
</entry></row>
<row><entry>png</entry><entry>
PNG-Bild
</entry></row>
<row><entry>bmp</entry><entry>
BMP-Bild
</entry></row>
<row><entry>h261</entry><entry>
H.261
</entry></row>
<row><entry>h263</entry><entry>
H.263
</entry></row>
<row><entry>h263p</entry><entry>
H.263+
</entry></row>
<row><entry>mpeg4</entry><entry>
ISO Standard MPEG-4 (DivX, Xvid-kompatibel)
</entry></row>
<row><entry>msmpeg4</entry><entry>
Pre-Standard MPEG-4 Variante von MS, v3 (AKA DivX3)
</entry></row>
<row><entry>msmpeg4v1</entry><entry>
Pre-Standard MPEG-4 von MS, v1
</entry></row>
<row><entry>msmpeg4v2</entry><entry>
Pre-Standard MPEG-4 von MS, v2 (in alten ASF-Dateien verwendet)
</entry></row>
<row><entry>wmv1</entry><entry>
Windows Media Video, Version 1 (AKA WMV7)
</entry></row>
<row><entry>wmv2</entry><entry>
Windows Media Video, Version 2 (AKA WMV8)
</entry></row>
<row><entry>rv10</entry><entry>
RealVideo 1.0
</entry></row>
<row><entry>rv20</entry><entry>
RealVideo 2.0
</entry></row>
<row><entry>mpeg1video</entry><entry>
MPEG-1 Video
</entry></row>
<row><entry>mpeg2video</entry><entry>
MPEG-2 Video
</entry></row>
<row><entry>huffyuv</entry><entry>
Verlustfreie (lossless) Kompression
</entry></row>
<row><entry>ffvhuff</entry><entry>
FFmpeg-modifizierter huffyuv, verlustfrei
</entry></row>
<row><entry>asv1</entry><entry>
ASUS Video v1
</entry></row>
<row><entry>asv2</entry><entry>
ASUS Video v2
</entry></row>
<row><entry>vcr1</entry><entry>
ATI VCR1 codec
</entry></row>
<row><entry>ffv1</entry><entry>
FFmpeg's verlustfreier (lossless) Videocodec
</entry></row>
<row><entry>svq1</entry><entry>
Sorenson Video 1
</entry></row>
<row><entry>flv</entry><entry>
Sorenson H.263, der in Flash Video benutzt wird
</entry></row>
<row><entry>flashsv</entry><entry>
Flash Screen Video
</entry></row>
<row><entry>dvvideo</entry><entry>
Sony Digital Video
</entry></row>
<row><entry>snow</entry><entry>
FFmpeg's experimenteller Wavelet-basierter Codec
</entry></row>
<row><entry>zbmv</entry><entry>
Zip Blocks Motion Video
</entry></row>
<row><entry>cljr</entry><entry>
Cirrus Logic AccuPak Codec
</entry></row>
</tbody>
</tgroup>
</informaltable>
Die erste Spalte enthält die Codecnamen, die nach der Konfiguration
<literal>vcodec</literal> übergeben werden müssen, wie:
<option>-lavcopts vcodec=msmpeg4</option>
</para>
<informalexample>
<para>
Ein Beispiel mit MJPEG-Komprimierung:
<screen>mencoder dvd://2 -o title2.avi -ovc lavc -lavcopts vcodec=mjpeg -oac copy</screen>
</para>
</informalexample>
</sect2>
<sect2 id="menc-feat-enc-libavcodec-audio-codecs">
<title>Audiocodecs von <systemitem class="library">libavcodec</systemitem></title>
<para>
<informaltable frame="all">
<tgroup cols="2">
<thead>
<row><entry>Name des Audiocodecs</entry><entry>Beschreibung</entry></row>
</thead>
<tbody>
<row>
<entry>ac3</entry>
<entry>Dolby Digital (AC-3)</entry>
</row>
<row>
<entry>adpcm_*</entry>
<entry>Adaptive PCM-Formate - siehe begleitende Tabelle</entry>
</row>
<row>
<entry>flac</entry>
<entry>Free Lossless Audio Codec (FLAC)</entry>
</row>
<row>
<entry>g726</entry>
<entry>G.726 ADPCM</entry>
</row>
<row>
<entry>libamr_nb</entry>
<entry>3GPP Adaptive Multi-Rate (AMR) narrow-band</entry>
</row>
<row>
<entry>libamr_wb</entry>
<entry>3GPP Adaptive Multi-Rate (AMR) wide-band</entry>
</row>
<row>
<entry>libfaac</entry>
<entry>Advanced Audio Coding (AAC) - verwendet FAAC</entry>
</row>
<row>
<entry>libgsm</entry>
<entry>ETSI GSM 06.10 full rate</entry>
</row>
<row>
<entry>libgsm_ms</entry>
<entry>Microsoft GSM</entry>
</row>
<row>
<entry>libmp3lame</entry>
<entry>MPEG-1 audio layer 3 (MP3) - verwendet LAME</entry>
</row>
<row>
<entry>mp2</entry>
<entry>MPEG-1 Audio Layer 2</entry>
</row>
<row>
<entry>pcm_*</entry>
<entry>PCM-Formate - siehe begleitende Tabelle</entry>
</row>
<row>
<entry>roq_dpcm</entry>
<entry>Id Software RoQ DPCM</entry>
</row>
<row>
<entry>sonic</entry>
<entry>experimenteller verlustbehafteter FFmpeg-Codec</entry>
</row>
<row>
<entry>sonicls</entry>
<entry>experimenteller verlustfreier FFmpeg-Codec</entry>
</row>
<row>
<entry>vorbis</entry>
<entry>Vorbis</entry>
</row>
<row>
<entry>wma1</entry>
<entry>Windows Media Audio v1</entry>
</row>
<row>
<entry>wma2</entry>
<entry>Windows Media Audio v2</entry>
</row>
</tbody>
</tgroup>
</informaltable>
Die erste Spalte enthält die Codecnamen, die nach der Konfiguration
<literal>acodec</literal> übergeben werden müssen, wie:
<option>-lavcopts acodec=ac3</option>
</para>
<informalexample>
<para>
Ein Beispiel mit AC3-Kompression:
<screen>mencoder dvd://2 -o title2.avi -oac lavc -lavcopts acodec=ac3 -ovc copy</screen>
</para>
</informalexample>
<para>
Im Gegensatz zu den Videocodecs von <systemitem class="library">libavcodec</systemitem>
machen dessen Audiocodecs keinen weisen Gebrauch von den Bits, die ihnen übergeben
werden, da es ihnen an einem minimalen psychoakustischen Modell fehlt (falls
überhaupt eins vorhanden ist), wodurch sich die meisten anderen
Codec-Implementierungen auszeichnen.
Beachte jedoch, dass all diese Audiocodecs sehr schnell sind und überall dort
hervorragend arbeiten, wo <application>MEncoder</application> mit
<systemitem class="library">libavcodec</systemitem> kompiliert wurde (was
meistens der Fall ist) und nicht von externen Programmbibliotheken abhängt.
</para>
<sect3 id="menc-feat-enc-libavcodec-audio-codecs-pcmadpcm">
<title>PCM/ADPCM-Format, begleitende Tabelle</title>
<para>
<informaltable frame="all">
<tgroup cols="2">
<thead>
<row><entry>PCM/ADPCM Codecname</entry><entry>Beschreibung</entry></row>
</thead>
<tbody>
<row>
<entry>pcm_s32le</entry>
<entry>signed 32-bit little-endian</entry>
</row>
<row>
<entry>pcm_s32be</entry>
<entry>signed 32-bit big-endian</entry>
</row>
<row>
<entry>pcm_u32le</entry>
<entry>unsigned 32-bit little-endian</entry>
</row>
<row>
<entry>pcm_u32be</entry>
<entry>unsigned 32-bit big-endian</entry>
</row>
<row>
<entry>pcm_s24le</entry>
<entry>signed 24-bit little-endian</entry>
</row>
<row>
<entry>pcm_s24be</entry>
<entry>signed 24-bit big-endian</entry>
</row>
<row>
<entry>pcm_u24le</entry>
<entry>unsigned 24-bit little-endian</entry>
</row>
<row>
<entry>pcm_u24be</entry>
<entry>unsigned 24-bit big-endian</entry>
</row>
<row>
<entry>pcm_s16le</entry>
<entry>signed 16-bit little-endian</entry>
</row>
<row>
<entry>pcm_s16be</entry>
<entry>signed 16-bit big-endian</entry>
</row>
<row>
<entry>pcm_u16le</entry>
<entry>unsigned 16-bit little-endian</entry>
</row>
<row>
<entry>pcm_u16be</entry>
<entry>unsigned 16-bit big-endian</entry>
</row>
<row>
<entry>pcm_s8</entry>
<entry>signed 8-bit</entry>
</row>
<row>
<entry>pcm_u8</entry>
<entry>unsigned 8-bit</entry>
</row>
<row>
<entry>pcm_alaw</entry>
<entry>G.711 A-LAW </entry>
</row>
<row>
<entry>pcm_mulaw</entry>
<entry>G.711 &mu;-LAW</entry>
</row>
<row>
<entry>pcm_s24daud</entry>
<entry>signed 24-bit D-Cinema Audioformat</entry>
</row>
<row>
<entry>pcm_zork</entry>
<entry>Activision Zork Nemesis</entry>
</row>
<row>
<entry>adpcm_ima_qt</entry>
<entry>Apple QuickTime</entry>
</row>
<row>
<entry>adpcm_ima_wav</entry>
<entry>Microsoft/IBM WAVE</entry>
</row>
<row>
<entry>adpcm_ima_dk3</entry>
<entry>Duck DK3</entry>
</row>
<row>
<entry>adpcm_ima_dk4</entry>
<entry>Duck DK4</entry>
</row>
<row>
<entry>adpcm_ima_ws</entry>
<entry>Westwood Studios</entry>
</row>
<row>
<entry>adpcm_ima_smjpeg</entry>
<entry>SDL Motion JPEG</entry>
</row>
<row>
<entry>adpcm_ms</entry>
<entry>Microsoft</entry>
</row>
<row>
<entry>adpcm_4xm</entry>
<entry>4X Technologies</entry>
</row>
<row>
<entry>adpcm_xa</entry>
<entry>Phillips Yellow Book CD-ROM eXtended Architecture</entry>
</row>
<row>
<entry>adpcm_ea</entry>
<entry>Electronic Arts</entry>
</row>
<row>
<entry>adpcm_ct</entry>
<entry>Creative 16->4-bit</entry>
</row>
<row>
<entry>adpcm_swf</entry>
<entry>Adobe Shockwave Flash</entry>
</row>
<row>
<entry>adpcm_yamaha</entry>
<entry>Yamaha</entry>
</row>
<row>
<entry>adpcm_sbpro_4</entry>
<entry>Creative VOC SoundBlaster Pro 8->4-bit</entry>
</row>
<row>
<entry>adpcm_sbpro_3</entry>
<entry>Creative VOC SoundBlaster Pro 8->2.6-bit</entry>
</row>
<row>
<entry>adpcm_sbpro_2</entry>
<entry>Creative VOC SoundBlaster Pro 8->2-bit</entry>
</row>
<row>
<entry>adpcm_thp</entry>
<entry>Nintendo GameCube FMV THP</entry>
</row>
<row>
<entry>adpcm_adx</entry>
<entry>Sega/CRI ADX</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</sect3>
</sect2>
<sect2 id="menc-feat-dvd-mpeg4-lavc-encoding-options">
<title>Encodieroptionen von libavcodec</title>
<para>
Idealerweise möchtest du eventuell in der Lage sein, dem Encoder einfach zu sagen,
er soll in den "hochqualitativen" Modus wechseln und weiter machen.
Das wäre vermutlich nett, aber unglücklicherweise schwer zu implementieren, da
verschiedene Encodieroptionen unterschiedliche Qualitätsresultate hervorbringen,
abhängig vom Quellmaterial.
Das liegt daran, dass die Komprimierung von den visuellen Eigenschaften des fraglichen Videos abhängt.
Zum Beispiel haben Anime und Live-Action sehr unterschiedliche Eigenschaften und
benötigen aus diesm Grund verschiedene Optionen, um optimale Encodierung zu erreichen.
Die gute Neuigkeit ist, dass einige Optionen wie <option>mbd=2</option>,
<option>trell</option> und <option>v4mv</option> nie ausgelassen werden sollten.
Siehe unten nach der detaillierten Beschreibung allgemeiner Encodieroptionen.
</para>
<itemizedlist>
<title>Anzupassende Optionen:</title>
<listitem>
<para>
<emphasis role="bold">vmax_b_frames</emphasis>: 1 oder 2 ist gut, abhängig vom Film.
Beachte, dass du, falls deine Encodierung von DivX5 decodierbar sein muss, den
Support für "closed GOP" aktivieren musst, indem du die
<systemitem class="library">libavcodec</systemitem>-Option <option>cgop</option>
verwendest, du musst jedoch Szenenerkennung deaktivieren, was wiederum keine gute
Idee ist, da es die Ecodierungseffizienz etwas angreift.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">vb_strategy=1</emphasis>: hilft in Szenen mit viel
Bewegung (high-motion).
Bei manchen Videos wird vmax_b_frames der Qualität schaden, vmax_b_frames=2
zusammen mit vb_strategy=1 hilft jedoch.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">dia</emphasis>: Bewegungssuchbereich. Größer ist besser
als kleiner.
Negative Werte sind ein komplett anderer Maßstab.
Gute Werte sind -1 für ein schnelle oder 2-4 für langsame Encodierung.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">predia</emphasis>: Bewegungssuche Vorabdurchlauf (pre-pass).
Nicht so wichtig wie dia. Gute Werte sind 1 (Standard) bis 4. Erfordert preme=2, um
wirklich was zu nützen.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">cmp, subcmp, precmp</emphasis>: Vergleichsfunktion zur
Bewegungseinschätzung.
Experimentiere mit Werten von 0 (Standard), 2 (hadamard), 3 (dct) und
6 (Ratenverzerrung).
0 ist am schnellsten und ausreichend für precmp.
Für cmp und subcmp ist 2 gut bei Anime, und 3 ist gut bei Live-Action.
6 kann leicht besser sein oder auch nicht, ist aber langsam.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">last_pred</emphasis>: Anzahl der Bewegungsvorhersagen, die
vom vorherigen Frame genommen werden sollen.
1-3 oder so hilft bei geringer Geschwindigkeitseinbuße.
Höhere Werte sind langsam bei keinerlei Zusatzgewinn.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">cbp, mv0</emphasis>: Kontrolliert die Auswahl von Macroblöcken.
Kleine Geschwindigkeitseinbußen bei kleinem Qualitätsgewinn.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">qprd</emphasis>: adaptive Quantisierung basierend auf der
Komplexität des Macroblocks.
Kann hilfreich sein oder schaden, abhängig vom Video und anderen Optionen.
Dies kann Artefakte verursachen, es sei denn, du setzt vqmax auf einen halbwegs
kleinen Wert (6 ist gut, vielleicht so langsam wie 4); vqmin=1 sollte ebenfalls
helfen.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">qns</emphasis>: sehr langsam, speziell wenn kombiniert
mit qprd.
Diese Option veranlasst den Encoder, durch Kompressionsartefakte entstandenes
Rauschen zu minimieren anstatt das encodierte Video strikt der Quelle anzupassen.
Verwende dies nicht, es sei denn du, hast bereits alles andere so weit wie möglich
optimiert und die Resultate sind immer noch nicht gut genug.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">vqcomp</emphasis>: Frequenzkontrolle optimieren.
Welche Werte gut sind, hängt vom Film ab.
Du kannst dies sicher so lassen wie es ist, wenn du willst.
Wird vqcomp verringert, werden mehr Bits auf Szenen mit geringer Komlexität
gelegt, wird es erhöht, legt es diese Bits auf Szenen mit hoher Komlexität
(Standard: 0.5, Bereich: 0-1. empfohlener Bereich: 0.5-0.7).
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">vlelim, vcelim</emphasis>: Setzt die Schwelle für die
Eliminierung einzelner Koeffizienten bei Helligkeits- und Farbanteilen.
Sie werden in allen MPEG-ähnlichen Algorithmen getrennt encodiert.
Die Idee hinter diesen Optionen ist, einige gute Heuristiken zu verwenden,
um zu bestimmen, wenn ein Wechsel innerhalb eines Blocks kleiner als der
der von dir festgelegte Schwellenwert ist und in solch einem Fall den
Block einfach so zu encodieren als fände "kein Wechsel" statt.
Das spart Bits und beschleunigt womöglich die Encodierunng. vlelim=-4 und vcelim=9
scheinen gut für Live-Filme zu sein, helfen aber scheinbar nicht bei Anime;
beim Encodieren einer Animation solltest du sie womöglich unverändert lassen.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">qpel</emphasis>: Bewegungsabschätzung auf ein viertel
Pixel (quarter pel).
MPEG-4 verwendet als Voreinstellung eine Halbpixel-Genauigkeit für die Bewegungssuche,
deswegen hat diese Option einen Overhead, da mehr Informationen in der
encodierte Datei untergebracht werden.
Der Kompressionsgewinn/-verlust hängt vom Film ab, ist aber in der Regel nicht
sonderlich effektiv bei Anime.
qpel zieht immer eine signifikante Erhöhung der CPU-Decodierzeit nach
sich (+25% in der Praxis).
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">psnr</emphasis>: wirkt sich eigentlich nicht auf
das Encodieren aus, schreibt jedoch eine Log-Datei mit Typ/Größe/Qualität
jedes Frames und gibt am Ende die Summe des PSNR Signal-zu-Rauschabstands
(Peak Signal to Noise Ratio) aus.
</para>
</listitem>
</itemizedlist>
<itemizedlist>
<title>Optionen, mit denen besser nicht herumgespielt werden sollte:</title>
<listitem>
<para>
<emphasis role="bold">vme</emphasis>: Der Standardwert ist der beste.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">lumi_mask, dark_mask</emphasis>: Psychovisuell adaptive
Quantisierung.
Du solltest nicht im Traum daran denken, mit diesen Optionen herumzuspielen,
wenn dir Qualität wichtig ist.
Vernünftige Werte mögen in deinem Fall effektiv sein, aber sei gewarnt,
dies ist sehr subjektiv.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">scplx_mask</emphasis>: Versucht, Blockartefakte
zu verhindern, Postprocessing ist aber besser.
</para>
</listitem>
</itemizedlist>
</sect2>
<sect2 id="menc-feat-mpeg4-lavc-example-settings">
<title>Beispiele für Encodierungseinstellungen</title>
<para>
Die folgenden Einstellungen sind Beispiele verschiedener Kombinationen
von Encodierungsoptionen, die den Kompromiss Geschwindigkeit gegenüber
Qualität bei gleicher Zielbitrate beeinflussen.
</para>
<para>
Alle Encodierungseinstellungen wurden auf einem Beispielvideo
mit 720x448 @30000/1001 fps getestet, die Zielbitrate war 900kbps und
der Rechner war ein AMD-64 3400+ mit 2400 MHz im 64bit-Modus.
Jede Encodiereinstellung zeichnet sich aus durch die gemessene
Encodiergeschwindigkeit (in Frames pro Sekunde) und den PSNR-Verlust
(in dB) im Vergleich zu Einstellungen für "sehr hohe Qualität".
Bitte habe Verständnis, dass du abhängig von deiner Quelldatei,
deinem Rechnertyp und Entwicklungsfortschritten sehr unterschiedliche
Resultate erzielen wirst.
</para>
<para>
<informaltable frame="all">
<tgroup cols="4">
<thead>
<row><entry>Beschreibung</entry><entry>Encodieroptionen</entry><entry>Geschwindigkeit (in fps)</entry><entry>Relativer PSNR-Verlust (in dB)</entry></row>
</thead>
<tbody>
<row>
<entry>Sehr hohe Qualität</entry>
<entry><option>vcodec=mpeg4:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:predia=2:dia=2:vmax_b_frames=2:vb_strategy=1:precmp=2:cmp=2:subcmp=2:preme=2:qns=2</option></entry>
<entry>6fps</entry>
<entry>0dB</entry>
</row>
<row>
<entry>Hohe Qualität</entry>
<entry><option>vcodec=mpeg4:mbd=2:trell:v4mv:last_pred=2:dia=-1:vmax_b_frames=2:vb_strategy=1:cmp=3:subcmp=3:precmp=0:vqcomp=0.6:turbo</option></entry>
<entry>15fps</entry>
<entry>-0.5dB</entry>
</row>
<row>
<entry>Schnell</entry>
<entry><option>vcodec=mpeg4:mbd=2:trell:v4mv:turbo</option></entry>
<entry>42fps</entry>
<entry>-0.74dB</entry>
</row>
<row>
<entry>Echtzeit</entry>
<entry><option>vcodec=mpeg4:mbd=2:turbo</option></entry>
<entry>54fps</entry>
<entry>-1.21dB</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</sect2>
<sect2 id="custommatrices"><title>Maßgeschneiderte inter/intra-Matrizen</title>
<para>
Mit diesem Feature von <systemitem class="library">libavcodec</systemitem>
bist du in der Lage, eigene inter- (I-Frames/Keyframes) und intra-Matrizen
(P-Frames/predicted Frames) zu setzen. Es wird von vielen Codecs unterstützt:
<systemitem>mpeg1video</systemitem> und <systemitem>mpeg2video</systemitem>
sollen damit funktionieren.
</para>
<para>
Eine typische Anwendung dieses Features ist, die von den
<ulink url="http://www.kvcd.net/">KVCD</ulink>-Specifikationen
bevorzugten Matrizen zu setzen.
</para>
<para>
Die <emphasis role="bold">KVCD "Notch" Quantisierungsmatrix:</emphasis>
</para>
<para>
Intra:
<screen>8 9 12 22 26 27 29 34
9 10 14 26 27 29 34 37
12 14 18 27 29 34 37 38
22 26 27 31 36 37 38 40
26 27 29 36 39 38 40 48
27 29 34 37 38 40 48 58
29 34 37 38 40 48 58 69
34 37 38 40 48 58 69 79</screen>
Inter:
<screen>16 18 20 22 24 26 28 30
18 20 22 24 26 28 30 32
20 22 24 26 28 30 32 34
22 24 26 30 32 32 34 36
24 26 28 32 34 34 36 38
26 28 30 32 34 36 38 40
28 30 32 34 36 38 42 42
30 32 34 36 38 40 42 44</screen>
</para>
<para>
Anwendung:
<screen>$ mencoder <replaceable>input.avi</replaceable> -o <replaceable>output.avi</replaceable> -oac copy -ovc lavc -lavcopts inter_matrix=...:intra_matrix=... </screen>
</para>
<para>
<screen>$ mencoder <replaceable>input.avi</replaceable> -ovc lavc -lavcopts
vcodec=mpeg2video:intra_matrix=8,9,12,22,26,27,29,34,9,10,14,26,27,29,34,37,
12,14,18,27,29,34,37,38,22,26,27,31,36,37,38,40,26,27,29,36,39,38,40,48,27,
29,34,37,38,40,48,58,29,34,37,38,40,48,58,69,34,37,38,40,48,58,69,79
:inter_matrix=16,18,20,22,24,26,28,30,18,20,22,24,26,28,30,32,20,22,24,26,
28,30,32,34,22,24,26,30,32,32,34,36,24,26,28,32,34,34,36,38,26,28,30,32,34,
36,38,40,28,30,32,34,36,38,42,42,30,32,34,36,38,40,42,44 -oac copy -o svcd.mpg</screen>
</para>
</sect2>
<sect2 id="menc-feat-dvd-mpeg4-example">
<title>Beispiel</title>
<para>
Jetzt hast du gerade eben deine brandneue Kopie von Harry Potter und die
Kammer des Schreckens gekauft (natürlich die Breitbildedition), und du
willst diese DVD so rippen, dass du sie deinem Home Theatre PC hinzufügen
kannst. Dies ist eine Region-1-DVD, also ist sie NTSC. Das unten stehende
Beispiel wird auch auf PAL zutreffen, nur dass du
<option>-ofps 24000/1001</option> weglässt (weil die Ausgabeframerate die
gleiche ist wie die Eingabeframerate), und logischerweise werden die
Ausschnittsabmessungen anders sein.
</para>
<para>
Nach dem Start von <option>mplayer dvd://1</option>, verfolgen wir den
detailliert in der Sektion <link linkend="menc-feat-telecine">Wie mit telecine
und interlacing in NTSC-DVDs umgehen</link> beschriebenen Prozess und
entdecken, dass es progressive Video mit 24000/1001 fps ist, was bedeutet, dass
wir keinen inverse telecine-Filter wie <option>pullup</option> oder
<option>filmdint</option> anwenden müssen.
</para>
<para id="menc-feat-dvd-mpeg4-example-crop">
Als Nächstes wollen wir das passende Ausschnittsrechteck bestimmen, also
verwenden wir den cropdetect-Filter:
<screen>mplayer dvd://1 -vf cropdetect</screen>
Stelle sicher, dass du einen voll gefüllten Frame anstrebst (wie zum
Beispiel eine helle Szene, nach den Eröffnungs-Credits und Filmlogos),
und dass du diese Ausgabe in <application>MPlayer</application>s Konsole siehst:
<screen>crop area: X: 0..719 Y: 57..419 (-vf crop=720:362:0:58)</screen>
Wir spielen den Film dann mit diesem Filter ab, um seine Korrektheit zu testen:
<screen>mplayer dvd://1 -vf crop=720:362:0:58</screen>
Und wir sehen, dass er einfach perfekt aussieht. Als Nächstes vergewissern wir
uns, dass Breite und Höhe ein Vielfaches von 16 sind. Die Breite ist gut,
aber die Höhe ist es nicht. Da wir in der 7-ten Klasse in Mathe nicht gefehlt
haben, wissen wir, dass das am nähesten liegende Vielfache von 16 kleiner
als 362 der Wert 352 ist (Taschenrechner ist erlaubt).
</para>
<para>
Wir könnten einfach <option>crop=720:352:0:58</option> verwenden, aber es wäre
nett, ein bisschen von oben und ein bisschen von unten wegzunehmen, sodass
wir zentriert bleiben. Wir haben die Höhe um 10 Pixel schrumpfen lassen, aber
wir wollen das y-Offset nicht um 5 Pixel erhöhen, da dies eine ungerade Zahl
ist und die Qualität nachteilig beeinflussen würde. Statt dessen werden wir
das y-Offset um 4 Pixel erhöhen:
<screen>mplayer dvd://1 -vf crop=720:352:0:62</screen>
Ein anderer Grund, Pixel von beidem - oben und unten - abzuschnipseln ist,
dass wir sicher gehen wollen, jegliches halbschwarze Pixel eliminiert zu
haben, falls welche existieren. Beachte, falls das Video telecined
ist, stelle sicher, dass der <option>pullup</option>-Filter (oder für
welchen umgekehrten telecine-Filter auch immer du dich entschieden hast)
in der Filterkette auftaucht, bevor du zuschneidest. Ist es interlaced,
deinterlace es vor dem Zuschneiden.
(Wenn du dich entscheidest, interlaced Video beizubehalten, dann vergewissere dich, dass
das vertikale crop-Offset ein Vielfaches von 4 ist.)
</para>
<para>
Wenn du wirklich besorgt um den Verlust dieser 10 Pixel bist, ziehst du
statt dessen etwa das Herunterskalieren der Abmessungen auf das am nächsten
liegende Vielfache von 16 vor.
Die Filterkette würde dann etwa so aussehen:
<screen>-vf crop=720:362:0:58,scale=720:352</screen>
Das Video auf diese Art herunter zu skalieren wird bedeuten, dass eine
kleine Menge Details verloren geht, obwohl es vermutlich nicht wahrnehmbar
sein wird. Hoch zu skalieren führt zu niedrigerer Qualität (es sei denn,
du erhöhst die Bitrate). Ausschneiden sondert sämtliche dieser Pixel
aus. Es ist ein Kompromiss, den du unter allen Umständen
in Betracht ziehen solltest. Zum Beispiel, wenn das DVD-Video für das Fernsehen
hergestellt wurde, solltest du vertikales Skalieren vermeiden, da das
Zeilensampling mit der Art und Weise korrespondiert, für die der Inhalt
ursprünglich aufgenommen wurde.
</para>
<para>
Bei der Überprüfung sehen wir, dass unser Film ordentlich Action enthält
und sehr viele Details, also wählen wir 2400Kbit für unsere Bitrate.
</para>
<para>
Wir sind nun bereit, die 2-pass Encodierung durchzuführen. Erster Durchlauf:
<screen>mencoder dvd://1 -ofps 24000/1001 -oac copy -vf pullup,softskip,crop=720:352:0:62,hqdn3d=2:1:2 -ovc lavc \
-lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:mbcmp=3:autoaspect:vpass=1 \
-o Harry_Potter_2.avi</screen>
Und der zweite Durchlauf ist derselbe, außer dass wir <option>vpass=2</option>
festlegen:
<screen>mencoder dvd://1 -ofps 24000/1001 -oac copy -vf pullup,softskip,crop=720:352:0:62,hqdn3d=2:1:2 -ovc lavc \
-lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:mbcmp=3:autoaspect:vpass=2 \
-o Harry_Potter_2.avi</screen>
</para>
<para>
Die Optionen <option>v4mv:mbd=2:trell</option> werden die Qualität
außerordentlich erhöhen, auf Kosten der Encodierdauer. Es gibt
einen kleinen Grund, diese Optionen auszulassen, wenn das Primärziel
die Qualität ist. Die Optionen
<option>cmp=3:subcmp=3:mbcmp=3</option> wählen eine Vergleichsfunktion,
die eine höhere Qualität liefert als die Standardeinstellungen.
Du darfst mit diesem Parameter rumexperimentieren (ziehe die Manpage
zu möglichen Werten zu Rate) da verschiedene Funktionen abhängig vom
Quellmaterial einen starken Einfluss auf die Qualität haben. Wenn du zum Beispiel
meinst, dass <systemitem class="library">libavcodec</systemitem> zu
viele Blockartefakte produziert, könntest du ja das experimentelle
NSSE als Vergleichsfunktion via <option>*cmp=10</option> wählen.
</para>
<para>
Für diesen Film wird das resultierende AVI 138 Minuten lang und nahezu
3GB groß sein. Und weil du erzählt hast, dass eine große Datei nichts
ausmacht, ist dies eine perfekt akzeptierbare Größe. Wolltest du sie aber
kleiner haben, könntest du eine niedrigere Bitrate hernehmen. Erhöhte
Bitraten haben verminderte Rückgaben, während wir also deutlich eine
Verbesserung von 1800Kbit nach 2000Kbit sehen, ist es oberhalb 2000Kbit
nicht so auffällig. Fühl dich frei solange herum zu experimentieren bis
du glücklich bist.
</para>
<para>
Weil wir das Quellvideo durch einen Denoise-Filter geschickt haben,
könntest du einige davon während des Playbacks wieder hinzufügen wollen.
Dies zusammen mit dem Nachbearbeitungsfilter <option>spp</option>
verbessert die Wahrnehmung der Qualität drastisch und hilft dabei,
blockhafte Artefakte aus dem Video zu eliminieren.
Mit <application>MPlayer</application>s Option <option>autoq</option>
kannst du den Nachbearbeitungsaufwand des spp-Filters abhängig von der
verfügbaren CPU variieren. An dieser Stelle kannst du auch Gamma- und/oder
Farbkorrektur zur besten Anpassung an dein Display verwenden, wenn du willst.
Zum Beispiel:
<screen>mplayer Harry_Potter_2.avi -vf spp,noise=9ah:5ah,eq2=1.2 -autoq 3</screen>
</para>
</sect2>
</sect1>
<sect1 id="menc-feat-xvid">
<title>Encodieren mit dem <systemitem class="library">Xvid</systemitem>-Codec</title>
<para>
<systemitem class="library">Xvid</systemitem> ist eine freie
Programmbibliothek zum Encodieren von MPEG-4 ASP-Videostreams.
Bevor du mit <link linkend="xvid"> zu encodieren beginnst, musst du
<application>MEncoder</application> so einstellen, dass er es unterstützt</link>.
</para>
<para>
Dieses Handbuch beabsichtigt, sich vorwiegend durch dieselbe Art von
Informationen auszuzeichnen wie x264's Encodier-Handbuch.
Beginne deshalb damit,
<link linkend="menc-feat-x264-encoding-options-intro">den ersten Teil</link>
dieses Handbuchs zu lesen.
</para>
<sect2 id="menc-feat-xvid-intro">
<title>Welche Optionen sollte ich verwenden, um die besten Resultate zu erzielen?</title>
<para>
Bitte beginne mit der Durchsicht der
<systemitem class="library">Xvid</systemitem>-Sektion von
<application>MPlayer</application>s Manpage.
Diese Sektion ist als Ergänzung zur Manpage zu verstehen.
</para>
<para>
Die Standardeinstellungen von Xvid sind bereits ein guter Kompromiss zwischen
Geschwindigkeit und Qualität, deshalb kannst du ruhig bei ihnen
bleiben, wenn nachfolgender Abschnitt dich allzusehr ins Grübeln bringt.
</para>
</sect2>
<sect2 id="menc-feat-xvid-encoding-options">
<title>Encodieroptionen von <systemitem class="library">Xvid</systemitem></title>
<itemizedlist>
<listitem>
<para>
<emphasis role="bold">vhq</emphasis>
Diese Einstellung betreffen den Entscheidungsalgorithmus für
Macroblöcke, wobei gilt, je höher die Einstellung desto weiser die
Entscheidung.
Die Standardeinstellung kann für jede Encodierung sicher verwendet
werden, während höhere Einstellungen immer für PSNR hilfreich, jedoch
signifikant langsamer sind.
Nimm bitte zur Kenntnis, dass ein besserer PSNR nicht notwedigerweise
bedeutet, dass das Bild besser aussehen wird, aber er zeigt dir, dass
du näher am Original bist.
Wird er deaktiviert, beschleunigt dies die Encodierung spürbar; wenn
Geschwindigkeit ein Kriterium für dich ist, kann dieser Kompromiss es wert sein.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">bvhq</emphasis>
Dies erledigt dieselbe Arbeit wie vhq, macht dies jedoch bei B-Frames.
Es hat einen vernachlässigbar kleinen Einfluss auf die Geschwindigkeit, und
verbessert geringfügig die Qualität (um etwa +0.1dB PSNR).
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">max_bframes</emphasis>
Eine höhere Anzahl von erlaubten hintereinander folgenden B-frames verbessert
gewöhnlich die Komprimierbarkeit, obwohl dies auch zu mehr Blockartefakten
führt.
Die Standardeinstellung ist ein guter Kompromiss zwischen Komprimierbarkeit
und Qualität, aber wenn du Bitraten-hungrig bist kannst du sie bis auf 3
hochschrauben.
Du kannst sie auch auf 1 oder 0 verringern, wenn du auf perfekte Qualität
abzielst, wenngleich du in diesem Fall sicherstellen solltest, dass deine
Zielbitrate hoch genug ist, um zu gewährleisten, dass der Encoder nicht
die Quantisierer höher setzen muss, um den Wert zu erreichen.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">bf_threshold</emphasis>
Dies kontrolliert die B-Frame-Empfindlichkeit des Encoders, wobei ein
höherer Wert dazu führt, dass mehr B-Frames angewendet werden (und
umgekehrt).
Diese Einstellung muss zusammen mit <option>max_bframes</option>
verwendet werden; bist du Bitraten-hungrig, solltest du beides erhöhen,
<option>max_bframes</option> und <option>bf_threshold</option>,
während du <option>max_bframes</option> erhöhen und
<option>bf_threshold</option> verringern kannst, sodass der Encoder
B-Frames nur an Stellen anwendet, die diese auch
<emphasis role="bold">wirklich</emphasis> brauchen.
Eine niedrigere Zahl an <option>max_bframes</option> und ein höherer Wert
bei <option>bf_threshold</option> ist möglicherweise keine kluge Wahl,
da dies den Encoder zwingt, B-Frames in Stellen zu setzen, die nicht
davon profitieren würden und dies daher die visuelle Qualität reduziert.
Wie auch immer, wenn du mit Standalone-Playern kompatibel bleiben musst,
die nur alte DivX-Profile unterstützen (der wiederum höchstens einen
aufeinander folgenden B-Frame unterstützt), wäre dies dein einziger Weg,
die Komprimierbarkeit mittels B-Frames zu verbessern.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">trellis</emphasis>
Optimiert den Quantisierungsprozess um einen optimalen Kompromiss
zwischen PSNR und Bitrate zu erhalten, was signifikant Bit-sparend
wirkt.
Diese Bits können woanders im Video wieder verwendet werden
und verbessern die visuelle Gesamtqualität.
Du solltest es immer eingeschaltet lassen, da sein Einfluss auf
die Qualität gewaltig ist.
Gerade wenn du Geschwindigkeit haben willst, darfst du es nicht
deaktivieren, solange du nicht <option>vhq</option>
und alle anderen CPU-hungrigeren Optionen auf
ein Minimum heruntergesetzt hast.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">hq_ac</emphasis>
Aktiviert die Vorhersagemethode für einen besseren Koeffizientenaufwand, was
die Dateigröße leicht um etwa 0.15 bis 0.19% reduziert (was mit einer
PSNR-Erhöhung um weniger als 0.01dB einhergeht), während es eine
vernachlässigbar kleine Einwirkung auf die Geschwindigkeit hat.
Es empfiehlt sich deshalb, dies immer eingeschaltet zu lassen.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">cartoon</emphasis>
Entworfen, um Kartoon-Inhalt besser zu encodieren, und hat keine Auswirkung
auf die Geschwindigkeit, da es lediglich die Heuristiken zur Bestimmung des
Modus für diese Art Inhalt abstimmt.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">me_quality</emphasis>
Diese Einstellung ist da, um die Präzision der Bewegungseinschätzung zu
kontrollieren.
Je höher <option>me_quality</option>, desto präziser wird die Schätzung
der Originalbewegung sein, und desto besser wird der resultierende Ausschnitt
die Originalbewegung einfangen.
</para>
<para>
Die Standardeinstellung ist in jedem Fall die beste;
folglich ist es nicht empfehlenswert, sie herunter zu drehen,
es sei denn du hast es wirklich auf Geschwindigkeit abgesehen,
da alle durch eine gute Bewegungseinschätzung gesparten Bits
woanders verwendet würden, was die Gesamtqualität verbessern
würde.
Gehe deshalb nie unter 5, selbst wenn es der letzte Ausweg
sein sollte.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">chroma_me</emphasis>
Verbessert die Bewegungsabschätzung dadurch, dass auch die
chroma-(Farb)-Informationen einbezogen werden, wobei
<option>me_quality</option> alleine nur luma (Graustufen)
verwendet.
Dies verlangsamt die Encodierung um 5-10%, verbessert aber die
visuelle Qualität durch Reduzieren von Blockeffekten ein wenig
und reduziert die Dateigröße um rund 1.3%.
Wenn du Geschwindigkeit haben willst, solltest du diese Option
deaktivieren, bevor du anfängst zu überlegen,
<option>me_quality</option> zu reduzieren.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">chroma_opt</emphasis>
Ist dafür vorgesehen, die chroma-Bildqualität rund um reine
weiße/schwarze Kanten zu verbessern, eher noch als die
Kompression zu verbessern.
Dies kann dabei helfen, den "Rote Stufen"-Effekt zu reduzieren.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">lumi_mask</emphasis>
Versucht, weniger Bitrate auf den Teil eines Bildes zu übergeben,
der vom menschlichen Auge nicht gut zu sehen ist, was dem Encoder
erlauben sollte, die eingesparten Bits auf wichtigere Teile des
Bildes anzuwenden.
Die durch diese Option gewonnene Encodierungsqualität hängt in
hohem Maße von persönlichen Vorlieben und von Monitortyp und
dessen Einstellungen ab (typischerweise wird es nicht gut aussehen,
wenn er hell oder ein TFT-Monitor ist).
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">qpel</emphasis>
Hebt die Anzahl Kandidaten der Bewegungsvektoren durch
Erhöhung der Präzision der Bewegungsabschätzung von einem
halben Pixel (halfpel) auf ein viertel Pixel
(quarterpel) an.
Die Idee dahinter ist, bessere Bewegungsvektoren zu finden,
was wiederum die Bitrate reduziert (deshalb wird die Qualität
verbessert).
Bewegungsvektoren mit viertel Pixel Präzision brauchen ein
paar Extrabits für die Codierung, die Bewegungsvektoren ergeben aber
nicht immer ein (viel) besseres Resultat.
Sehr oft verbraucht der Codec dennoch Bits für die Extrapräzision,
jedoch wird im Gegenzug eine geringe oder keine Extraqualität
gewonnen.
Unglücklicherweise gibt es keinen Weg, den möglichen Gewinn von
<option>qpel</option> vorzuaussagen, also musst du eigentlich
mit und ohne encodieren, um sicher zu gehen.
</para>
<para>
<option>qpel</option> kann fast die doppelte Encodierzeit in
Anspruch nehmen und erfordert etwa 25% mehr
Verarbeitungsleistung fürs Decodieren.
Es wird nicht von allen Standalone-Playern unterstützt.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">gmc</emphasis>
Versucht, Bits beim Schwenken von Szenen einzusparen, indem es einen
einzelnen Bewegungsvektor für den gesamten Frame verwendet.
Dies erhöht fast immer den PSNR, verlangsamt aber signifikant
die Encodierung (genauso wie die Decodierung).
Deshalb solltest du es nur nutzen, wenn du <option>vhq</option>
auf das Maximum gestellt hast.
<systemitem class="library">Xvid</systemitem>s GMC ist höher
entwickelt als das von DivX, wird aber nur von ein paar
Standalone-Playern unterstützt.
</para>
</listitem>
</itemizedlist>
</sect2>
<sect2 id="menc-feat-xvid-encoding-profiles">
<title>Encodierung Profile</title>
<para>
Xvid unterstützt Encodierungsprofile über die Option <option>profile</option>,
die dazu verwendet werden, den Eigenschaften des Xvid-Videostreams
Restriktionen so aufzuerlegen, dass es überall dort abgespielt werden kann,
wo das gewählte Profil unterstützt wird.
Die Restriktionen beziehen sich auf Auflösungen, Bitraten und
bestimmte MPEG-4-Features.
Die folgende Tabelle zeigt, was jedes Profil unterstützt.
</para>
<informaltable>
<tgroup cols="16" align="center">
<colspec colnum="1" colname="col1"/>
<colspec colnum="2" colname="col2"/>
<colspec colnum="3" colname="col3"/>
<colspec colnum="4" colname="col4"/>
<colspec colnum="5" colname="col5"/>
<colspec colnum="6" colname="col6"/>
<colspec colnum="7" colname="col7"/>
<colspec colnum="8" colname="col8"/>
<colspec colnum="9" colname="col9"/>
<colspec colnum="10" colname="col10"/>
<colspec colnum="11" colname="col11"/>
<colspec colnum="12" colname="col12"/>
<colspec colnum="13" colname="col13"/>
<colspec colnum="14" colname="col14"/>
<colspec colnum="15" colname="col15"/>
<colspec colnum="16" colname="col16"/>
<colspec colnum="17" colname="col17"/>
<spanspec spanname="spa2-5" namest="col2" nameend="col5"/>
<spanspec spanname="spa6-11" namest="col6" nameend="col11"/>
<spanspec spanname="spa12-17" namest="col12" nameend="col17"/>
<tbody>
<row>
<entry></entry>
<entry spanname="spa2-5">Einfach</entry>
<entry spanname="spa6-11">Einfach erweitert</entry>
<entry spanname="spa12-17">DivX</entry>
</row>
<row>
<entry>Profilname</entry>
<entry>0</entry>
<entry>1</entry>
<entry>2</entry>
<entry>3</entry>
<entry>0</entry>
<entry>1</entry>
<entry>2</entry>
<entry>3</entry>
<entry>4</entry>
<entry>5</entry>
<entry>Handheld</entry>
<entry>Portable NTSC</entry>
<entry>Portable PAL</entry>
<entry>Home Theater NTSC</entry>
<entry>Home Theater PAL</entry>
<entry>HDTV</entry>
</row>
<row>
<entry>Breite [Pixel]</entry>
<entry>176</entry>
<entry>176</entry>
<entry>352</entry>
<entry>352</entry>
<entry>176</entry>
<entry>176</entry>
<entry>352</entry>
<entry>352</entry>
<entry>352</entry>
<entry>720</entry>
<entry>176</entry>
<entry>352</entry>
<entry>352</entry>
<entry>720</entry>
<entry>720</entry>
<entry>1280</entry>
</row>
<row>
<entry>Höhe [Pixel]</entry>
<entry>144</entry>
<entry>144</entry>
<entry>288</entry>
<entry>288</entry>
<entry>144</entry>
<entry>144</entry>
<entry>288</entry>
<entry>288</entry>
<entry>576</entry>
<entry>576</entry>
<entry>144</entry>
<entry>240</entry>
<entry>288</entry>
<entry>480</entry>
<entry>576</entry>
<entry>720</entry>
</row>
<row>
<entry>Framerate [fps]</entry>
<entry>15</entry>
<entry>15</entry>
<entry>15</entry>
<entry>15</entry>
<entry>30</entry>
<entry>30</entry>
<entry>15</entry>
<entry>30</entry>
<entry>30</entry>
<entry>30</entry>
<entry>15</entry>
<entry>30</entry>
<entry>25</entry>
<entry>30</entry>
<entry>25</entry>
<entry>30</entry>
</row>
<row>
<entry>Max. mittlere Bitrate [kbps]</entry>
<entry>64</entry>
<entry>64</entry>
<entry>128</entry>
<entry>384</entry>
<entry>128</entry>
<entry>128</entry>
<entry>384</entry>
<entry>768</entry>
<entry>3000</entry>
<entry>8000</entry>
<entry>537.6</entry>
<entry>4854</entry>
<entry>4854</entry>
<entry>4854</entry>
<entry>4854</entry>
<entry>9708.4</entry>
</row>
<row>
<entry>Höchstwert mittlere Bitrate über 3 Sek. [kbps]</entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry>800</entry>
<entry>8000</entry>
<entry>8000</entry>
<entry>8000</entry>
<entry>8000</entry>
<entry>16000</entry>
</row>
<row>
<entry>Max. B-Frames</entry>
<entry>0</entry>
<entry>0</entry>
<entry>0</entry>
<entry>0</entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry>0</entry>
<entry>1</entry>
<entry>1</entry>
<entry>1</entry>
<entry>1</entry>
<entry>2</entry>
</row>
<row>
<entry>MPEG-Quantisierung</entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
</row>
<row>
<entry>Adaptive Quantisierung</entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
</row>
<row>
<entry>Interlaced Encodierung</entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
</row>
<row>
<entry>Viertelpixel</entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
</row>
<row>
<entry>Globale Bewegungskompensierung</entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
<entry>X</entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
<entry></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect2>
<sect2 id="menc-feat-xvid-example-settings">
<title>Encodierungseinstellungen Beispiele</title>
<para>
Die folgenden Einstellungen sind Beispiele unterschiedlicher
Kombinationen von Encodierungsoptionen, die den Kompromiss
zwischen Geschwindigkeit gegenüber Qualität bei gleicher
Zielbitrate betreffen.
</para>
<para>
Alle Encodierungseinstellungen wurden auf einem Beispielvideo
mit 720x448 @30000/1001 fps getestet, die Zielbitrate war 900kbps,
und der Rechner war ein
AMD-64 3400+ mit 2400 MHz im 64bit-Modus.
Jede Encodierungseinstellung zeichnet sich aus durch die gemessene
Encodiergeschwindigkeit (in Frames pro Sekunde) und den PSNR-Verlust
(in dB) im Vergleich zu Einstellungen für "sehr hohe Qualität".
Bitte hab Verständnis, dass du abhängig von deiner Quelldatei,
deinem Rechnertyp und Entwicklungsfortschritten sehr unterschiedliche
Resultate erzielen wirst.
</para>
<para>
<informaltable frame="all">
<tgroup cols="4">
<thead>
<row><entry>Beschreibung</entry><entry>Encodieroptionen</entry><entry>Geschwindigkeit (in fps)</entry><entry>Relativer PSNR-Verlust (in dB)</entry></row>
</thead>
<tbody>
<row>
<entry>Sehr hohe Qualität</entry>
<entry><option>chroma_opt:vhq=4:bvhq=1:quant_type=mpeg</option></entry>
<entry>16fps</entry>
<entry>0dB</entry>
</row>
<row>
<entry>Hohe Qualität</entry>
<entry><option>vhq=2:bvhq=1:chroma_opt:quant_type=mpeg</option></entry>
<entry>18fps</entry>
<entry>-0.1dB</entry>
</row>
<row>
<entry>Schnell</entry>
<entry><option>turbo:vhq=0</option></entry>
<entry>28fps</entry>
<entry>-0.69dB</entry>
</row>
<row>
<entry>Echtzeit</entry>
<entry><option>turbo:nochroma_me:notrellis:max_bframes=0:vhq=0</option></entry>
<entry>38fps</entry>
<entry>-1.48dB</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</sect2>
</sect1>
<sect1 id="menc-feat-x264">
<title>Encodieren mit dem <systemitem class="library">x264</systemitem>-Codec</title>
<para>
<systemitem class="library">x264</systemitem> ist eine freie
Programmbibliothek zum Encodieren von H.264/AVC-Videostreams.
Bevor du mit <link linkend="xvid"> zu encodieren beginnst, musst
du <application>MEncoder</application> so einstellen, dass er es unterstützt</link>.
</para>
<sect2 id="menc-feat-x264-encoding-options">
<title>Encodieroptionen von x264</title>
<para>
Bitte beginne mit der Durchsicht der
<systemitem class="library">x264</systemitem>-Sektion von
<application>MPlayer</application>s Manpage.
Diese Sektion ist als Anhang zur Manpage vorgesehen.
Hier wirst du Schnellhinweise dazu finden, welche Optionen am
wahrscheinlichsten die meisten Leute interessieren. Die Manpage
ist knapper gehalten, aber auch vollständiger, und zeigt oft
viel bessere technische Details.
</para>
<sect3 id="menc-feat-x264-encoding-options-intro">
<title>Einführung</title>
<para>Dieses Handbuch berücksichtigt zwei Hauptkategorien der Encodieroptionen:</para>
<orderedlist>
<listitem>
<para>
Optionen, die hauptsächlich Encodierdauer gegenüber Qualität abwägen
</para>
</listitem>
<listitem>
<para>
Optionen, die zur Erfüllung zahlreicher persönlicher Vorlieben und spezieller Anforderungen nützlich sind
</para>
</listitem>
</orderedlist>
<para>
Letztendlich kannst nur du entscheiden, welche Optionen für deine
Zwecke am besten geeignet sind. Die Entscheidung für die erste
Klasse der Optionen ist die einfachste:
Du musst nur entscheiden, ob du denkst, dass Qualitätsunterschiede
Geschwindigkeitsunterschiede rechtfertigen. Für die zweite Klasse
der Optionen sind die Vorzüge weitaus subjektiver, und mehr Faktoren
können involviert sein. Beachte, dass manche der Optionen für
"persönliche Vorlieben und spezielle Anforderungen"
noch große Auswirkungen auf Geschwindigkeit oder Qualität haben können,
das ist aber nicht, wozu sie primär benutzt werden. Ein paar der
Optionen für "persönliche Vorlieben" können sogar Änderungen
verursachen, die für manche Leute besser aussehen aber schlechter
für andere.
</para>
<para>
Bevor du fortfährst, musst du verstehen, dass dieses Handbuch nur
eine Qualitätsmetrik verwendet: globaler PSNR.
Für eine kurze Erklärung, was PSNR ist, schau dir
<ulink url="http://en.wikipedia.org/wiki/PSNR">den Wikipedia-Artikel zu PSNR</ulink>
an.
Globaler PSNR ist die letzte gemeldete PSNR-Nummer, wenn du die
Option <option>psnr</option> in <option>x264encopts</option>
einbindest.
Jedesmal wenn du eine Forderung nach PSNR liest, ist eine der Annahmen
hinter dieser Forderung, dass gleiche Bitraten verwendet werden.
</para>
<para>
Nahezu alle dieser Handbuchkommentare unterstellen, dass du
2-pass anwendest.
Beim Vergleich der Optionen gibt es zwei Hauptgründe, 2-pass-Encodierung
zu nutzen.
Der erste ist, 2-pass bringt rund 1dB PSNR, was einen sehr
großen Unterschied ausmacht.
Der zweite ist, Optionen zu testen, indem man direkte Qualitätsvergleiche
zu 1-pass-Encodierung anstellt, führt einen einen wichtigen verwirrenden
Faktor ein: die Bitrate variiert bei jeder Encodierung oft signifikant.
Es ist nicht immer einfach zu sagen, ob Qualitätsänderungen vorwiegend
auf geänderte Optionen zurückzuführen sind oder ob sie meist
essentielle, zufällige Unterschiede in der erhaltenen Bitrate reflektieren.
</para>
</sect3>
<sect3 id="menc-feat-x264-encoding-options-speedvquality">
<title>Optionen, die primär Geschwindigkeit und Qualität betreffen</title>
<itemizedlist>
<listitem>
<para>
<emphasis role="bold">subq</emphasis>:
Von den Optionen, die dir erlauben, einen Kompromiss zwischen
Geschwindigkeit und Qualität einzugehen, sind <option>subq</option>
und <option>frameref</option> (siehe unten) gewöhnlich die bei weitem
wichtigsten.
Wenn du dich für die Optimierung von entweder Geschwindigkeit oder Qualität
interessierst, sind diese die ersten, die du in Erwägung ziehen solltest.
Bei der Dimension Geschwindigkeit, interagieren die Optionen
<option>frameref</option> und <option>subq</option> ziemlich stark
miteinander.
Die Erfahrung zeigt, dass mit einem Referenzframe <option>subq=5</option>
(die Standardeinstellung) das ganze etwa 35% mehr Zeit in Anspruch nimmt als
<option>subq=1</option>.
Mit 6 Referenzframes wächst der Nachteil auf 60%.
Der Effekt, den <option>subq</option> auf den PSNR ausübt, scheint ziemlich
konstant zu sein, ungeachtet der Anzahl der Referenzframes.
Typischerweise erreicht <option>subq=5</option> einen 0.2-0.5 dB höheren globalen
PSNR im Vergleich zu <option>subq=1</option>.
Dies ist gewöhnlich ausreichend, um sichtbar zu werden.
</para>
<para>
<option>subq=6</option> ist langsamer und führt bei erträglichen Kosten zu besserer
Qualität.
Im Vergleich zu <option>subq=5</option> gewinnt sie gewöhnlich 0.1-0.4 dB
globalen PSNR mit Geschwindigkeitseinbußen, die sich zwischen 25%-100%
bewegen.
Im Unterschied zu anderen Levels von <option>subq</option> hängt das
Verhalten von <option>subq=6</option> nicht sehr von <option>frameref</option>
und <option>me</option> ab. Statt dessen hängt die Effektivität von
<option>subq=6</option> größtenteils von der Anzahl der verwendeten
B-Frames ab. Im Normalgebrauch bedeutet dies, <option>subq=6</option>
hat einen großen Einfluss auf Geschwindigkeit und Qualität
in komplexen, stark bewegten Szenen, kann aber auch einen geringen Effekt
in Szenen mit wenig Bewegung haben. Beachte, dass dennoch empfohlen wird,
<option>bframes</option> immer auf etwas anderes als null
zu setzen (siehe unten).
</para>
<para>
<option>subq=7</option> ist der langsamste Modus mit der höchsten Qualität.
Im Vergleich zu <option>subq=6</option> erreicht er normalerweise zwischen 0.01-0.05 dB
Zuwachs des globalen PSNR bei Geschwindigkeitseinbußen variierend von 15%-33%.
Da der Kompromiss zwischen Zeit gegenüber Qualität recht gering ist, solltest
du ihn nur benutzen, wenn du jedes mögliche Bit einsparen möchtest und
Encodierzeit keine Rolle spielt.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">frameref</emphasis>:
<option>frameref</option> ist per Voreinstellung auf 1 gesetzt, jedoch
solltest du deshalb nicht darauf schließen, dass es unbedingt
auf 1 gesetzt sein muss.
Allein die Erhöhung von <option>frameref</option> auf 2 bringt rund
0.15dB PSNR mit einem Geschwindigkeitsnachteil von 5-10%; dies sieht nach
einem guten Kompromiss aus.
<option>frameref=3</option> bringt rund 0.25dB PSNR mehr als
<option>frameref=1</option>, was einen sichtbaren Unterschied machen
sollte.
<option>frameref=3</option> ist rund 15% langsamer als
<option>frameref=1</option>.
Leider setzen vermindernde Rückgaben schnell ein.
<option>frameref=6</option> kann erwartungsgemäß nur
0.05-0.1 dB mehr als <option>frameref=3</option> bei zusätzlichen
15% Geschwindigkeitsnachteil.
Oberhalb <option>frameref=6</option> sind die Qualitätsgewinne
für gewöhnlich sehr klein (obwohl du während der ganzen Diskussion
im Kopf behalten solltest, dass sie abhängig von deiner Quelle stark
variieren können).
In einem ziemlich typischen Fall wird <option>frameref=12</option>
den globalen PSNR um ein bisschen mehr als 0.02dB gegenüber
<option>frameref=6</option> verbessern, bei Geschwindigkeitseinbußen
von 15%-20%.
Bei so hohen <option>frameref</option>-Werten ist das wirklich
einzig Gute, dass man sagen kann, dass ein weiteres Anheben dieses
Wertes ziemlich sicher nie den PSNR <emphasis role="bold">schädigen</emphasis>
wird, jedoch sind zusätzliche Qualitätsvorteile sogar kaum messbar,
geschweige denn wahrnehmbar.
</para>
<note><title>Beachte:</title>
<para>
Das Erhöhen von <option>frameref</option> auf unnötig hohe Werte
<emphasis role="bold">kann</emphasis> und
<emphasis role="bold">tut dies üblicherweise auch</emphasis>
die Codiereffizienz schädigen, wenn du CABAC ausschaltest.
Mit eingeschaltetem CABAC (das Standardverhalten) scheint die
Möglichkeit, <option>frameref</option> "zu hoch"
zu setzen, gegenwärtig zu weit entfernt um sich Sorgen zu machen,
und in der Zukunft werden womöglich Optimierungen diese Möglichkeit
ganz und gar ausschließen.
</para>
</note>
<para>
Wenn du auf Geschwindigkeit abzielst, ist ein vernünftiger
Kompromiss, im ersten Durchgang niedrigere <option>subq</option>- und
<option>frameref</option>-Werte zu nehmen, und sie danach im
zweten Durchgang zu erhöhen.
Typischerweise hat dies einen vernachlässigbar negativen Effekt
auf die Encodierqualität: Du wirst womöglich unter 0.1dB PSNR
verlieren, was viel zu klein für einen sichtbaren Unterschied
sein sollte.
Trotzdem, unterschiedliche Werte für <option>frameref</option>
können auf verschiedene Weise die Frametypenbestimmung beeinflussen.
Höchstwahrscheinlich sind dies außerordentlich seltene Fälle,
willst du jedoch wirklich sicher gehen, ziehe in Betracht, ob
dein Video entweder Vollbild- respektive Einblendungsmuster
oder sehr große temporäre Überdeckungen enthält, was einen I-Frame
erzwingen könnte.
Passe <option>frameref</option> des ersten Durchgangs so an,
dass es groß genug ist, die Dauer des Einblendungszyklus
(oder der Überdeckungen) zu enthalten.
Zum Beispiel, wenn die Szene zwischen zwei Bildern über eine
Zeitspanne von drei Frames rückwärts und vorwärts springt,
setze <option>frameref</option> des ersten Durchgangs auf 3
oder höher.
Dieser Sachverhalt kommt vermutlich extrem selten in
Videomaterial mit Live Action vor, erscheint aber manchmal
bei eingefangenen Computerspiel-Sequenzen.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">me</emphasis>:
Diese Option dient der Wahl der Suchmethode der Bewegungseinschätzung.
Diese Option zu verändern stellt einen überschaubaren Kompromiss
zwischen Qualität und Geschwindigkeit dar.
<option>me=dia</option> ist nur ein paar Prozent schneller als
die Standardsuche, auf Kosten von unter 0.1dB globalem PSNR. Die
Standardeinstellung (<option>me=hex</option>) ist ein angemessener
Kompromiss zwischen Qualität und Geschwindigkeit.
<option>me=umh</option> bringt ein wenig unter 0.1dB globalem PSNR,
mit Geschwindigkeitsnachteil, der abhängig von <option>frameref</option>
variiert. Bei hohen <option>frameref</option>-Werten (z.B. 12 oder so)
ist <option>me=umh</option> etwa 40% langsamer als die Standardeinstellung
<option>me=hex</option>. Mit <option>frameref=3</option> fällt der
Geschwindigkeitsnachteil auf 25%-30%.
</para>
<para>
<option>me=esa</option> verwendet eine gründliche, für die praktische
Anwendung zu langsame Suche.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">partitions=all</emphasis>:
Diese Option aktiviert die Verwendung von 8x4, 4x8 und 4x4 Unterteilungen
in den vorhergesagten Macroblöcken (zusätzlich zu den Standardunterteilungen).
Sie zu aktivieren führt zu einem
recht beständigen Geschwindigkeitsverlust von 10%-15%. Sie ist
ziemlich nutzlos bei Quellen, die nur langsame Bewegungen enthalten,
obwohl in manchen Quellen mit sehr viel Bewegung und vielen kleinen,
sich bewegenden Objekten Zugewinne von etwa 0.1dB erwartet werden können.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">bframes</emphasis>:
Wenn du gewohnt bist, mit anderen Codecs zu encodieren, hast du
womöglich empfunden, dass B-Frames nicht immer nützlich sind.
Bei H.264 wurde dies geändert: es gibt neue Techniken und Blocktypen,
die in B-Frames möglich sind.
Für gewöhnlich kann selbst ein einfältiger Algorithmus zur Wahl
der B-Frames einen signifikanten PSNR-Vorteil bringen.
Es ist interessant festzustellen, dass die Anwendung von B-Frames
normalerweise den zweiten Durchgang ein bisschen beschleunigt,
und er kann auch eine Encodierung mit einfachem Durchgang etwas
schneller machen, wenn adaptive B-Frame-Bestimmung deaktiviert
ist.
</para>
<para>
Mit deaktivierter adaptiver B-Framebestimmung
(<option>nob_adapt</option> von <option>x264encopts</option>)
ist der optimale Wert für diese Einstellung normalerweise nicht
mehr als <option>bframes=1</option>, andernfalls leiden Szenen
mit sehr viel Bewegung darunter.
Mit aktivierter adaptiver B-Framebestimmung (das Standardverhalten)
ist es sicher, höhere Werte zu verwenden; der Encoder wird die Anwendung
von B-Frames in Szenen reduzieren, in denen sie die Kompression
schädigen könnten.
Der Encoder zieht es selten vor, mehr als 3 oder 4 B-Frames zu
verwenden; diese Option höher zu setzen wird einen geringen Effekt haben.
</para></listitem>
<listitem>
<para>
<emphasis role="bold">b_adapt</emphasis>:
Beachte: Dies ist standardmäßig eingeschaltet.
</para>
<para>
Ist diese Option aktiviert, wird der Encoder einen einigermaßen schnellen
Entscheidungsprozess zur Reduzierung der Anzahl B-Frames in Szenen anwenden, die
nicht viel von ihnen profitieren würden.
Du kannst <option>b_bias</option> dazu verwenden, zu optimieren wie
froh der Encoder über B-Frames sein soll.
Der Geschwindigkeitsnachteil adaptiver B-Frames ist gegenwärtig ziemlich
bescheiden, und genauso ist der potentielle Qualitätsgewinn.
Es sollte aber normalerweise nicht schaden.
Beachte, dass dies nur Geschwindigkeit und Frametypenbestimmung im ersten
Durchgang betrifft.
<option>b_adapt</option> und <option>b_bias</option> haben keinen
Effekt auf nachfolgende Durchgänge.
</para>
</listitem>
<listitem><para>
<emphasis role="bold">b_pyramid</emphasis>:
Du kannst diese Option genauso gut aktivieren, falls du >=2 B-Frames
verwendest; wie die Manpage dir sagt, erreichst du eine kleine
Qualitätsverbesserung bei keinerlei Geschwindigkeitseinbuße.
Beachte, dass diese Videos von libavcodec-basierten Decodern
älter als etwa 5. März 2005 nicht gelesen werden können.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">weight_b</emphasis>:
In typischen Fällen gibt es nicht viel Gewinn mit dieser Option.
Trotzdem, in überblendenden oder ins Schwarze übergehenden Szenen
liefert die gewichtete Vorhersage ziemlich große Einsparungen bei der Bitrate.
In MPEG-4 ASP wird ein Übergang ins Schwarze gewöhnlich am besten
als eine Serie aufwändiger I-Frames codiert; das Verwenden einer
gewichteten Vorhersage in B-Frames macht es möglich, wenigstens
manche von diesen in viel kleinere B-Frames zu wandeln.
Der Verlust an Encodierzeit ist minimal, da keine extra Bestimmungen
vorgenommen werden müssen.
Auch werden die CPU-Anforderungen des Encoders, im Gegensatz zu den
Einschätzungen mancher Leute, von gewichteter Vorhersage nicht sonderlich
beeinflusst, ansonsten bleibt alles gleich.
</para>
<para>
Leider hat der aktuelle Algorithmus zur adaptiven B-Frame-Bestimmung
eine starke Tendenz, B-Frames während des Fadens zu verhindern.
Bis sich dies ändert, kann es eine gute Idee sein,
<option>nob_adapt</option> zu deinen x264encopts hinzuzufügen, falls
du erwartest, dass Fades einen großen Effekt in deinem jeweiligen
Videoclip erzeugen.
</para>
</listitem>
<listitem id="menc-feat-x264-encoding-options-speedvquality-threads">
<para>
<emphasis role="bold">threads</emphasis>:
Diese Option erlaubt es, mehrere Threads zu erstellen, um parallel auf mehreren
CPUs zu encodieren. Du kannst die Anzahl der Threads manuell wählen oder,
besser, setze <option>threads=auto</option> und lasse
<systemitem class="library">x264</systemitem> erkennen, wie viele CPUs
verfügbar sind, und die passende Anzahl Threads automatisch wählen.
Wenn du eine Multi-Prozessor-Maschine hast, solltest du wirklich in Erwägung
ziehen, dies zu benutzen, da es die Encodiergeschwindigkeit linear in
der Anzahl der CPU-Kerne (ca. 94% pro CPU-Kern) erhöhen kann, bei sehr
geringem Qualitätsverlust (ca. 0.005dB bei Dualprozessor, ca. 0.01dB bei
einer Quad-Prozessor-Maschine).
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3 id="menc-feat-x264-encoding-options-misc-preferences">
<title>Diverse Eigenschaften betreffende Optionen</title>
<itemizedlist>
<listitem>
<para>
<emphasis role="bold">2-pass-Encodierung</emphasis>:
Oben wurde vorgeschlagen, immer 2-pass-Encodierung anzuwenden.
Es gibt aber durchaus Gründe, dies nicht zu tun. Beispielsweise bist du,
wenn du Live-TV aufnimmst und in Echtzeit encodierst,
gezwungen, einen einzigen Durchgang zu verwenden.
Auch ist ein Durchgang offensichtlich schneller als zwei Durchgänge;
wenn du exakt die gleichen Optionen bei beiden Durchgängen anwendest,
ist das Encodieren in zwei Durchgängen mindestens zweimal so langsam.
</para>
<para>
Noch gibt es sehr gute Gründe, in zwei Durchgängen zu encodieren.
Zum einen ist Ratenkontrolle in einem Durchgang kein Allheilmittel.
Sie trifft oft eine unvernünftige Auswahl, weil sie das große
Bild nicht sehen kann. Zum Beispiel angenommen, du hast ein zwei Minuten
langes Video bestehend aus zwei ausgeprägten Hälften. Die erste Hälfte
besitzt eine 60 Sekunden dauernde Szene mit sehr viel Bewegung, die
einzeln für sich etwa 2500kbps benötigt, um anständig auszusehen.
Direkt daruffolgend kommt eine viel weniger anspruchsvolle 60 Sekunden
lange Szene, die bei 300kbps gut aussieht. Angenommen du forderst in
der Theorie 1400kbps an, was beiden Szenen ausreichend entgegenkommen
würde. Die Ratenkontrolle in einem Durchgang wird in diesem Fall
ein paar "Fehler" machen. Zuallererst wird es in beiden Segmenten
1400kbps anpeilen. Das erste Segment könnte schwer überquantisiert enden,
was es unakzeptabel und unangemessen blockhaft aussehen lässt.
Das zweite Segment wird schwer unterquantisiert sein; es sieht vielleicht
perfekt aus, aber der Bitratenverlust dieser Perfektion wird komplett
unangemessen sein.
Noch schwerer vermeidbar ist das Problem am Übergang beider Szenen.
Die ersten Sekunden der Hälfte mit wenig Bewegung wird enorm
überquantisiert sein, weil die Ratenkontrolle noch die Art Anforderung
an die Bitrate erwartet, der sie in der ersten Hälfte des Videos begegnet
war. Diese "Fehlerperiode" der extrem überquantisierten Szene
mit wenig Bewegung wird fürchterlich schlecht aussehen, und wird sogar
weniger als die 300kbps in Anspruch nehmen als das, was sie genommen hätte, um annehmbar
auszusehen. Es gibt Mittel und Wege, diese Fälle des Encodierens in einem
Durchgang zu mildern, diese werden allerdingst dahin tendieren, die
fehlerhaften Vorhersagen der Bitraten zu häufen.
</para>
<para>
Multipass-Ratenkontrolle kann gegenüber der eines einzigen Durchgangs
enorm große Vorteile bieten.
Indem sie die im ersten Encodierungsdurchlauf gesammelte Statistik
verwendet, kann der Encoder mit angemessener Genauigkeit den Aufwand
(in Bit) abschätzen, den das Encodieren jeden gegebenen Frames bei
jedem gegebenen Quantisierer erfordert. Dies erlaubt eine viel
rationalere, besser geplante Zuweisung von Bits zwischen den
bithungrigen Szenen mit viel Bewegung und denen bescheidenen mit
wenig Bewegung.
Siehe <option>qcomp</option> unten für einige Ideen darüber, wie man
diese Zuweisungen nach seinem Geschmack optimiert.
</para>
<para>
Darüber hinaus brauchen zwei Durchgänge zweimal so lang wie ein Durchgang.
Du kannst die Optionen im ersten Durchgang auf höhere Geschwindigkeit
und niedrigere Qualität optimieren.
Wenn du deine Optionen geschickt wählst, kannst du einen sehr schnellen
ersten Durchgang hinkriegen.
Die resultierende Qualität im zweiten Durchgang wird geringfügig niedriger
ausfallen, weil die Größenvorhersage weniger akkurat ist, jedoch
ist die Qualitätsdifferenz normalerweise viel zu klein, um sichtbar zu sein.
Versuche zum Beispiel <option>subq=1:frameref=1</option> zu
<option>x264encopts</option> des ersten Durchgangs hinzuzufügen.
Verwende dann im zweiten Durchgang langsamere, hochwertigere Optionen:
<option>subq=6:frameref=15:partitions=all:me=umh</option>
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">Encodierung mit drei Durchgängen</emphasis>?
x264 bietet die Möglichkeit, eine beliebige Anzahl aufeinander folgender
Durchgänge auszuführen. Wenn du <option>pass=1</option> im ersten Durchgang
spezifizierst, dann verwende <option>pass=3</option> im nachfolgenden
Durchgang, der nachfolgende Durchgang wird beides tun, die Statistik des
vorhergehenden Durchgangs lesen und seine eigene Statistik schreiben.
Ein zusätzlicher Durchgang, der diesem folgt, wird eine sehr gute Basis
haben, von der aus er hochpräzise Vorhersagen der Framegrößen bei
einem gewählten Quantisierer machen kann.
In der Praxis ist der damit erzielte gesamte Qualitätsgewinn
gewöhnlich nahezu null, und ziemlich wahrscheinlich resultiert ein dritter
Durchgang in einem geringfügig schlechteren globalen PSNR als der Durchgang
davor. In der typischen Anwendung helfen drei Durchgänge, wenn du entweder
eine schleche Vorhersage der Bitraten oder schlecht aussehende Szenenübergänge
beim Verwenden nur eines Durchlaufs bekommst.
Dies passiert mit ziemlicher Wahrscheinlichkeit bei extrem kurzen Clips.
Ebenso gibt es ein paar Spezialfälle, in denen drei (oder mehr) Durchgänge
erfahrenen Nutzern dienlich sind, aber um es kurz zu machen, dieses Handbuch
behandelt die Diskussion solcher speziellen Fälle nicht.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">qcomp</emphasis>:
<option>qcomp</option> wägt die Anzahl der für "aufwändige" Frames
mit viel Bewegung vorgesehenen Bits gegen die für "weniger aufwändige"
Frames mit wenig Bewegung ab.
Bei einem Extrem zielt <option>qcomp=0</option> auf eine echte konstante
Bitrate ab. Typischerweise würde dies Szenen mit viel Bewegung vollkommen
ätzend aussehen lassen, während Szenen mit wenig Bewegung womöglich absolut
perfekt aussehen, jedoch öfter mehr Bitrate verwenden würden, als sie es für
lediglich sehr gutes Aussehen bräuchten. Beim anderen Extrem
erreicht <option>qcomp=1</option> nahezu konstante Quantisierungsparameter
(QP). Ein konstanter QP sieht nicht schlecht aus, die meisten Leute meinen
aber, es sei vernünftiger, etwas Bitrate aus den extrem aufwändigen Szenen
zu nehmen (wobei dort der Qualitätsverlust micht ganz so augenfällig ist)
und sie wieder den Szenen zuzuweisen, die bei sehr guter Qualität leichter
zu encodieren sind.
<option>qcomp</option> ist per Voreinstellung auf 0.6 gesetzt, was für den
Geschmack mancher Leute etwas zu langsam sein könnte (0.7-0.8 werden im
Allgemeinen auch verwendet).
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">keyint</emphasis>:
<option>keyint</option> ist einzig und allein zur Abwägung der
Durchsuchbarkeit der Datei gegenüber der Codiereffiziez da.
Als Standardwert ist <option>keyint</option> auf 250 gesetzt. In
Material mit 25fps garantiert dies, auf 10 Sekunden genau
suchen zu können. Wenn du meinst, es wäre wichtig und nützlich,
auf 5 Sekunden genau suchen zu können, setze es auf <option>keyint=125</option>;
dies wird der Qualität/Bitrate leicht schaden. Wenn es dir nur um Qualität
geht und nicht um die Durchsuchbarkeit, kannst du viel höhere Werte
setzen (vorausgesetzt du verstehst, daß es verringerte Resultate gibt, die verschwindend
klein werden oder sogar gegen null gehen). Der Videostream wird nach
wie vor suchbare Stellen besitzen, solange einige Szenenwechsel
vorhanden sind.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">deblock</emphasis>:
Dieses Thema ist im Begriff etwas kontrovers zu geraten.
</para>
<para>
H.264 definiert eine simple Deblocking-Prozedur bei I-Blöcken, die
von vorgegebenen Stärken und vom QP des strittigen Blocks
abhängigen.
Mit dem Standardwert werden hohe QP-Blöcke stark gefiltert, und
niedrige QP-Blöcke werden überhaupt nicht entblockt.
Die vom Standard definierten vorgegebenen Stärken sind mit
Bedacht gewählt und die Chancen stehen sehr gut, dass sie
PSNR-optimal sind, egal welches Video auch immer du zu encodieren
versuchst.
Der Parameter <option>deblock</option> erlaubt dir, Offsets festzulegen,
um Deblocking-Schwellen voreinzustellen.
</para>
<para>
Viele Leute scheinen zu glauben, es sei eine gute Idee, die Stärke
des Deblocking-Filters um hohe Beträge abzusenken (sagen wir -3).
Dies ist jedoch meist keine gute Idee, und in den meisten Fällen
verstehen Leute, die das machen, nicht viel davon wie Deblocking
standardmäßig funktioniert.
</para>
<para>
Die erste und wichtigste Sache, die man über den
in-loop-Deblocking-Filter wissen sollte, ist, dass die
Standardschwellenwerte meistens PSNR-optimal sind.
In den seltenen Fällen, in denen sie nicht optimal sind, ist das
ideale Offset plus oder minus 1.
Die Deblocking-Parameter durch einen höheren Betrag anzupassen
garantiert meist, dem PSNR zu schaden.
Das Verstärken des Filters wird mehr Details verwischen; den
Filter zu schwächen wird das Auftreten von Blockeffekten
erhöhen.
</para>
<para>
Es ist definitiv eine schlechte Idee, die Deblocking-Schwellenwerte
herabzusetzen, falls deine Quelle eine vorwiegend niedrige räumliche
Komplexität besitzt (z.B. nicht viele Details oder Rauschen).
Der in-loop-Filter macht eigentlich einen exzellenten Job durch
das Kaschieren auftretender Artefakte.
Besitzt die Quelle eine hohe räumliche Komplexität, sind Artefakte
weniger bemerkbar.
Dies ist so, weil das Schwingen (ringing) dazu neigt, wie Details
oder Rauschen auszusehen.
Die viselle Wahrnehmung des Menschen erkennt leicht, wenn Details
entfernt wurden, aber erkennt nicht so leicht, wenn Rauschen falsch
dargestellt wird.
Wird die Qualität subjektiv, sind Details und Rauschen etwas
austauschbares.
Durch das Herabsetzen der Deblocking-Filterstärke verstärkst du
höchstwahrscheinlich Fehler durch Hinzufügen von
Schwingungsartefakten, aber dem Auge fällt nichts auf, weil
es die Artefakte mit Details verwechselt.
</para>
<para>
Dies rechtfertigt jedoch <emphasis role="bold">nach wie vor</emphasis>
nicht das Herabsetzen der Deblocking-Filterstärke.
Du kannst im Allgemeinen besseres Qualitätsrauschen im Postprocessing
erzielen.
Falls deine H.264-Encodierungen zu verschwommen oder verschmiert
aussehen, versuche, mit
<option>-vf noise</option> beim Abspielen des encodierten Films
herumzuspielen.
<option>-vf noise=8a:4a</option> sollte die meisten weichen Artefakte
kaschieren.
Es wird meist mit Sicherheit besser aussehen als die Resultate, die
du durch einfaches Herumtüfteln mit dem Deblocking-Filter bekommen
hättest.
</para></listitem>
</itemizedlist>
</sect3>
</sect2>
<sect2 id="menc-feat-x264-example-settings">
<title>Beispiele für Encodieroptionen</title>
<para>
Die folgenden Einstellungen sind Beispiele unterschiedlicher
Kombinationen von Encodier-Optionen, die einen Kompromiss zwischen
Geschwindigkeit und Qualität bei gleicher Zielbitrate darstellen.
</para>
<para>
All diese Encodier-Einstellungen wurden an einem Beispielvideo
mit 720x448 @30000/1001 fps getestet, die Zielbitrate war 900kbps,
und der Rechner war ein
AMD-64 3400+ mit 2400 MHz im 64bit-Modus.
Jede Encodier-Einstellung zeichnet sich durch eine gemessene
Encodiergeschwindigkeit (in Frames pro Sekunde) und dem
PSNR-Verlust (in dB) im Vergleich zu den "sehr
hochwertigen" Einstellung aus.
Bitte hab dafür Verständnis, dass du abhängig von deiner Quelle, deinem
Rechnertyp und Entwicklungsfortschritten sehr unterschiedliche Resultate
erhalten kannst.
</para>
<para>
<informaltable frame="all">
<tgroup cols="4">
<thead>
<row><entry>Beschreibung</entry><entry>Encodier-Optionen</entry><entry>Geschwindigkeit (in fps)</entry><entry>Relativer PSNR-Verlust (in dB)</entry></row>
</thead>
<tbody>
<row>
<entry>Sehr hohe Qualität</entry>
<entry><option>subq=6:partitions=all:8x8dct:me=umh:frameref=5:bframes=3:b_pyramid:weight_b</option></entry>
<entry>6fps</entry>
<entry>0dB</entry>
</row>
<row>
<entry>Hohe Qualität</entry>
<entry><option>subq=5:8x8dct:frameref=2:bframes=3:b_pyramid:weight_b</option></entry>
<entry>13fps</entry>
<entry>-0.89dB</entry>
</row>
<row>
<entry>Schnell</entry>
<entry><option>subq=4:bframes=2:b_pyramid:weight_b</option></entry>
<entry>17fps</entry>
<entry>-1.48dB</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</sect2>
</sect1>
<sect1 id="menc-feat-video-for-windows">
<title>Encodieren mit der <systemitem class="library">Video for Windows</systemitem> Codecfamilie</title>
<para>
Video for Windows bietet einfaches Encodieren mittels binärer Video-Codecs.
Du kannst mit folgenden Codecs encodieren (solltest du mehr haben, teile es
uns bitte mit!)
</para>
<para>
Beachte, dass der Support hierfür sehr experimentell ist, und
einige Codecs arbeiten vielleicht nicht korrekt. Manche Codecs werden
nur in bestimmten Farbräumen funktionieren, versuche
<option>-vf format=bgr24</option> und <option>-vf format=yuy2</option>,
falls ein Codec versagt oder einen falschen Output liefert.
</para>
<sect2 id="menc-feat-enc-vfw-video-codecs">
<title>Von Video for Windows unterstützte Codecs</title>
<para>
<informaltable frame="all">
<tgroup cols="4">
<thead>
<row>
<entry>Video-Codec Dateiname</entry>
<entry>Beschreibung (FourCC)</entry>
<entry>md5sum</entry>
<entry>Kommentar</entry>
</row>
</thead>
<tbody>
<row>
<entry>aslcodec_vfw.dll</entry>
<entry>Alparysoft verlustfreier (lossless) Codec vfw (ASLC)</entry>
<entry>608af234a6ea4d90cdc7246af5f3f29a</entry>
<entry></entry>
</row>
<row>
<entry>avimszh.dll</entry>
<entry>AVImszh (MSZH)</entry>
<entry>253118fe1eedea04a95ed6e5f4c28878</entry>
<entry>benötigt <option>-vf format</option></entry>
</row>
<row>
<entry>avizlib.dll</entry>
<entry>AVIzlib (ZLIB)</entry>
<entry>2f1cc76bbcf6d77d40d0e23392fa8eda</entry>
<entry></entry>
</row>
<row>
<entry>divx.dll</entry>
<entry>DivX4Windows-VFW</entry>
<entry>acf35b2fc004a89c829531555d73f1e6</entry>
<entry></entry>
</row>
<row>
<entry>huffyuv.dll</entry>
<entry>HuffYUV verlustfrei (lossless) (HFYU)</entry>
<entry>b74695b50230be4a6ef2c4293a58ac3b</entry>
<entry></entry>
</row>
<row>
<entry>iccvid.dll</entry>
<entry>Cinepak Video (cvid)</entry>
<entry>cb3b7ee47ba7dbb3d23d34e274895133</entry>
<entry></entry>
</row>
<row>
<entry>icmw_32.dll</entry>
<entry>Motion Wavelets (MWV1)</entry>
<entry>c9618a8fc73ce219ba918e3e09e227f2</entry>
<entry></entry>
</row>
<row>
<entry>jp2avi.dll</entry>
<entry>ImagePower MJPEG2000 (IPJ2)</entry>
<entry>d860a11766da0d0ea064672c6833768b</entry>
<entry><option>-vf flip</option></entry>
</row>
<row>
<entry>m3jp2k32.dll</entry>
<entry>Morgan MJPEG2000 (MJ2C)</entry>
<entry>f3c174edcbaef7cb947d6357cdfde7ff</entry>
<entry></entry>
</row>
<row>
<entry>m3jpeg32.dll</entry>
<entry>Morgan Motion JPEG Codec (MJPG)</entry>
<entry>1cd13fff5960aa2aae43790242c323b1</entry>
<entry></entry>
</row>
<row>
<entry>mpg4c32.dll</entry>
<entry>Microsoft MPEG-4 v1/v2</entry>
<entry>b5791ea23f33010d37ab8314681f1256</entry>
<entry></entry>
</row>
<row>
<entry>tsccvid.dll</entry>
<entry>TechSmith Camtasia Screen Codec (TSCC)</entry>
<entry>8230d8560c41d444f249802a2700d1d5</entry>
<entry></entry>
</row>
<row>
<entry>vp31vfw.dll</entry>
<entry>On2 Open Source VP3 Codec (VP31)</entry>
<entry>845f3590ea489e2e45e876ab107ee7d2</entry>
<entry></entry>
</row>
<row>
<entry>vp4vfw.dll</entry>
<entry>On2 VP4 Personal Codec (VP40)</entry>
<entry>fc5480a482ccc594c2898dcc4188b58f</entry>
<entry></entry>
</row>
<row>
<entry>vp6vfw.dll</entry>
<entry>On2 VP6 Personal Codec (VP60)</entry>
<entry>04d635a364243013898fd09484f913fb</entry>
<entry></entry>
</row>
<row>
<entry>vp7vfw.dll</entry>
<entry>On2 VP7 Personal Codec (VP70)</entry>
<entry>cb4cc3d4ea7c94a35f1d81c3d750bc8d</entry>
<entry>falscher FourCC?</entry>
</row>
<row>
<entry>ViVD2.dll</entry>
<entry>SoftMedia ViVD V2 Codec VfW (GXVE)</entry>
<entry>a7b4bf5cac630bb9262c3f80d8a773a1</entry>
<entry></entry>
</row>
</tbody>
</tgroup>
</informaltable>
Die erste Spalte enthält die Codec-Namen, die nach dem Parameter
<literal>codec</literal> übergeben werden sollten, wie:
<option>-xvfwopts codec=divx.dll</option>.
Der FourCC-Code, der von jedem Codec verwendet wird, steht in Klammern.
</para>
<informalexample>
<para>
Ein Beispiel für die Konvertierung eines ISO DVD Trailers in eine
VP5-Flash-Videodatei unter Benutzung der compdata-Bitrateneinstellungen:
<screen>mencoder -dvd-device <replaceable>zeiram.iso</replaceable> dvd://7 -o <replaceable>trailer.flv</replaceable> \
-ovc vfw -xvfwopts codec=vp6vfw.dll:compdata=onepass.mcf -oac mp3lame \
-lameopts cbr:br=64 -af lavcresample=22050 -vf yadif,scale=320:240,flip \
-of lavf
</screen>
</para>
</informalexample>
</sect2>
<sect2 id="menc-feat-video-for-windows-bitrate-settings">
<title>Benutzung von vfw2menc, um eine Datei für Codeceinstellungen zu erzeugen</title>
<para>
Um mit Video für Windows Codecs zu encodieren, musst du Bitrate und andere
Optionen setzen. Nach dem Stand der Dinge funktioniert dies für x86
sowohl unter *NIX als auch unter Windows.
</para>
<para>
Zuerst musst du das <application>vfw2menc</application>-Programm erzeugen.
Es befindet sich im Ordner <filename class="directory">TOOLS</filename>
des MPlayer-Sourcebaums.
Um es unter Linux zu erstellen, kann <application>Wine</application> benutzt werden:
<screen>winegcc vfw2menc.c -o vfw2menc -lwinmm -lole32</screen>
Unter <application>MinGW</application> oder <application>Cygwin</application> verwende:
<screen>gcc vfw2menc.c -o vfw2menc.exe -lwinmm -lole32</screen>
Um es unter <application>MSVC</application> zu erstellen, wirst du getopt brauchen.
Getopt findest du im Original-<application>vfw2menc</application>-Archiv, das
es hier gibt:
Das Projekt <ulink url="http://oss.netfarm.it/mplayer-win32.php">MPlayer on win32</ulink>.
</para>
<informalexample>
<para>
Unten steht ein Beispiel für den VP6-Codec.
<screen>vfw2menc -f VP62 -d vp6vfw.dll -s firstpass.mcf</screen>
Dies wird den Konfigurationsdialog des VP6-Codecs öffnen.
Wiederhole diesen Schritt für den zweiten Durchlauf und benutze
<option>-s <replaceable>secondpass.mcf</replaceable></option>.
</para>
</informalexample>
<para>
Windows-Benutzer können
<option>-xvfwopts codec=vp6vfw.dll:compdata=dialog</option>
verwenden, damit der Dialog angezeigt wird, bevor die Encodierung startet.
</para>
</sect2>
</sect1>
<sect1 id="menc-feat-quicktime-7">
<title>
<application>MEncoder</application> benutzen, um <application>QuickTime</application>-kompatible Dateien zu erstellen
</title>
<sect2 id="menc-feat-quicktime-7-why-use-it">
<title>
Warum sollte jemand <application>QuickTime</application>-kompatible Dateien erstellen wollen?
</title>
<para>
Es gibt mehrere Gründe, warum das Erstellen von <application>QuickTime</application>-kompatiblen
Dateien wünschenswert sein kann.
</para>
<itemizedlist>
<listitem>
<para>
Du willst, dass jeder Computeranalphabet deine Encodierung auf jeder größeren
Plattform (Windows, Mac OS X, Unices &hellip;) anschauen kann.
</para>
</listitem>
<listitem>
<para>
<application>QuickTime</application> kann von mehr Features der Hardware- und
Softwarebeschleunigung von Max OS X gebrauch machen als plattformunabhängige
Player wie <application>MPlayer</application> oder <application>VLC</application>.
Das heißt, dass deine Encodierungen eine bessere Chance haben, auf älteren
G4-Machinen flüssig abgespielt werden zu können.
</para>
</listitem>
<listitem>
<para>
<application>QuickTime</application> 7 unterstützt den Next-Generation-Codec H.264,
der deutlich bessere Bildqualität erreicht als vorige Codecgenerationen
(MPEG-2, MPEG-4 &hellip;).
</para>
</listitem>
</itemizedlist>
</sect2>
<sect2 id="menc-feat-quicktime-7-constraints">
<title>Beschränkungen von <application>QuickTime</application> 7</title>
<para>
<application>QuickTime</application> 7 unterstützt H.264 Video und AAC Audio,
aber es unterstützt diese nicht gemuxt im AVI-Containerformat.
Du kannst jedoch <application>MEncoder</application> verwenden, um Video
und Audio zu encodieren, und dann ein separates Programm wie
<application>mp4creator</application> (Teil des
<ulink url="http://mpeg4ip.sourceforge.net/">MPEG4IP-Pakets</ulink>)
verwenden, um Video- und Tonspuren in einen MP4-Container zu muxen.
</para>
<para>
<application>QuickTime</application>s Unterstützung für H.264 ist begrenzt,
daher wirst du ein paar fortgeschrittene Features weglassen müssen.
Wenn du dein Video mit Features encodierst, die
<application>QuickTime</application> 7 nicht unterstützt, werden dir
<application>QuickTime</application>-basierte Player ein ziemlich weißes
Bild zeigen an Stelle des erwarteten Videos.
</para>
<itemizedlist>
<listitem>
<para>
<emphasis role="bold">B-Frames</emphasis>:
<application>QuickTime</application> 7 unterstützt maximal einen B-Frame, z.B.
<option>-x264encopts bframes=1</option>. Dies bedeutet, dass
<option>b_pyramid</option> and <option>weight_b</option> keine Auswirkungen
haben werden, da sie <option>bframes</option> größer als 1 erwarten.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">Macroblöcke</emphasis>:
<application>QuickTime</application> 7 unterstützt keine 8x8 DCT Macroblöcke.
Diese Option (<option>8x8dct</option>) ist per Voreinstellung aus, stelle daher sicher,
dass du sie nicht explizit aktiviert.
Dies bedeutet auch, dass die Option <option>i8x8</option> keine Auswirkungen haben
wird, denn sie benötigt <option>8x8dct</option>.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">Seitenverhältnis</emphasis>:
<application>QuickTime</application> 7 unterstützt Informationen über
SAR (sample aspect ratio) nicht; es nimmt SAR=1 an.
Lies <link linkend="menc-feat-quicktime-7-scale">den Abschnitt über Skalierung</link>
für eine Umgehung dieses Problems.
</para>
</listitem>
</itemizedlist>
</sect2>
<sect2 id="menc-feat-quicktime-7-crop">
<title>Beschneidung der Ränder (Cropping)</title>
<para>
Angenommen, du willst deine nagelneu gekaufte Kopie von "Chroniken von Narnia"
rippen. Deine DVD ist Region 1, d.h. sie ist in NTSC.
Das weiter unten stehende Beispiel kann man auch auf PAL anwenden, nur
dass du dann <option>-ofps 24000/1001</option> weglassen und etwas andere
Maße für <option>crop</option> und <option>scale</option> verwenden musst.
</para>
<para>
Nach dem Ausführen von <option>mplayer dvd://1</option> folgst du den Anweisungen,
die detailliert im Abschnitt
<link linkend="menc-feat-telecine">Wie mit telecine und interlacing in NTSC-DVDs umgehen</link>
beschrieben sind, und stellst fest, dass es sich um
24000/1001 fps progressives Video handelt. Das vereinfacht das Vorgehen etwas,
da du keinen inverse telecine Filter wie <option>pullup</option> oder einen
Deinterlacing-Filter wie <option>yadif</option> anwenden musst.
</para>
<para>
Als nächstes musst du die schwarzen Streifen oben und unten vom Video entfernen
wie in <link linkend="menc-feat-dvd-mpeg4-example-crop">vorigem</link>
Abschnitt beschrieben.
</para>
</sect2>
<sect2 id="menc-feat-quicktime-7-scale">
<title>Skalierung</title>
<para>
Der nächste Schritt ist wirklich herzzerreißend.
<application>QuickTime</application> 7 unterstützt keine MPEG-4-Videos
mit einer sample aspect ratio ungleich 1, daher wirst du das Video auf quadratische
Pixel hochskalieren (was eine Menge Platz verschwendet) oder herunterskalieren
(was ein paar Details der Quelle verliert) müssen.
Beides ist höchst ineffizient, jedoch einfach nicht zu vermeiden, wenn
dein Video von <application>QuickTime</application> 7 abspielbar sein soll.
<application>MEncoder</application> kann die passende Hoch- oder Herunterskalierung
durchführen bei Angabe von <option>-vf scale=-10:-1</option> oder
<option>-vf scale=-1:-10</option> respektive.
Dies wird dein Video auf die für die geschnittene Höhe korrekte Breite
schneiden, gerundet auf das nächste Vielfache von 16 für optimale Kompression.
Beachte, dass wenn du schneidest, solltest du zuerst schneiden und erst dann skalieren:
<screen>-vf crop=720:352:0:62,scale=-10:-1</screen>
</para>
</sect2>
<sect2 id="menc-feat-quicktime-7-avsync">
<title>A/V-Synchronisation</title>
<para>
Weil du in einen anderen Container muxen wirst, solltest du immer die Option
<option>harddup</option> verwenden, um sicherzustellen, dass doppelte
Frames in der Videoausgabe tatsächlich dupliziert werden.
Ohne diese Option wird <application>MEncoder</application> einfach eine Markierung
im Videostream machen, dass ein doppelter Frame vorkommt, und sich darauf
verlassen, dass die Software dafür sorgt, dass derselbe Frame zweimal
angezeigt wird. Leider überlebt diese "weiche Duplikation" das Remuxen
nicht, daher wird der Ton langsam Synchronisation zum Video verlieren.
</para>
<para>
Die endgültige Filterkette sieht so aus:
<screen>-vf crop=720:352:0:62,scale=-10:-1,harddup</screen>
</para>
</sect2>
<sect2 id="menc-feat-quicktime-7-bitrate">
<title>Bitrate</title>
<para>
Wie immer geht es bei der Wahl der Bitrate sowohl um technische Gegebenheiten
der Quelle, wie <link linkend="menc-feat-dvd-mpeg4-resolution-bitrate">hier</link>
erklärt wird, als auch um persönlichen Geschmack.
Dieser Film enthält durchaus einige Actionszenen und viele Details, aber
H.264-Video sieht gut aus auch bei viel geringeren Bitraten als XviD oder
andere MPEG-4-Codecs.
Nach vielem Experimentieren hat der Autor dieser Anleitung beschlossen,
den Film bei 900kbps zu encodieren, und dachte, er sehe ziemlich gut aus.
Du kannst die Bitrate verringern, um Platz zu sparen, oder erhöhen, um
die Qualität zu verbessern.
</para>
</sect2>
<sect2 id="menc-feat-quicktime-7-example">
<title>Encoding-Beispiel</title>
<para>
Du bist jetzt soweit, das Video zu encodieren. Da du auf Qualität Wert legst,
wirst du natürlich eine Encodierung mit zwei Durchläufen machen.
Um etwas Encodierzeit zu sparen, kannst du die Option <option>turbo</option>
beim ersten Durchlauf angeben; dies verringert <option>subq</option> und
<option>frameref</option> auf 1. Um etwas Platz zu sparen, kannst du die
Option <option>ss</option> verwenden, um die ersten Sekunden des Videos zu
überspringen. (Ich fand, dass dieser bestimmte Film 32 Sekunden Vorspann hat.)
<option>bframes</option> kann 0 oder 1 sein.
Die anderen Optionen werden in
<link linkend="menc-feat-x264-encoding-options-speedvquality">Encodierung mit dem <systemitem class="library">x264</systemitem>-Codec</link>
und der Manpage beschrieben.
<screen>mencoder dvd://1 -o /dev/null -ss 32 -ovc x264 \
-x264encopts pass=1:turbo:bitrate=900:bframes=1:\
me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \
-vf crop=720:352:0:62,scale=-10:-1,harddup \
-oac faac -faacopts br=192:mpeg=4:object=2 -channels 2 -srate 48000 \
-ofps 24000/1001</screen>
Wenn du einen Rechner mit mehreren Prozessoren hast, nutze die Chance, den
Encodierungsvorgang dramatisch zu beschleunigen, indem du
<link linkend="menc-feat-x264-encoding-options-speedvquality-threads">
<systemitem class="library">x264</systemitem>'s Multithreading-Modus
</link>
verwendest, indem du die Option <option>threads=auto</option> der
<option>x264encopts</option>-Kommandozeile hinzufügst.
</para>
<para>
Der zweite Durchlauf ist derselbe, außer dass du die Ausgabedatei angibst
und <option>pass=2</option> setzt.
<screen>mencoder dvd://1 <emphasis role="bold">-o narnia.avi</emphasis> -ss 32 -ovc x264 \
-x264encopts <emphasis role="bold">pass=2</emphasis>:turbo:bitrate=900:frameref=5:bframes=1:\
me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \
-vf crop=720:352:0:62,scale=-10:-1,harddup \
-oac faac -faacopts br=192:mpeg=4:object=2 -channels 2 -srate 48000 \
-ofps 24000/1001</screen>
</para>
<para>
Das resultierende AVI sollte in <application>MPlayer</application>
perfekt abspielbar sein, aber natürlich kann <application>QuickTime</application>
es nicht abspielen. Denn es unterstützt H264 in AVI nicht.
Der nächste Schritt ist also, das Video in einen MP4-Container zu muxen.
</para>
</sect2>
<sect2 id="menc-feat-quicktime-7-remux">
<title>Remuxen zu MP4</title>
<para>
Es gibt mehrere Möglichkeiten, AVI-Dateien nach MP4 zu muxen. Du kannst
<application>mp4creator</application> verwenden, welches Teil des
<ulink url="http://mpeg4ip.sourceforge.net/">MPEG4IP-Pakets</ulink> ist.
</para>
<para>
Demuxe das AVI <application>MPlayer</application> zuerst in separate Audio- und Videostreams.
<screen>mplayer narnia.avi -dumpaudio -dumpfile narnia.aac
mplayer narnia.avi -dumpvideo -dumpfile narnia.h264</screen>
Die Dateinamen sind wichtig; <application>mp4creator</application>
verlangt, dass AAC-Audiostreams <systemitem>.aac</systemitem> und
H.264-Videostreams <systemitem>.h264</systemitem> heißen.
</para>
<para>
Benutze nun <application>mp4creator</application>, um aus Audio- und
Videostreams eine MP4-Datei zu erzeugen.
<screen>mp4creator -create=narnia.aac narnia.mp4
mp4creator -create=narnia.h264 -rate=23.976 narnia.mp4</screen>
Anders als bei der Encodierung musst du die Framerate als Dezimalzahl
(23.976) und nicht als Bruch (24000/1001) angeben.
</para>
<para>
Diese Datei <systemitem>narnia.mp4</systemitem> sollte nun mit jeder
<application>QuickTime</application> 7 Anwendung wie dem
<application>QuickTime Player</application> oder
<application>iTunes</application> abspielbar sein.
Wenn du vorhast, das Video mit einem <application>QuickTime</application>-Plugin
im Browser anzuschauen, solltest du den Film außerdem "hinten", so dass
das <application>QuickTime</application>-Plugin während des Downloads
die Wiedergabe starten kann.
<application>mp4creator</application> kann diese Art Tracks erstellen:
<screen>mp4creator -hint=1 narnia.mp4
mp4creator -hint=2 narnia.mp4
mp4creator -optimize narnia.mp4</screen>
Du kannst das Ergebnis überprüfen, um sicherzustellen, dass die Hint-Tracks
erfolgreich erstellt wurden:
<screen>mp4creator -list narnia.mp4</screen>
Du solltest eine Auflistung der Tracks sehen:
1 Audio-, 1 Video- und 2 Hint-Tracks.
<screen>Track Type Info
1 audio MPEG-4 AAC LC, 8548.714 secs, 190 kbps, 48000 Hz
2 video H264 Main@5.1, 8549.132 secs, 899 kbps, 848x352 @ 23.976001 fps
3 hint Payload mpeg4-generic for track 1
4 hint Payload H264 for track 2
</screen>
</para>
</sect2>
<sect2 id="menc-feat-quicktime-7-metadata">
<title>Metadata-Tags hinzufügen</title>
<para>
Wenn du deinem Video Tags hinzufügen möchtest, die in iTunes angezeigt werden,
kannst du dazu
<ulink url="http://atomicparsley.sourceforge.net/">AtomicParsley</ulink>
verwenden.
<screen>AtomicParsley narnia.mp4 --metaEnema --title "The Chronicles of Narnia" --year 2005 --stik Movie --freefree --overWrite</screen>
Die Option <option>--metaEnema</option> entfernt jegliche existierenden Metadaten
(<application>mp4creator</application> fügt seinen Namen im Tag
"encoding tool" hinzu), und <option>--freefree</option> macht den frei
gewordenen Platz geltend.
Die Option <option>--stik</option> setzt den Videotyp
(wie z.B. Film und Serie), den iTunes verwendet, um verwandte Videodateien
zu gruppieren.
Die Option <option>--overWrite</option> überschreibt die ursprüngliche Datei.
Ohne sie erstellt <application>AtomicParsley</application> eine automatisch
benannte Datei im selben Verzeichnis und lässt die Originaldatei unberührt.
</para>
</sect2>
</sect1>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<sect1 id="menc-feat-vcd-dvd">
<title>Verwendung von <application>MEncoder</application> zum Erzeugen VCD/SVCD/DVD-konformer Dateien.</title>
<sect2 id="menc-feat-vcd-dvd-constraints">
<title>Formatbeschränkungen</title>
<para>
<application>MEncoder</application> ist in der Lage, MPEG-Dateien im VCD-, SCVD-
und DVD-Format durch Verwendung der
<systemitem class="library">libavcodec</systemitem>-Programmbibliothek
zu erzeugen.
Diese Dateien können danach im Zusammenhang mit
<ulink url="http://www.gnu.org/software/vcdimager/vcdimager.html">vcdimager</ulink>
oder
<ulink url="http://dvdauthor.sourceforge.net/">dvdauthor</ulink>
zum Erzeugen von Disks verwendet werden, die auf einem Standard Set-Top-Player
abgespielt werden können.
</para>
<para>
Die Formate DVD, SVCD und VCD sind starken Beschränkungen unterworfen.
Es ist nur eine kleine Auswahl an encodierten Bildgrößen und Seitenverhältnissen
verfügbar.
Wenn dein Film nicht bereits die Anforderungen erfüllt, musst du das Bild
skalieren, zuschneiden oder schwarze Ränder hinzufügen, um es konform zu machen.
</para>
<sect3 id="menc-feat-vcd-dvd-constraints-resolution">
<title>Formatbeschränkungen</title>
<informaltable frame="all">
<tgroup cols="9">
<thead>
<row>
<entry>Format</entry>
<entry>Auflösung</entry>
<entry>V. Codec</entry>
<entry>V. Bitrate</entry>
<entry>Samplerate</entry>
<entry>A. Codec</entry>
<entry>A. Bitrate</entry>
<entry>FPS</entry>
<entry>Seitenverhältnis</entry>
</row>
</thead>
<tbody>
<row>
<entry>NTSC DVD</entry>
<entry>720x480, 704x480, 352x480, 352x240</entry>
<entry>MPEG-2</entry>
<entry>9800 kbps</entry>
<entry>48000 Hz</entry>
<entry>AC3,PCM</entry>
<entry>1536 kbps (max)</entry>
<entry>30000/1001, 24000/1001</entry>
<entry>4:3, 16:9 (nur für 720x480)</entry>
</row>
<row>
<entry>NTSC DVD</entry>
<entry>352x240<footnote id='fn-rare-resolutions'><para>
Diese Auflösungen werden selten für DVDs verwendet, da sie von
ziemlch niedriger Qualität sind.</para></footnote></entry>
<entry>MPEG-1</entry>
<entry>1856 kbps</entry>
<entry>48000 Hz</entry>
<entry>AC3,PCM</entry>
<entry>1536 kbps (max)</entry>
<entry>30000/1001, 24000/1001</entry>
<entry>4:3, 16:9</entry>
</row>
<row>
<entry>NTSC SVCD</entry>
<entry>480x480</entry>
<entry>MPEG-2</entry>
<entry>2600 kbps</entry>
<entry>44100 Hz</entry>
<entry>MP2</entry>
<entry>384 kbps (max)</entry>
<entry>30000/1001</entry>
<entry>4:3</entry>
</row>
<row>
<entry>NTSC VCD</entry>
<entry>352x240</entry>
<entry>MPEG-1</entry>
<entry>1150 kbps</entry>
<entry>44100 Hz</entry>
<entry>MP2</entry>
<entry>224 kbps</entry>
<entry>24000/1001, 30000/1001</entry>
<entry>4:3</entry>
</row>
<row>
<entry>PAL DVD</entry>
<entry>720x576, 704x576, 352x576, 352x288</entry>
<entry>MPEG-2</entry>
<entry>9800 kbps</entry>
<entry>48000 Hz</entry>
<entry>MP2,AC3,PCM</entry>
<entry>1536 kbps (max)</entry>
<entry>25</entry>
<entry>4:3, 16:9 (nur für 720x576)</entry>
</row>
<row>
<entry>PAL DVD</entry>
<entry>352x288<footnoteref linkend='fn-rare-resolutions'/></entry>
<entry>MPEG-1</entry>
<entry>1856 kbps</entry>
<entry>48000 Hz</entry>
<entry>MP2,AC3,PCM</entry>
<entry>1536 kbps (max)</entry>
<entry>25</entry>
<entry>4:3, 16:9</entry>
</row>
<row>
<entry>PAL SVCD</entry>
<entry>480x576</entry>
<entry>MPEG-2</entry>
<entry>2600 kbps</entry>
<entry>44100 Hz</entry>
<entry>MP2</entry>
<entry>384 kbps (max)</entry>
<entry>25</entry>
<entry>4:3</entry>
</row>
<row>
<entry>PAL VCD</entry>
<entry>352x288</entry>
<entry>MPEG-1</entry>
<entry>1152 kbps</entry>
<entry>44100 Hz</entry>
<entry>MP2</entry>
<entry>224 kbps</entry>
<entry>25</entry>
<entry>4:3</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
Wenn ein Film ein 2.35:1 Seitenverhältnis hat (die meisten aktuellen Action-Filme),
wirst du schwarze Ränder hinzufügen oder den Film auf 16:9 zuschneiden müssen,
um eine DVD oder VCD herzustellen.
Wenn du schwarze Ränder hinzufügst, versuche diese an 16-Pixel-Rändern
auszurichten, um den Einfluß auf die Encodier-Performance zu minimieren.
Zum Glück besitzen DVDs eine ausreichend hohe Bitrate, damit du dich
nicht zu sehr um die Encodier-Effizienz sorgen musst. SVCD
und VCD jedoch sind höchst mager an Bitrate und erfordern Aufwand, um akzeptable
Qualität zu erreichen.
</para>
</sect3>
<sect3 id="menc-feat-vcd-dvd-constraints-gop">
<title>GOP-Größenbeschränkungen</title>
<para>
DVD, VCD und SVCD zwingen dich auch zu relativ niedrigen
GOP-Größen (Group of Pictures).
Für Material mit 30 fps ist die größte erlaubte GOP-Größe 18.
Für 25 oder 24 fps ist das Maximum 15.
Die GOP-Größe wird mittels der Option <option>keyint</option> gesetzt.
</para>
</sect3>
<sect3 id="menc-feat-vcd-dvd-constraints-bitrate">
<title>Bitraten-Beschränkungen</title>
<para>
VCD-Video muss bei CBR 1152 kbps sein.
Zu dieser nach oben begrenzten Einschränkung kommt auch noch eine
extrem niedrige vbv-Puffergröße von 327 Kilobit.
SVCD erlaubt das Variieren der Video-Bitraten auf bis zu 2500 kbps,
und eine etwas weniger restriktive vbv-Puffergröße von 917 Kilobit
ist erlaubt.
DVD-Video-Bitraten können sich bis auf irgendwo um die 9800 kbps
einpegeln (wenngleich typische Bitraten etwa halb so groß sind),
und die vbv-Puffergröße ist 1835 Kilobit.
</para>
</sect3>
</sect2>
<sect2 id="menc-feat-vcd-dvd-output">
<title>Output-Optionen</title>
<para>
<application>MEncoder</application> besitzt Optionen zur Kontrolle des
Output-Formats.
Durch das Verwenden dieser Optionen können wir ihn anweisen, den
korrekten Dateityp zu erzeugen.
</para>
<para>
Die Optionen für VCD und SVCD werden xvcd und xsvcd genannt, weil sie
erweiterte Formate sind.
Sie sind nicht strikt Standard-konform, hauptsächlich weil der Output
keine Scan-Offsets enthält.
Wenn du ein SVCD-Image generieren musst, solltest du die Output-Datei
dem
<ulink url="http://www.gnu.org/software/vcdimager/vcdimager.html">vcdimager</ulink>
übergeben.
</para>
<para>
VCD:
<screen>-of mpeg -mpegopts format=xvcd</screen>
</para>
<para>
SVCD:
<screen>-of mpeg -mpegopts format=xsvcd</screen>
</para>
<para>
DVD (mit Zeitstempeln für jeden Frame, wenn möglich):
<screen>-of mpeg -mpegopts format=dvd:tsaf</screen>
</para>
<para>
DVD mit NTSC-Pullup:
<screen>-of mpeg -mpegopts format=dvd:tsaf:telecine -ofps 24000/1001</screen>
Dies erlaubt 24000/1001 fps progressive-Inhalt bei 30000/1001
fps encodiert zu werden, wobei die DVD-Konformität erhalten bleibt.
</para>
<sect3 id="menc-feat-vcd-dvd-output-aspect">
<title>Seitenverhältnis</title>
<para>
Der Parameter für das Seitenverhältnis von <option>-lavcopts</option> wird zum Encodieren
des Seitenverhältnisses einer Datei verwendet.
Während des Playbacks wird das Seitenverhältnis dazu benutzt, die korrekte
Größe des Videos wieder herzustellen.
</para>
<para>
16:9 oder "Breitbild"
<screen>-lavcopts aspect=16/9</screen>
</para>
<para>
4:3 oder "Vollbild"
<screen>-lavcopts aspect=4/3</screen>
</para>
<para>
2.35:1 oder "Cinemascope" NTSC
<screen>-vf scale=720:368,expand=720:480 -lavcopts aspect=16/9</screen>
Um die korrekte Skalierungsgröße zu berechnen, verwende die
erweiterte NTSC-Breite von 854/2.35 = 368
</para>
<para>
2.35:1 oder "Cinemascope" PAL
<screen>-vf scale=720:432,expand=720:576 -lavcopts aspect=16/9</screen>
Um die korrekte Skalierungsgröße zu berechnen, verwende die
erweiterte PAL-Breite von 1024/2.35 = 432
</para>
</sect3>
<sect3 id="menc-feat-vcd-dvd-a-v-sync">
<title>Aufrechterhalten der A/V-Synchronisation</title>
<para>
Um die Audio-/Video-Synchronisation während der kompletten
Encodierung aufrechtzuerhalten, muss
<application>MEncoder</application> Frames auslassen oder duplizieren.
Dies funktioniert beim Muxen in eine AVI-Datei ziemlich gut,
aber meist schlägt das Aufrechterhalten der A/V-Synchronisation mit
anderen Muxern wie etwa MPEG garantiert fehl.
Dies ist der Grund, weshalb es nötig ist, den
<option>harddup</option>-Video-Filter am Ende der Filterkette anzuhängen,
um diese Art Problem zu vermeiden.
Du findest mehr technische Informationen zu <option>harddup</option>
im Abschnitt
<link linkend="menc-feat-dvd-mpeg4-muxing-filter-issues">Verbessern der Mux- und A/V-Synchronisationszuverlässigkeit</link>
oder in der Manpage.
</para>
</sect3>
<sect3 id="menc-feat-vcd-dvd-output-srate">
<title>Sampleraten-Konvertierung</title>
<para>
Wenn die Audio-Samplerate in der Originaldatei nicht dieselbe wie die
vom Zielformat angeforderte ist, wird eine Sampleraten-Konvertierung
erforderlich.
Dies wird erreicht, indem man die Option <option>-srate</option> und
den <option>-af lavcresample</option> Audio-Filter zusammen
anwedet.
</para>
<para>
DVD:
<screen>-srate 48000 -af lavcresample=48000</screen>
</para>
<para>
VCD und SVCD:
<screen>-srate 44100 -af lavcresample=44100</screen>
</para>
</sect3>
</sect2>
<sect2 id="menc-feat-vcd-dvd-lavc">
<title>Verwenden des libavcodec zur VCD/SVCD/DVD-Encodierung</title>
<sect3 id="menc-feat-vcd-dvd-lavc-intro">
<title>Einführung</title>
<para>
<systemitem class="library">libavcodec</systemitem> kann verwendet
werden, um ein VCD/SVCD/DVD-konformes Video durch die Anwendung der
passenden Optionen zu erzeugen.
</para>
</sect3>
<sect3 id="menc-feat-vcd-dvd-lavc-options">
<title>lavcopts</title>
<para>
Dies ist eine Liste von Feldern in <option>-lavcopts</option>, die du
möglicherweise ändern musst, um einen für VCD, SVCD
oder DVD konformen Film herzustellen:
</para>
<itemizedlist>
<listitem>
<para>
<emphasis role="bold">acodec</emphasis>:
<option>mp2</option> für VCD, SVCD oder PAL DVD;
<option>ac3</option> wird am häufigsten für DVD verwendet.
PCM-Audio kann auch für DVD verwendet werden, aber dies ist meistens
eine riesen Platzverschwendung.
Beachte, dass MP3-Audio nicht konform für irgendeines dieser Formate
ist, aber Player haben oft ohnehin kein Problem, es abzuspielen.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">abitrate</emphasis>:
224 für VCD; bis zu 384 für SVCD; bis zu 1536 für DVD, aber
übliche Werte reichen von 192 kbps für Stereo bis 384 kbps für
5.1-Kanal-Sound.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">vcodec</emphasis>:
<option>mpeg1video</option> für VCD;
<option>mpeg2video</option> für SVCD;
<option>mpeg2video</option> wird gewöhnlich für DVD verwendet, man kann aber auch
<option>mpeg1video</option> für CIF-Auflösungen verwenden.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">keyint</emphasis>:
Angewandt, um die GOP-Größe zu setzen.
18 für Material mit 30fps oder 15 für Material mit 25/24 fps.
Kommerzielle Hersteller scheinen Keyframe-Intervalle von 12 zu bevorzugen.
Es ist möglich, dies viel größer zu machen und dennoch die Kompatibilität
zu den meisten Player zu behalten.
Ein <option>keyint</option> von 25 sollte nie irgendwelche Probleme machen.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">vrc_buf_size</emphasis>:
327 für VCD, 917 für SVCD und 1835 für DVD.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">vrc_minrate</emphasis>:
1152 für VCD. kann für SVCD und DVD so gelassen werden.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">vrc_maxrate</emphasis>:
1152 für VCD; 2500 für SVCD; 9800 für DVD.
Für SVCD und DVD könntest du niedrigere Werte verwenden, abhängig von
deinen persönlichen Vorlieben und Anforderungen.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">vbitrate</emphasis>:
1152 für VCD;
bis zu 2500 für SVCD;
bis zu 9800 für DVD.
Für letztere zwei Formate sollte vbitrate basierend auf persönliche
Vorlieben gesetzt werden.
Zum Beispiel, wenn du darauf bestehst, 20 Stunden oder so passend auf
eine DVD zu bringen, könntest du vbitrate=400 benutzen.
Die sich daraus ergebende Video-Qualität würde womöglich äußerst mies.
Wenn du versuchst, die maximal mögliche Qualität auf eine DVD zu quetschen,
nimm vbitrate=9800, aber sei gewarnt, dass dich dies zu weniger als
einer Stunde Video auf einer Single-Layer DVD zwingen würde.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">vstrict</emphasis>:
<option>vstrict</option>=0 sollte verwendet werden, um DVDs zu erstellen.
Ohne diese Option erzeugt <application>MPlayer</application> einen Stream, der von
manchen standalone DVD-Playern nicht korrekt decodiert werden kann.
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3 id="menc-feat-vcd-dvd-lavc-examples">
<title>Beispiele</title>
<para>
Dies ist eine typische Zusammenstellung von mindestens zu verwendenden
<option>-lavcopts</option>-Optionen zum Encodieren eines Videos:
</para>
<para>
VCD:
<screen>-lavcopts vcodec=mpeg1video:vrc_buf_size=327:vrc_minrate=1152:\
vrc_maxrate=1152:vbitrate=1152:keyint=15:acodec=mp2</screen>
</para>
<para>
SVCD:
<screen>-lavcopts vcodec=mpeg2video:vrc_buf_size=917:vrc_maxrate=2500:vbitrate=1800:\
keyint=15:acodec=mp2</screen>
</para>
<para>
DVD:
<screen>-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\
keyint=15:vstrict=0:acodec=ac3</screen>
</para>
</sect3>
<sect3 id="menc-feat-vcd-dvd-lavc-advanced">
<title>Erweiterte Optionen</title>
<para>
Für das Encodieren höherer Qualität könntest du auch qualitätssteigernde
Optionen an lavcopts anfügen, wie etwa <option>trell</option>,
<option>mbd=2</option> und weitere.
Beachte, dass <option>qpel</option> und <option>v4mv</option>, obwohl
oft bei MPEG-4 nützlich, nicht auf MPEG-1 oder MPEG-2 anwendbar sind.
Außerdem, wenn du versuchst, eine sehr hochwertige DVD-Encodierung zu
machen, kann es nützlich sein, <option>dc=10</option> an lavcopts
anzufügen.
Wobei dies helfen könnte, das Auftreten von Blöcken in fahl-farbenen
Bereichen zu reduzieren.
Zusammenfassend ist dies ein Beispiel einer Zusammenstellung von lavcopts für
für eine höherwertige DVD:
</para>
<para>
<screen>-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=8000:\
keyint=15:trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:predia=-10:cbp:mv0:\
vqmin=1:lmin=1:dc=10:vstrict=0</screen>
</para>
</sect3>
</sect2>
<sect2 id="menc-feat-vcd-dvd-audio">
<title>Encodieren von Audio</title>
<para>
VCD und SVCD unterstützen MPEG-1 Layer II Audio, indem sie einen
MP2-Encoder von
<systemitem class="library">toolame</systemitem>,
<systemitem class="library">twolame</systemitem>,
oder <systemitem class="library">libavcodec</systemitem>
verwenden.
Der libavcodec MP2 ist weit davon entfernt, so gut zu sein wie die
anderen zwei Bibliotheken, dennoch sollte er immer verfügbar sein.
VCD unterstützt nur Audio mit konstanten Bitraten (CBR) wogegen SVCD
auch variable Bitraten (VBR) unterstützt.
Sei vorsichtig, wenn du VBR benutzt, weil einige schlechte
Standalone-Player diese nicht so gut unterstützen könnten.
</para>
<para>
Für DVD-Audio wird der AC3-Codec von
<systemitem class="library">libavcodec</systemitem>
verwendet.
</para>
<sect3 id="menc-feat-vcd-dvd-audio-toolame">
<title>toolame</title>
<para>
Für VCD und SVCD:
<screen>-oac toolame -toolameopts br=224</screen>
</para>
</sect3>
<sect3 id="menc-feat-vcd-dvd-audio-twolame">
<title>twolame</title>
<para>
Für VCD und SVCD:
<screen>-oac twolame -twolameopts br=224</screen>
</para>
</sect3>
<sect3 id="menc-feat-vcd-dvd-audio-lavc">
<title>libavcodec</title>
<para>
Für DVD mit 2-Kanal-Sound:
<screen>-oac lavc -lavcopts acodec=ac3:abitrate=192</screen>
</para>
<para>
Für DVD mit 5.1-Kanal-Sound:
<screen>-channels 6 -oac lavc -lavcopts acodec=ac3:abitrate=384</screen>
</para>
<para>
Für VCD und SVCD:
<screen>-oac lavc -lavcopts acodec=mp2:abitrate=224</screen>
</para>
</sect3>
</sect2>
<sect2 id="menc-feat-vcd-dvd-all">
<title>Zusammenfassung</title>
<para>
Diese Sektion zeigt einige komplette Befehle zum Erzeugen von
VCD/SVCD/DVD-konformen Videos.
</para>
<sect3 id="menc-feat-vcd-dvd-all-pal-dvd">
<title>PAL DVD</title>
<para>
<screen>mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -vf scale=720:576,\
harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:\
vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:acodec=ac3:\
abitrate=192:aspect=16/9 -ofps 25 \
-o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable></screen>
</para>
</sect3>
<sect3 id="menc-feat-vcd-dvd-all-ntsc-dvd">
<title>NTSC DVD</title>
<para>
<screen>mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -vf scale=720:480,\
harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:\
vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=18:vstrict=0:acodec=ac3:\
abitrate=192:aspect=16/9 -ofps 30000/1001 \
-o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable></screen>
</para>
</sect3>
<sect3 id="menc-feat-vcd-dvd-all-pal-ac3-copy">
<title>PAL AVI mit enthaltenem AC3 Audio nach DVD</title>
<para>
Hat die Quelle bereits AC3-Audio, nimm -oac copy anstatt es
erneut zu encodieren.
<screen>mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -vf scale=720:576,\
harddup -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:\
vbitrate=5000:keyint=15:vstrict=0:aspect=16/9 -ofps 25 \
-o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable></screen>
</para>
</sect3>
<sect3 id="menc-feat-vcd-dvd-all-ntsc-ac3-copy">
<title>NTSC AVI mit AC3-Ton nach DVD</title>
<para>
Hat die Quelle bereits AC3-Audio und ist NTSC @ 24000/1001 fps:
<screen>mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd:tsaf:telecine \
-vf scale=720:480,harddup -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:\
vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:aspect=16/9 -ofps 24000/1001 \
-o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable></screen>
</para>
</sect3>
<sect3 id="menc-feat-vcd-dvd-all-pal-svcd">
<title>PAL SVCD</title>
<para>
<screen>mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xsvcd -vf \
scale=480:576,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
vcodec=mpeg2video:mbd=2:keyint=15:vrc_buf_size=917:vrc_minrate=600:\
vbitrate=2500:vrc_maxrate=2500:acodec=mp2:abitrate=224 -ofps 25 \
-o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable></screen>
</para>
</sect3>
<sect3 id="menc-feat-vcd-dvd-all-ntsc-svcd">
<title>NTSC SVCD</title>
<para>
<screen>mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xsvcd -vf \
scale=480:480,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
vcodec=mpeg2video:mbd=2:keyint=18:vrc_buf_size=917:vrc_minrate=600:\
vbitrate=2500:vrc_maxrate=2500:acodec=mp2:abitrate=224 -ofps 30000/1001 \
-o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable></screen>
</para>
</sect3>
<sect3 id="menc-feat-vcd-dvd-all-pal-vcd">
<title>PAL VCD</title>
<para>
<screen>mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xvcd -vf \
scale=352:288,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
vcodec=mpeg1video:keyint=15:vrc_buf_size=327:vrc_minrate=1152:vbitrate=1152:\
vrc_maxrate=1152:acodec=mp2:abitrate=224 -ofps 25 \
-o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable></screen>
</para>
</sect3>
<sect3 id="menc-feat-vcd-dvd-all-ntsc-vcd">
<title>NTSC VCD</title>
<para>
<screen>mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xvcd -vf \
scale=352:240,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
vcodec=mpeg1video:keyint=18:vrc_buf_size=327:vrc_minrate=1152:vbitrate=1152:\
vrc_maxrate=1152:acodec=mp2:abitrate=224 -ofps 30000/1001 \
-o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable></screen>
</para>
</sect3>
</sect2>
</sect1>
</chapter>