1
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>10.3. Encodieren mit der libavcodec Codecfamilie</title><link rel="stylesheet" href="default.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="MPlayer - Movie Player"><link rel="up" href="encoding-guide.html" title="Kapitel 10. Encodieren mit MEncoder"><link rel="prev" href="menc-feat-telecine.html" title="10.2. Wie mit telecine und interlacing in NTSC-DVDs umgehen"><link rel="next" href="menc-feat-xvid.html" title="10.4. Encodieren mit dem Xvid-Codec"><link rel="preface" href="howtoread.html" title="Wie diese Dokumentation gelesen werden soll"><link rel="chapter" href="intro.html" title="Kapitel 1. Einführung"><link rel="chapter" href="install.html" title="Kapitel 2. Installation"><link rel="chapter" href="usage.html" title="Kapitel 3. Gebrauch"><link rel="chapter" href="cd-dvd.html" title="Kapitel 4. CD/DVD Nutzung"><link rel="chapter" href="tv.html" title="Kapitel 5. TV"><link rel="chapter" href="radio.html" title="Kapitel 6. Radio"><link rel="chapter" href="video.html" title="Kapitel 7. Videoausgabegeräte"><link rel="chapter" href="ports.html" title="Kapitel 8. Portierungen"><link rel="chapter" href="mencoder.html" title="Kapitel 9. Allgemeiner Gebrauch von MEncoder"><link rel="chapter" href="encoding-guide.html" title="Kapitel 10. Encodieren mit MEncoder"><link rel="chapter" href="faq.html" title="Kapitel 11. Häufig gestellte Fragen"><link rel="appendix" href="bugreports.html" title="Anhang A. Wie Fehler (Bugs) berichtet werden"><link rel="appendix" href="skin.html" title="Anhang B. MPlayers Skinformat"><link rel="subsection" href="menc-feat-enc-libavcodec.html#menc-feat-enc-libavcodec-video-codecs" title="10.3.1. Videocodecs von libavcodec"><link rel="subsection" href="menc-feat-enc-libavcodec.html#menc-feat-enc-libavcodec-audio-codecs" title="10.3.2. Audiocodecs von libavcodec"><link rel="subsection" href="menc-feat-enc-libavcodec.html#menc-feat-dvd-mpeg4-lavc-encoding-options" title="10.3.3. Encodieroptionen von libavcodec"><link rel="subsection" href="menc-feat-enc-libavcodec.html#menc-feat-mpeg4-lavc-example-settings" title="10.3.4. Beispiele für Encodierungseinstellungen"><link rel="subsection" href="menc-feat-enc-libavcodec.html#custommatrices" title="10.3.5. Maßgeschneiderte inter/intra-Matrizen"><link rel="subsection" href="menc-feat-enc-libavcodec.html#menc-feat-dvd-mpeg4-example" title="10.3.6. Beispiel"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">10.3. Encodieren mit der <code class="systemitem">libavcodec</code>
2
Codecfamilie</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="menc-feat-telecine.html">Zurück</a> </td><th width="60%" align="center">Kapitel 10. Encodieren mit <span class="application">MEncoder</span></th><td width="20%" align="right"> <a accesskey="n" href="menc-feat-xvid.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="10.3. Encodieren mit der libavcodec Codecfamilie"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="menc-feat-enc-libavcodec"></a>10.3. Encodieren mit der <code class="systemitem">libavcodec</code>
3
Codecfamilie</h2></div></div></div><p>
4
<code class="systemitem">libavcodec</code>
5
stellt einfache Encodierung für eine Menge interessanter Video- und Audioformate
7
Du kannst folgende Codecs encodieren (mehr oder weniger aktuell):
8
</p><div class="sect2" title="10.3.1. Videocodecs von libavcodec"><div class="titlepage"><div><div><h3 class="title"><a name="menc-feat-enc-libavcodec-video-codecs"></a>10.3.1. Videocodecs von <code class="systemitem">libavcodec</code></h3></div></div></div><p>
9
</p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Name des Videocodecs</th><th>Beschreibung</th></tr></thead><tbody><tr><td>mjpeg</td><td>
11
</td></tr><tr><td>ljpeg</td><td>
13
</td></tr><tr><td>jpegls</td><td>
15
</td></tr><tr><td>targa</td><td>
17
</td></tr><tr><td>gif</td><td>
19
</td></tr><tr><td>png</td><td>
21
</td></tr><tr><td>bmp</td><td>
23
</td></tr><tr><td>h261</td><td>
25
</td></tr><tr><td>h263</td><td>
27
</td></tr><tr><td>h263p</td><td>
29
</td></tr><tr><td>mpeg4</td><td>
30
ISO Standard MPEG-4 (DivX, Xvid-kompatibel)
31
</td></tr><tr><td>msmpeg4</td><td>
32
Pre-Standard MPEG-4 Variante von MS, v3 (AKA DivX3)
33
</td></tr><tr><td>msmpeg4v1</td><td>
34
Pre-Standard MPEG-4 von MS, v1
35
</td></tr><tr><td>msmpeg4v2</td><td>
36
Pre-Standard MPEG-4 von MS, v2 (in alten ASF-Dateien verwendet)
37
</td></tr><tr><td>wmv1</td><td>
38
Windows Media Video, Version 1 (AKA WMV7)
39
</td></tr><tr><td>wmv2</td><td>
40
Windows Media Video, Version 2 (AKA WMV8)
41
</td></tr><tr><td>rv10</td><td>
43
</td></tr><tr><td>rv20</td><td>
45
</td></tr><tr><td>mpeg1video</td><td>
47
</td></tr><tr><td>mpeg2video</td><td>
49
</td></tr><tr><td>huffyuv</td><td>
50
Verlustfreie (lossless) Kompression
51
</td></tr><tr><td>ffvhuff</td><td>
52
FFmpeg-modifizierter huffyuv, verlustfrei
53
</td></tr><tr><td>asv1</td><td>
55
</td></tr><tr><td>asv2</td><td>
57
</td></tr><tr><td>vcr1</td><td>
59
</td></tr><tr><td>ffv1</td><td>
60
FFmpeg's verlustfreier (lossless) Videocodec
61
</td></tr><tr><td>svq1</td><td>
63
</td></tr><tr><td>flv</td><td>
64
Sorenson H.263, der in Flash Video benutzt wird
65
</td></tr><tr><td>flashsv</td><td>
67
</td></tr><tr><td>dvvideo</td><td>
69
</td></tr><tr><td>snow</td><td>
70
FFmpeg's experimenteller Wavelet-basierter Codec
71
</td></tr><tr><td>zbmv</td><td>
72
Zip Blocks Motion Video
73
</td></tr><tr><td>cljr</td><td>
74
Cirrus Logic AccuPak Codec
75
</td></tr></tbody></table></div><p>
77
Die erste Spalte enthält die Codecnamen, die nach der Konfiguration
78
<code class="literal">vcodec</code> übergeben werden müssen, wie:
79
<tt class="option">-lavcopts vcodec=msmpeg4</tt>
80
</p><div class="informalexample"><p>
81
Ein Beispiel mit MJPEG-Komprimierung:
82
</p><pre class="screen">mencoder dvd://2 -o title2.avi -ovc lavc -lavcopts vcodec=mjpeg -oac copy</pre><p>
83
</p></div></div><div class="sect2" title="10.3.2. Audiocodecs von libavcodec"><div class="titlepage"><div><div><h3 class="title"><a name="menc-feat-enc-libavcodec-audio-codecs"></a>10.3.2. Audiocodecs von <code class="systemitem">libavcodec</code></h3></div></div></div><p>
84
</p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Name des Audiocodecs</th><th>Beschreibung</th></tr></thead><tbody><tr><td>ac3</td><td>Dolby Digital (AC-3)</td></tr><tr><td>adpcm_*</td><td>Adaptive PCM-Formate - siehe begleitende Tabelle</td></tr><tr><td>flac</td><td>Free Lossless Audio Codec (FLAC)</td></tr><tr><td>g726</td><td>G.726 ADPCM</td></tr><tr><td>libamr_nb</td><td>3GPP Adaptive Multi-Rate (AMR) narrow-band</td></tr><tr><td>libamr_wb</td><td>3GPP Adaptive Multi-Rate (AMR) wide-band</td></tr><tr><td>libfaac</td><td>Advanced Audio Coding (AAC) - verwendet FAAC</td></tr><tr><td>libgsm</td><td>ETSI GSM 06.10 full rate</td></tr><tr><td>libgsm_ms</td><td>Microsoft GSM</td></tr><tr><td>libmp3lame</td><td>MPEG-1 audio layer 3 (MP3) - verwendet LAME</td></tr><tr><td>mp2</td><td>MPEG-1 Audio Layer 2</td></tr><tr><td>pcm_*</td><td>PCM-Formate - siehe begleitende Tabelle</td></tr><tr><td>roq_dpcm</td><td>Id Software RoQ DPCM</td></tr><tr><td>sonic</td><td>experimenteller verlustbehafteter FFmpeg-Codec</td></tr><tr><td>sonicls</td><td>experimenteller verlustfreier FFmpeg-Codec</td></tr><tr><td>vorbis</td><td>Vorbis</td></tr><tr><td>wma1</td><td>Windows Media Audio v1</td></tr><tr><td>wma2</td><td>Windows Media Audio v2</td></tr></tbody></table></div><p>
86
Die erste Spalte enthält die Codecnamen, die nach der Konfiguration
87
<code class="literal">acodec</code> übergeben werden müssen, wie:
88
<tt class="option">-lavcopts acodec=ac3</tt>
89
</p><div class="informalexample"><p>
90
Ein Beispiel mit AC3-Kompression:
91
</p><pre class="screen">mencoder dvd://2 -o title2.avi -oac lavc -lavcopts acodec=ac3 -ovc copy</pre><p>
93
Im Gegensatz zu den Videocodecs von <code class="systemitem">libavcodec</code>
94
machen dessen Audiocodecs keinen weisen Gebrauch von den Bits, die ihnen übergeben
95
werden, da es ihnen an einem minimalen psychoakustischen Modell fehlt (falls
96
überhaupt eins vorhanden ist), wodurch sich die meisten anderen
97
Codec-Implementierungen auszeichnen.
98
Beachte jedoch, dass all diese Audiocodecs sehr schnell sind und überall dort
99
hervorragend arbeiten, wo <span class="application">MEncoder</span> mit
100
<code class="systemitem">libavcodec</code> kompiliert wurde (was
101
meistens der Fall ist) und nicht von externen Programmbibliotheken abhängt.
102
</p><div class="sect3" title="10.3.2.1. PCM/ADPCM-Format, begleitende Tabelle"><div class="titlepage"><div><div><h4 class="title"><a name="menc-feat-enc-libavcodec-audio-codecs-pcmadpcm"></a>10.3.2.1. PCM/ADPCM-Format, begleitende Tabelle</h4></div></div></div><p>
103
</p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>PCM/ADPCM Codecname</th><th>Beschreibung</th></tr></thead><tbody><tr><td>pcm_s32le</td><td>signed 32-bit little-endian</td></tr><tr><td>pcm_s32be</td><td>signed 32-bit big-endian</td></tr><tr><td>pcm_u32le</td><td>unsigned 32-bit little-endian</td></tr><tr><td>pcm_u32be</td><td>unsigned 32-bit big-endian</td></tr><tr><td>pcm_s24le</td><td>signed 24-bit little-endian</td></tr><tr><td>pcm_s24be</td><td>signed 24-bit big-endian</td></tr><tr><td>pcm_u24le</td><td>unsigned 24-bit little-endian</td></tr><tr><td>pcm_u24be</td><td>unsigned 24-bit big-endian</td></tr><tr><td>pcm_s16le</td><td>signed 16-bit little-endian</td></tr><tr><td>pcm_s16be</td><td>signed 16-bit big-endian</td></tr><tr><td>pcm_u16le</td><td>unsigned 16-bit little-endian</td></tr><tr><td>pcm_u16be</td><td>unsigned 16-bit big-endian</td></tr><tr><td>pcm_s8</td><td>signed 8-bit</td></tr><tr><td>pcm_u8</td><td>unsigned 8-bit</td></tr><tr><td>pcm_alaw</td><td>G.711 A-LAW </td></tr><tr><td>pcm_mulaw</td><td>G.711 μ-LAW</td></tr><tr><td>pcm_s24daud</td><td>signed 24-bit D-Cinema Audioformat</td></tr><tr><td>pcm_zork</td><td>Activision Zork Nemesis</td></tr><tr><td>adpcm_ima_qt</td><td>Apple QuickTime</td></tr><tr><td>adpcm_ima_wav</td><td>Microsoft/IBM WAVE</td></tr><tr><td>adpcm_ima_dk3</td><td>Duck DK3</td></tr><tr><td>adpcm_ima_dk4</td><td>Duck DK4</td></tr><tr><td>adpcm_ima_ws</td><td>Westwood Studios</td></tr><tr><td>adpcm_ima_smjpeg</td><td>SDL Motion JPEG</td></tr><tr><td>adpcm_ms</td><td>Microsoft</td></tr><tr><td>adpcm_4xm</td><td>4X Technologies</td></tr><tr><td>adpcm_xa</td><td>Phillips Yellow Book CD-ROM eXtended Architecture</td></tr><tr><td>adpcm_ea</td><td>Electronic Arts</td></tr><tr><td>adpcm_ct</td><td>Creative 16->4-bit</td></tr><tr><td>adpcm_swf</td><td>Adobe Shockwave Flash</td></tr><tr><td>adpcm_yamaha</td><td>Yamaha</td></tr><tr><td>adpcm_sbpro_4</td><td>Creative VOC SoundBlaster Pro 8->4-bit</td></tr><tr><td>adpcm_sbpro_3</td><td>Creative VOC SoundBlaster Pro 8->2.6-bit</td></tr><tr><td>adpcm_sbpro_2</td><td>Creative VOC SoundBlaster Pro 8->2-bit</td></tr><tr><td>adpcm_thp</td><td>Nintendo GameCube FMV THP</td></tr><tr><td>adpcm_adx</td><td>Sega/CRI ADX</td></tr></tbody></table></div><p>
104
</p></div></div><div class="sect2" title="10.3.3. Encodieroptionen von libavcodec"><div class="titlepage"><div><div><h3 class="title"><a name="menc-feat-dvd-mpeg4-lavc-encoding-options"></a>10.3.3. Encodieroptionen von libavcodec</h3></div></div></div><p>
105
Idealerweise möchtest du eventuell in der Lage sein, dem Encoder einfach zu sagen,
106
er soll in den "hochqualitativen" Modus wechseln und weiter machen.
107
Das wäre vermutlich nett, aber unglücklicherweise schwer zu implementieren, da
108
verschiedene Encodieroptionen unterschiedliche Qualitätsresultate hervorbringen,
109
abhängig vom Quellmaterial.
110
Das liegt daran, dass die Komprimierung von den visuellen Eigenschaften des fraglichen Videos abhängt.
111
Zum Beispiel haben Anime und Live-Action sehr unterschiedliche Eigenschaften und
112
benötigen aus diesm Grund verschiedene Optionen, um optimale Encodierung zu erreichen.
113
Die gute Neuigkeit ist, dass einige Optionen wie <tt class="option">mbd=2</tt>,
114
<tt class="option">trell</tt> und <tt class="option">v4mv</tt> nie ausgelassen werden sollten.
115
Siehe unten nach der detaillierten Beschreibung allgemeiner Encodieroptionen.
116
</p><div class="itemizedlist" title="Anzupassende Optionen:"><p class="title"><b>Anzupassende Optionen:</b></p><ul class="itemizedlist" type="disc"><li class="listitem"><p>
117
<span class="bold"><strong>vmax_b_frames</strong></span>: 1 oder 2 ist gut, abhängig vom Film.
118
Beachte, dass du, falls deine Encodierung von DivX5 decodierbar sein muss, den
119
Support für "closed GOP" aktivieren musst, indem du die
120
<code class="systemitem">libavcodec</code>-Option <tt class="option">cgop</tt>
121
verwendest, du musst jedoch Szenenerkennung deaktivieren, was wiederum keine gute
122
Idee ist, da es die Ecodierungseffizienz etwas angreift.
123
</p></li><li class="listitem"><p>
124
<span class="bold"><strong>vb_strategy=1</strong></span>: hilft in Szenen mit viel
125
Bewegung (high-motion).
126
Bei manchen Videos wird vmax_b_frames der Qualität schaden, vmax_b_frames=2
127
zusammen mit vb_strategy=1 hilft jedoch.
128
</p></li><li class="listitem"><p>
129
<span class="bold"><strong>dia</strong></span>: Bewegungssuchbereich. Größer ist besser
131
Negative Werte sind ein komplett anderer Maßstab.
132
Gute Werte sind -1 für ein schnelle oder 2-4 für langsame Encodierung.
133
</p></li><li class="listitem"><p>
134
<span class="bold"><strong>predia</strong></span>: Bewegungssuche Vorabdurchlauf (pre-pass).
135
Nicht so wichtig wie dia. Gute Werte sind 1 (Standard) bis 4. Erfordert preme=2, um
136
wirklich was zu nützen.
137
</p></li><li class="listitem"><p>
138
<span class="bold"><strong>cmp, subcmp, precmp</strong></span>: Vergleichsfunktion zur
139
Bewegungseinschätzung.
140
Experimentiere mit Werten von 0 (Standard), 2 (hadamard), 3 (dct) und
142
0 ist am schnellsten und ausreichend für precmp.
143
Für cmp und subcmp ist 2 gut bei Anime, und 3 ist gut bei Live-Action.
144
6 kann leicht besser sein oder auch nicht, ist aber langsam.
145
</p></li><li class="listitem"><p>
146
<span class="bold"><strong>last_pred</strong></span>: Anzahl der Bewegungsvorhersagen, die
147
vom vorherigen Frame genommen werden sollen.
148
1-3 oder so hilft bei geringer Geschwindigkeitseinbuße.
149
Höhere Werte sind langsam bei keinerlei Zusatzgewinn.
150
</p></li><li class="listitem"><p>
151
<span class="bold"><strong>cbp, mv0</strong></span>: Kontrolliert die Auswahl von Macroblöcken.
152
Kleine Geschwindigkeitseinbußen bei kleinem Qualitätsgewinn.
153
</p></li><li class="listitem"><p>
154
<span class="bold"><strong>qprd</strong></span>: adaptive Quantisierung basierend auf der
155
Komplexität des Macroblocks.
156
Kann hilfreich sein oder schaden, abhängig vom Video und anderen Optionen.
157
Dies kann Artefakte verursachen, es sei denn, du setzt vqmax auf einen halbwegs
158
kleinen Wert (6 ist gut, vielleicht so langsam wie 4); vqmin=1 sollte ebenfalls
160
</p></li><li class="listitem"><p>
161
<span class="bold"><strong>qns</strong></span>: sehr langsam, speziell wenn kombiniert
163
Diese Option veranlasst den Encoder, durch Kompressionsartefakte entstandenes
164
Rauschen zu minimieren anstatt das encodierte Video strikt der Quelle anzupassen.
165
Verwende dies nicht, es sei denn du, hast bereits alles andere so weit wie möglich
166
optimiert und die Resultate sind immer noch nicht gut genug.
167
</p></li><li class="listitem"><p>
168
<span class="bold"><strong>vqcomp</strong></span>: Frequenzkontrolle optimieren.
169
Welche Werte gut sind, hängt vom Film ab.
170
Du kannst dies sicher so lassen wie es ist, wenn du willst.
171
Wird vqcomp verringert, werden mehr Bits auf Szenen mit geringer Komlexität
172
gelegt, wird es erhöht, legt es diese Bits auf Szenen mit hoher Komlexität
173
(Standard: 0.5, Bereich: 0-1. empfohlener Bereich: 0.5-0.7).
174
</p></li><li class="listitem"><p>
175
<span class="bold"><strong>vlelim, vcelim</strong></span>: Setzt die Schwelle für die
176
Eliminierung einzelner Koeffizienten bei Helligkeits- und Farbanteilen.
177
Sie werden in allen MPEG-ähnlichen Algorithmen getrennt encodiert.
178
Die Idee hinter diesen Optionen ist, einige gute Heuristiken zu verwenden,
179
um zu bestimmen, wenn ein Wechsel innerhalb eines Blocks kleiner als der
180
der von dir festgelegte Schwellenwert ist und in solch einem Fall den
181
Block einfach so zu encodieren als fände "kein Wechsel" statt.
182
Das spart Bits und beschleunigt womöglich die Encodierunng. vlelim=-4 und vcelim=9
183
scheinen gut für Live-Filme zu sein, helfen aber scheinbar nicht bei Anime;
184
beim Encodieren einer Animation solltest du sie womöglich unverändert lassen.
185
</p></li><li class="listitem"><p>
186
<span class="bold"><strong>qpel</strong></span>: Bewegungsabschätzung auf ein viertel
188
MPEG-4 verwendet als Voreinstellung eine Halbpixel-Genauigkeit für die Bewegungssuche,
189
deswegen hat diese Option einen Overhead, da mehr Informationen in der
190
encodierte Datei untergebracht werden.
191
Der Kompressionsgewinn/-verlust hängt vom Film ab, ist aber in der Regel nicht
192
sonderlich effektiv bei Anime.
193
qpel zieht immer eine signifikante Erhöhung der CPU-Decodierzeit nach
194
sich (+25% in der Praxis).
195
</p></li><li class="listitem"><p>
196
<span class="bold"><strong>psnr</strong></span>: wirkt sich eigentlich nicht auf
197
das Encodieren aus, schreibt jedoch eine Log-Datei mit Typ/Größe/Qualität
198
jedes Frames und gibt am Ende die Summe des PSNR Signal-zu-Rauschabstands
199
(Peak Signal to Noise Ratio) aus.
200
</p></li></ul></div><div class="itemizedlist" title="Optionen, mit denen besser nicht herumgespielt werden sollte:"><p class="title"><b>Optionen, mit denen besser nicht herumgespielt werden sollte:</b></p><ul class="itemizedlist" type="disc"><li class="listitem"><p>
201
<span class="bold"><strong>vme</strong></span>: Der Standardwert ist der beste.
202
</p></li><li class="listitem"><p>
203
<span class="bold"><strong>lumi_mask, dark_mask</strong></span>: Psychovisuell adaptive
205
Du solltest nicht im Traum daran denken, mit diesen Optionen herumzuspielen,
206
wenn dir Qualität wichtig ist.
207
Vernünftige Werte mögen in deinem Fall effektiv sein, aber sei gewarnt,
208
dies ist sehr subjektiv.
209
</p></li><li class="listitem"><p>
210
<span class="bold"><strong>scplx_mask</strong></span>: Versucht, Blockartefakte
211
zu verhindern, Postprocessing ist aber besser.
212
</p></li></ul></div></div><div class="sect2" title="10.3.4. Beispiele für Encodierungseinstellungen"><div class="titlepage"><div><div><h3 class="title"><a name="menc-feat-mpeg4-lavc-example-settings"></a>10.3.4. Beispiele für Encodierungseinstellungen</h3></div></div></div><p>
213
Die folgenden Einstellungen sind Beispiele verschiedener Kombinationen
214
von Encodierungsoptionen, die den Kompromiss Geschwindigkeit gegenüber
215
Qualität bei gleicher Zielbitrate beeinflussen.
217
Alle Encodierungseinstellungen wurden auf einem Beispielvideo
218
mit 720x448 @30000/1001 fps getestet, die Zielbitrate war 900kbps und
219
der Rechner war ein AMD-64 3400+ mit 2400 MHz im 64bit-Modus.
220
Jede Encodiereinstellung zeichnet sich aus durch die gemessene
221
Encodiergeschwindigkeit (in Frames pro Sekunde) und den PSNR-Verlust
222
(in dB) im Vergleich zu Einstellungen für "sehr hohe Qualität".
223
Bitte habe Verständnis, dass du abhängig von deiner Quelldatei,
224
deinem Rechnertyp und Entwicklungsfortschritten sehr unterschiedliche
225
Resultate erzielen wirst.
227
</p><div class="informaltable"><table border="1"><colgroup><col><col><col><col></colgroup><thead><tr><th>Beschreibung</th><th>Encodieroptionen</th><th>Geschwindigkeit (in fps)</th><th>Relativer PSNR-Verlust (in dB)</th></tr></thead><tbody><tr><td>Sehr hohe Qualität</td><td><tt class="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</tt></td><td>6fps</td><td>0dB</td></tr><tr><td>Hohe Qualität</td><td><tt class="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</tt></td><td>15fps</td><td>-0.5dB</td></tr><tr><td>Schnell</td><td><tt class="option">vcodec=mpeg4:mbd=2:trell:v4mv:turbo</tt></td><td>42fps</td><td>-0.74dB</td></tr><tr><td>Echtzeit</td><td><tt class="option">vcodec=mpeg4:mbd=2:turbo</tt></td><td>54fps</td><td>-1.21dB</td></tr></tbody></table></div><p>
228
</p></div><div class="sect2" title="10.3.5. Maßgeschneiderte inter/intra-Matrizen"><div class="titlepage"><div><div><h3 class="title"><a name="custommatrices"></a>10.3.5. Maßgeschneiderte inter/intra-Matrizen</h3></div></div></div><p>
229
Mit diesem Feature von <code class="systemitem">libavcodec</code>
230
bist du in der Lage, eigene inter- (I-Frames/Keyframes) und intra-Matrizen
231
(P-Frames/predicted Frames) zu setzen. Es wird von vielen Codecs unterstützt:
232
<code class="systemitem">mpeg1video</code> und <code class="systemitem">mpeg2video</code>
233
sollen damit funktionieren.
235
Eine typische Anwendung dieses Features ist, die von den
236
<a class="ulink" href="http://www.kvcd.net/" target="_top">KVCD</a>-Specifikationen
237
bevorzugten Matrizen zu setzen.
239
Die <span class="bold"><strong>KVCD "Notch" Quantisierungsmatrix:</strong></span>
242
</p><pre class="screen">8 9 12 22 26 27 29 34
243
9 10 14 26 27 29 34 37
244
12 14 18 27 29 34 37 38
245
22 26 27 31 36 37 38 40
246
26 27 29 36 39 38 40 48
247
27 29 34 37 38 40 48 58
248
29 34 37 38 40 48 58 69
249
34 37 38 40 48 58 69 79</pre><p>
252
</p><pre class="screen">16 18 20 22 24 26 28 30
253
18 20 22 24 26 28 30 32
254
20 22 24 26 28 30 32 34
255
22 24 26 30 32 32 34 36
256
24 26 28 32 34 34 36 38
257
26 28 30 32 34 36 38 40
258
28 30 32 34 36 38 42 42
259
30 32 34 36 38 40 42 44</pre><p>
262
</p><pre class="screen">$ mencoder <em class="replaceable"><code>input.avi</code></em> -o <em class="replaceable"><code>output.avi</code></em> -oac copy -ovc lavc -lavcopts inter_matrix=...:intra_matrix=... </pre><p>
264
</p><pre class="screen">$ mencoder <em class="replaceable"><code>input.avi</code></em> -ovc lavc -lavcopts
265
vcodec=mpeg2video:intra_matrix=8,9,12,22,26,27,29,34,9,10,14,26,27,29,34,37,
266
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,
267
29,34,37,38,40,48,58,29,34,37,38,40,48,58,69,34,37,38,40,48,58,69,79
268
:inter_matrix=16,18,20,22,24,26,28,30,18,20,22,24,26,28,30,32,20,22,24,26,
269
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,
270
36,38,40,28,30,32,34,36,38,42,42,30,32,34,36,38,40,42,44 -oac copy -o svcd.mpg</pre><p>
271
</p></div><div class="sect2" title="10.3.6. Beispiel"><div class="titlepage"><div><div><h3 class="title"><a name="menc-feat-dvd-mpeg4-example"></a>10.3.6. Beispiel</h3></div></div></div><p>
272
Jetzt hast du gerade eben deine brandneue Kopie von Harry Potter und die
273
Kammer des Schreckens gekauft (natürlich die Breitbildedition), und du
274
willst diese DVD so rippen, dass du sie deinem Home Theatre PC hinzufügen
275
kannst. Dies ist eine Region-1-DVD, also ist sie NTSC. Das unten stehende
276
Beispiel wird auch auf PAL zutreffen, nur dass du
277
<tt class="option">-ofps 24000/1001</tt> weglässt (weil die Ausgabeframerate die
278
gleiche ist wie die Eingabeframerate), und logischerweise werden die
279
Ausschnittsabmessungen anders sein.
281
Nach dem Start von <tt class="option">mplayer dvd://1</tt>, verfolgen wir den
282
detailliert in der Sektion <a class="link" href="menc-feat-telecine.html" title="10.2. Wie mit telecine und interlacing in NTSC-DVDs umgehen">Wie mit telecine
283
und interlacing in NTSC-DVDs umgehen</a> beschriebenen Prozess und
284
entdecken, dass es progressive Video mit 24000/1001 fps ist, was bedeutet, dass
285
wir keinen inverse telecine-Filter wie <tt class="option">pullup</tt> oder
286
<tt class="option">filmdint</tt> anwenden müssen.
287
</p><p><a name="menc-feat-dvd-mpeg4-example-crop"></a>
288
Als Nächstes wollen wir das passende Ausschnittsrechteck bestimmen, also
289
verwenden wir den cropdetect-Filter:
291
</p><pre class="screen">mplayer dvd://1 -vf cropdetect</pre><p>
293
Stelle sicher, dass du einen voll gefüllten Frame anstrebst (wie zum
294
Beispiel eine helle Szene, nach den Eröffnungs-Credits und Filmlogos),
295
und dass du diese Ausgabe in <span class="application">MPlayer</span>s Konsole siehst:
297
</p><pre class="screen">crop area: X: 0..719 Y: 57..419 (-vf crop=720:362:0:58)</pre><p>
299
Wir spielen den Film dann mit diesem Filter ab, um seine Korrektheit zu testen:
301
</p><pre class="screen">mplayer dvd://1 -vf crop=720:362:0:58</pre><p>
303
Und wir sehen, dass er einfach perfekt aussieht. Als Nächstes vergewissern wir
304
uns, dass Breite und Höhe ein Vielfaches von 16 sind. Die Breite ist gut,
305
aber die Höhe ist es nicht. Da wir in der 7-ten Klasse in Mathe nicht gefehlt
306
haben, wissen wir, dass das am nähesten liegende Vielfache von 16 kleiner
307
als 362 der Wert 352 ist (Taschenrechner ist erlaubt).
309
Wir könnten einfach <tt class="option">crop=720:352:0:58</tt> verwenden, aber es wäre
310
nett, ein bisschen von oben und ein bisschen von unten wegzunehmen, sodass
311
wir zentriert bleiben. Wir haben die Höhe um 10 Pixel schrumpfen lassen, aber
312
wir wollen das y-Offset nicht um 5 Pixel erhöhen, da dies eine ungerade Zahl
313
ist und die Qualität nachteilig beeinflussen würde. Statt dessen werden wir
314
das y-Offset um 4 Pixel erhöhen:
316
</p><pre class="screen">mplayer dvd://1 -vf crop=720:352:0:62</pre><p>
318
Ein anderer Grund, Pixel von beidem - oben und unten - abzuschnipseln ist,
319
dass wir sicher gehen wollen, jegliches halbschwarze Pixel eliminiert zu
320
haben, falls welche existieren. Beachte, falls das Video telecined
321
ist, stelle sicher, dass der <tt class="option">pullup</tt>-Filter (oder für
322
welchen umgekehrten telecine-Filter auch immer du dich entschieden hast)
323
in der Filterkette auftaucht, bevor du zuschneidest. Ist es interlaced,
324
deinterlace es vor dem Zuschneiden.
325
(Wenn du dich entscheidest, interlaced Video beizubehalten, dann vergewissere dich, dass
326
das vertikale crop-Offset ein Vielfaches von 4 ist.)
328
Wenn du wirklich besorgt um den Verlust dieser 10 Pixel bist, ziehst du
329
statt dessen etwa das Herunterskalieren der Abmessungen auf das am nächsten
330
liegende Vielfache von 16 vor.
331
Die Filterkette würde dann etwa so aussehen:
333
</p><pre class="screen">-vf crop=720:362:0:58,scale=720:352</pre><p>
335
Das Video auf diese Art herunter zu skalieren wird bedeuten, dass eine
336
kleine Menge Details verloren geht, obwohl es vermutlich nicht wahrnehmbar
337
sein wird. Hoch zu skalieren führt zu niedrigerer Qualität (es sei denn,
338
du erhöhst die Bitrate). Ausschneiden sondert sämtliche dieser Pixel
339
aus. Es ist ein Kompromiss, den du unter allen Umständen
340
in Betracht ziehen solltest. Zum Beispiel, wenn das DVD-Video für das Fernsehen
341
hergestellt wurde, solltest du vertikales Skalieren vermeiden, da das
342
Zeilensampling mit der Art und Weise korrespondiert, für die der Inhalt
343
ursprünglich aufgenommen wurde.
345
Bei der Überprüfung sehen wir, dass unser Film ordentlich Action enthält
346
und sehr viele Details, also wählen wir 2400Kbit für unsere Bitrate.
348
Wir sind nun bereit, die 2-pass Encodierung durchzuführen. Erster Durchlauf:
350
</p><pre class="screen">mencoder dvd://1 -ofps 24000/1001 -oac copy -vf pullup,softskip,crop=720:352:0:62,hqdn3d=2:1:2 -ovc lavc \
351
-lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:mbcmp=3:autoaspect:vpass=1 \
352
-o Harry_Potter_2.avi</pre><p>
354
Und der zweite Durchlauf ist derselbe, außer dass wir <tt class="option">vpass=2</tt>
357
</p><pre class="screen">mencoder dvd://1 -ofps 24000/1001 -oac copy -vf pullup,softskip,crop=720:352:0:62,hqdn3d=2:1:2 -ovc lavc \
358
-lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:mbcmp=3:autoaspect:vpass=2 \
359
-o Harry_Potter_2.avi</pre><p>
361
Die Optionen <tt class="option">v4mv:mbd=2:trell</tt> werden die Qualität
362
außerordentlich erhöhen, auf Kosten der Encodierdauer. Es gibt
363
einen kleinen Grund, diese Optionen auszulassen, wenn das Primärziel
364
die Qualität ist. Die Optionen
365
<tt class="option">cmp=3:subcmp=3:mbcmp=3</tt> wählen eine Vergleichsfunktion,
366
die eine höhere Qualität liefert als die Standardeinstellungen.
367
Du darfst mit diesem Parameter rumexperimentieren (ziehe die Manpage
368
zu möglichen Werten zu Rate) da verschiedene Funktionen abhängig vom
369
Quellmaterial einen starken Einfluss auf die Qualität haben. Wenn du zum Beispiel
370
meinst, dass <code class="systemitem">libavcodec</code> zu
371
viele Blockartefakte produziert, könntest du ja das experimentelle
372
NSSE als Vergleichsfunktion via <tt class="option">*cmp=10</tt> wählen.
374
Für diesen Film wird das resultierende AVI 138 Minuten lang und nahezu
375
3GB groß sein. Und weil du erzählt hast, dass eine große Datei nichts
376
ausmacht, ist dies eine perfekt akzeptierbare Größe. Wolltest du sie aber
377
kleiner haben, könntest du eine niedrigere Bitrate hernehmen. Erhöhte
378
Bitraten haben verminderte Rückgaben, während wir also deutlich eine
379
Verbesserung von 1800Kbit nach 2000Kbit sehen, ist es oberhalb 2000Kbit
380
nicht so auffällig. Fühl dich frei solange herum zu experimentieren bis
383
Weil wir das Quellvideo durch einen Denoise-Filter geschickt haben,
384
könntest du einige davon während des Playbacks wieder hinzufügen wollen.
385
Dies zusammen mit dem Nachbearbeitungsfilter <tt class="option">spp</tt>
386
verbessert die Wahrnehmung der Qualität drastisch und hilft dabei,
387
blockhafte Artefakte aus dem Video zu eliminieren.
388
Mit <span class="application">MPlayer</span>s Option <tt class="option">autoq</tt>
389
kannst du den Nachbearbeitungsaufwand des spp-Filters abhängig von der
390
verfügbaren CPU variieren. An dieser Stelle kannst du auch Gamma- und/oder
391
Farbkorrektur zur besten Anpassung an dein Display verwenden, wenn du willst.
394
</p><pre class="screen">mplayer Harry_Potter_2.avi -vf spp,noise=9ah:5ah,eq2=1.2 -autoq 3</pre><p>
395
</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="menc-feat-telecine.html">Zurück</a> </td><td width="20%" align="center"><a accesskey="u" href="encoding-guide.html">Nach oben</a></td><td width="40%" align="right"> <a accesskey="n" href="menc-feat-xvid.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">10.2. Wie mit telecine und interlacing in NTSC-DVDs umgehen </td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top"> 10.4. Encodieren mit dem <code class="systemitem">Xvid</code>-Codec</td></tr></table></div></body></html>