1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Encodieren - MEncoder - The Movie Encoder for Linux</TITLE>
<LINK REL="stylesheet" TYPE="text/css" HREF="../default.css">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
<H2><A NAME="encoding">7. Encodieren mit MEncoder</A></H2>
<P>Eine komplette Auflistung aller MEncoder-Optionen und aller Beispiele
findest du in der man-page. Einige sinnvolle Beispiele und detaillierte
Anleitungen, wie die diversen Parameter benutzt werden, findest du in den
<A HREF="../tech/encoding-tips.txt">Encodierungstipps (englisch)</A>, die
von mehreren Emails auf der
<A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-users">mplayer-users</A>
zusammengetragen wurden. Durchsuche auch das
<A HREF="http://mplayerhq.hu/pipermail/mplayer-users/">Archiv</A>. Dort findest
du eine Unmenge an Diskussionen über alle möglichen Themen rund um
die Encodierung mit MEncoder.</P>
<H3><A NAME="2pass">7.1 MPEG4-Encodierung ("DivX") in zwei oder drei
Durchläufen </A></H3>
<P><U><B>2-pass-Encodierung:</B></U> Der Name kommt in der Tat daher, dass
diese Methode die Datei <I>zweimal</I> encodiert. Das erste Encodieren (1.
<P>Pass</I> [=Durchlauf]) erzeugt einige temporäre Dateien (*.log) mit
einer Dateigröße von nur wenigen MB. Lösche sie nicht (das AVI
kannst du aber löschen). Im zweiten Pass wird die Ausgabedatei unter
Verwendung der Bitraten-Daten der temporären Datei erzeugt. Die
endgültige Datei wird deswegen eine weitaus bessere Bildqualität
besitzen. Wenn dies das erst Mal ist, dass du davon hörst, solltest du
einige Guides im Internet lesen.</P>
<P>Dieses Beispiel zeigt dir, wie du mit 2 Passes eine DVD in ein MPEG4-AVI
("DivX") encodierst. Nur 2 Befehle sind erforderlich:<BR>
<CODE> rm frameno.avi</CODE> - Lösche diese Datei,
welche von einer früheren 3-Pass-Encodierung kommen kann (Sie führt zu
einem Konflikt mit der momentanen Encodierung).<BR>
<CODE> mencoder -dvd 2 -lavcopts
vcodec=mpeg4:vpass=1 -oac copy -o film.avi</CODE><BR>
<CODE> mencoder -dvd 2 -lavcopts
vcodec=mpeg4:vpass=2 -oac copy -o film.avi</CODE></P>
<P><U><B>3-Pass-Encodierung:</B></U> Dies ist eine Erweiterung der
2-Pass-Encodierung, in der die Encodierung von Audio in einem separaten
Durchlauf erledigt wird. Diese Methode erlaubt es MEncoder,
Vorschläge für die Videobitrate zu machen, sodass das Ergebnis auf
eine CD passt. Auch wird der Ton im Unterschied zum 2-Pass nur einmal
encodiert. Das Schema: </P>
<OL>
<LI>Lösche die alte Datei:
<P>CODE>rm frameno.avi</CODE></P></LI>
<LI>Erster Durchlauf:
<P><CODE>mencoder <file/DVD> -ovc frameno -oac mp3lame -lameopts
vbr=3 -o frameno.avi</CODE></P>
<P>Hierbei wird ein AVI erstellt, das <B>nur</B> die gewählte
Audiospur enthält. Vergiss nicht, die <CODE>-lameopts</CODE> deinen
Wünschen anzupassen. Wenn du einen langen Film encodierst, so gibt
dir MEncoder am Schluss die empfohlenen Videobitraten aus, damit
ein resultierender Film auf eine 650MB-, eine 700MB- oder eine 800MB-CD
passt.</P></LI>
<LI>Zweiter Durchgang:
<P><CODE>mencoder <file/DVD> -oac copy
-ovc lavc -lavcopts vcodec=mpeg4:vpass=1:vbitrate=<bitrate>
</CODE></P>
<P>Genauso wie der erste Durchgang vom DivX4-Beispiel oben. Gib hier die
nach dem ersten Durchlauf von MEncoderempfohlene oder eine andere
von dir gewählte Videobitrate an.</LI></P>
<LI>Dritter Durchgang:
<P><CODE>mencoder <file/DVD> -oac copy
-ovc lavc -lavcopts vcodec=mpeg4:vpass=2:vbitrate=<bitrate>
</CODE></P>
<P>Genauso wie der zweite Durchgang vom DivX4-Beispiel oben. Gib hier die
gleiche Bitrate wie im ersten Durchgang an, es sei denn, du weißt
genau, was du tust. In diesem Durchgang wird die im
ersten Durchgang encodierte Audiospur in die endgültige Datei
eingefügt. Nun ist alles fertig!</LI></P>
</OL>
<H4>Beispiel einer 3-Pass-Encodierung:</H4>
<CODE> rm frameno.avi</CODE> - Lösche diese Datei,
welche von einer früheren 3-Pass-Encodierung kommen kann (Sie führt
zu einem Konflikt mit der momentanen Encodierung).<BR>
<CODE> mencoder -dvd 2 -ovc frameno
-o frameno.avi -oac mp3lame -lameopts vbr=3<BR>
mencoder -dvd 2 -ovc lavc
-lavcopts vcodec=mpeg4:vpass=1 -oac copy -o movie.avi<BR>
mencoder -dvd 2 -ovc lavc
-lavcopts vcodec=mpeg4:vpass=2 -oac copy -o movie.avi</CODE></P>
<H2><A NAME="mpeg">7.2 In das MPEG-Format encodieren</A></H2>
<P>MEncoder kann MPEG-Dateien (MPEG-PS) erstellen. Das ist wahrscheinlich
nur in Kombination mit dem <I>mpeg1video</I>-Codec der libavcodec sinnvoll,
da alle Player (bis auf MPlayer) MPEG1-Video und MPEG1 Layer 2 (MP2)-Audio
in MPEG-Dateien erwarten.</P>
<P>Dieses Feature ist momentan nicht wirklich nützlich, mal davon
abgesehen, dass es wahrscheinlich noch einige Fehler enthält. Schlimmer
ist aber, dass MEncoder momentan kein MPEG1 Layer 2 (MP2)-Audio erzeugen
kann, das alle anderen Player in einer MPEG-Datei erwarten.</P>
<P>Das Ausgabeformat von MEncoder kann mit <CODE>-of mpeg</CODE> auf MPEG
geändert werden.</P>
<P>Beispiel:<BR>
<CODE>mencoder -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video
-oac copy <weitere Optionen> media.avi -o ausgabe.mpg</CODE></P>
<H3><A NAME="rescaling">7.3 Skalierung von Filmen</A></H3>
<P>Oftmals ist die Änderung der Bildgröße erforderlich. Die
Gründe dafür können verschieden sein: Dateigröße
verringern, Netzwerkbandbreite nicht überlasten etc. Viele Leute skalieren
das Bild auch, wenn sie von DVD zu SVCD oder DivX-AVI konvertieren. <B>Das ist
allgemein schlecht.</B> Wenn du das vermeiden willst, dann lies den Abschnitt
über das <A HREF="#aspect">Beibehalten des
Höhen-/Breitenverhältnisses</A>.</P>
<P>Der Skalierungsprozess erfolgt durch den <I>'scale</I>-Videofilter:
<CODE>-vf scale=breite:hoehe</CODE>. Die Qualität kann durch die Option
<CODE>-sws</CODE> angegeben werden. Wenn nichts angegeben ist, verwendet
MEncoder 0: schnelle bilienare Filterung ('fast bilinear').</P>
<H4>VERWENDUNG</H4>
<CODE> mencoder beispiel-svcd.mpg -ovc lavc -lavcopts
vcodec=mpeg4 -vf scale=640:480 -sws 2 -oac copy -o ausgabe.avi</CODE></P>
<H3><A NAME="copying">7.4 Stream-Kopiermodus</A></H3>
<P>MEncoder kann Input-Streams auf zwei Arten bearbeiten:
<B>encodieren</B> oder <B>kopieren (copy)</B>. Diese Sektion erklärt die
<B>Stream-Kopie</B>.</P>
<UL>
<LI><B>Videostreams</B> (Option <CODE>-ovc copy</CODE>): Es können nette
Sachen gemacht werden :)<BR> Wie das kopieren (nicht konvertieren) von FLI-
oder VIVO- oder MPEG1-Video in eine AVI-Datei. Natürlich ist nur
MPlayer in der Lage, solche Dateien abspielen :) Und vermutlich ist
das auch absolut nicht praxisrelevant. Das Kopieren von Videostream
kann nützlicher sein, wenn man zum Beispiel nur den Audiostream
encodieren will (z.B.: unkomprimiertes PCM zu MP3).</LI>
<LI><B>Audiostreams</B> (Option <CODE>-oac copy</CODE>): geht genauso.</LI>
Es ist möglich, eine externe Audiodatei (MP3, AC3, Vorbis) zu nehmen,
und diese dem Ausgabestream hinzuzufügen. Benutze dazu die Option
<CODE>-audiofile <dateiname></CODE>.</LI>
</UL>
<H3><A NAME="fixing">7.5 Reparieren von AVIs mit defektem Index oder
schlechtem Interleaving</A></H3>
<P>Trivial. Wir kopieren einfach die Video- und Audiostreams, und
MEncoder erzeugt den Index. Natürlich kann das keine Fehler in den
Video- und/oder Audiostreams beheben. Es kann auch Dateien mit kaputten
Interleaving reparieren, sodass die Option <CODE>-ni</CODE> für diese
nicht mehr gebraucht wird.</P>
<P>Befehl: <CODE>mencoder -idx eingabe.avi -ovc copy -oac copy -o
ausgabe.avi</CODE></P>
<H3><A NAME="appending">7.5.1 Aneinanderhängen mehrerer AVI-Dateien</A>
</H3>
<P>Ein Nebeneffekt des oben erwähnten Reparierens ist, dass MEncoder
damit auch zwei oder mehrere aneinandergehängte AVI-Dateien reparieren
kann:</P>
<P>Kommando: <CODE>cat 1.avi 2.avi | mencoder -noidx -ovc copy -oac copy -o
ausgabe.avi -</CODE></P>
<P><B>Anmerkung:</B> Hier wird angenommen, dass <CODE>1.avi</CODE> und
<CODE>2.avi</CODE> den gleichen Codec verwenden, die gleiche Auflöung und
Streamrate besitzen etc., und wenigstens 1.avi darf nicht defekt sein.
Eventuell musst du, wie <A HREF="#fixing">oben</A> beschrieben, die
Quelldateien erst reparieren.</P>
<H3><A NAME="libavcodec">7.6 Encodierung mit der
<I>libavcodec</I>-Codec-Familie</A></H4>
<P><A HREF="codecs.html#libavcodec">libavcodec</A> bietet eine einfache
Encodierung für viele interessante Video-und Audio-formate (momentan
werden deren Audio-Codecs nicht unterstützt). Du kannst zu folgenden
Codecs encodieren:</P>
<UL>
<LI>mjpeg - Motion JPEG</LI>
<LI>h263 - H263</LI>
<LI>h263p - H263 Plus</LI>
<LI>mpeg4 - ISO-Standard-MPEG4 (kompatibel zu DivX5, XviD)</LI>
<LI>msmpeg4 - pre-Standard-MPEG4-Variante von MS, v3 (aka DivX3)</LI>
<LI>msmpeg4v2 - pre-Standard-MPEG4-Variante von MS, v2 (wird in alten
ASF-Dateien benutzt)</LI>
<LI>rv10 - ein alter RealVideo-Codec</LI>
<LI>mpeg1video - MPEG1-Video :)</LI>
<LI>huffyuv - verlustfreie Kompression</LI>
</UL>
<P>Die erste Spalte enthält den Codec-Namen, den du nach dem
<CODE>vcodec</CODE>-Stichwort übergibst, wie z.B.:
<CODE>-lavcopts vcodec=msmpeg4</CODE></P>
<P>Ein Beispiel mit MJPEG-Compression:<BR>
<CODE> mencoder -dvd 2 -o titel2.avi -ovc lavc -lavcopts
vcodec=mjpeg -oac copy</CODE></P>
<H3><A NAME="image_files">7.7 Encodierung von mehreren Einzelbildern
(JPEGs, PNGs oder TGAs)</A></H3>
<P>MEncoder kann aus mehreren JPEG-, PNG- oder TGA-Einzelbildern
einen Film erstellen. Durch einfaches Kopieren der Bilder kann er MJPEG-
(Motion JPEG), MPNG- (Motion PNG) oder MTGA-Filme (Motion TGA) erzeugen.</P>
<P>So läuft dieser Prozess ab:</P>
<OL>
<LI>MEncoder <I>decodiert</I> das/die Eingangsbild(er) mit
<CODE>libjpeg</CODE> (wenn PNGs decodiert werden, wird die <B>libpng</B>
benutzt).</LI>
<LI>MEncoder führt die decodierten Bilder danach dem
gewählten Videokompressor zu (DivX4, Xvid, ffmpeg msmpeg4, etc...).
</LI>
</OL>
<H4>Beispiele</H4>
<P>Die Erklärung der <CODE>-mf</CODE>-Option kann in der Manpage gefunden
werden.</P>
<P><I>Erstellung einer DivX4-Datei aus allen JPEG-Dateien im aktuellen
Verzeichnis:</I><BR>
<CODE>mencoder -mf on:w=800:h=600:fps=25 -ovc divx4
-o ausgabe.avi \*.jpg</CODE></P>
<P><I>Erstellung einer DivX4-Datei aus einigen JPEG-Dateien im aktuellen
Verzeichnis:</I><BR>
<CODE>mencoder -mf on:w=800:h=600:fps=25
-ovc divx4 -o ausgabe.avi frame001.jpg,frame002.jpg</CODE></P>
<P><I>Erstellung einer Motion JPEG-Datei (MJPEG) aus allen JPEG-Dateien im
aktuellen Verzeichnis:</I><BR>
<CODE>mencoder -mf on:w=800:h=600:fps=25 -ovc copy
-o output.avi \*.jpg</CODE></P>
<P><I>Erstellung einer unkomprimierten Datei aus allen PNG-Dateien im
momentanen Verzeichnis:</I><BR>
<CODE>mencoder -mf on:w=800:h=600:fps=25:type=png -ovc rawrgb
-o output.avi \*.png</CODE></P>
<P><B>Anmerkung:</B> Die Breite muss ein Vielfaches von 4 betragen, was eine
Beschränkung des RGB-AVI-Formates ist.</P>
<P><I>Erstellung einer Motion PNG-Datei (MPNG) aus allen PNG-Dateien im
momentanen Verzeichnis:</I><BR>
<CODE>mencoder -mf on:w=800:h=600:fps=25:type=png -ovc copy
-o output.avi \*.png</CODE></P>
<P><I>Erstellung einer Motion TGA-Datei (MTGA) aus allen TGA-Dateien im
aktuellen Verzeichnis:</I><BR>
<CODE>mencoder -mf on:w=800:h=600:fps=25:type=tga -ovc copy
-o output.avi \*.tga</CODE></P>
<H3><A NAME="vobsub">7.8 Extrahieren von DVD-Untertiteln in eine
Vobsub-Datei</A></H3>
<P>MEncoder kann Untertitel von einer DVD extrahieren und sie als Datei
im Vobsub-Format speichern. Dieses besteht aus einem Dateipaar
(<CODE>.sub</CODE> und <CODE>.idx</CODE>) und wird gewähnlich in ein
einziges <CODE>.rar</CODE> Archiv verpackt. MPlayer kann diese mit den
Optionen <CODE>-vobsub</CODE> und <CODE>-vobsubid</CODE> wiedergeben.</P>
<P>Du gibst mit <CODE>-vobsubout</CODE> den Basisnamen der Ausgabedatei (ohne
<CODE>.idx</CODE>- oder <CODE>.sub</CODE>-Endung) und mit
<CODE>-vobsuboutindex</CODE> den Index des Untertitels der Ausgabedatei
an.</P>
<P>Wenn die Eingabe nicht von einer DVD stammt, solltest du mit der Option
<CODE>-ifo</CODE> die Datei angeben, die zur Erstellung der resultierenden
<CODE>.idx</CODE>-Datei benötigt wird.</P>
<P>Wenn die Eingabe nicht von einer DVD stammt und keine
<CODE>.ifo</CODE>-Datei vorhanden ist, benötigst du die
<CODE>-vobsuboutid</CODE>-Option, um MPlayer zu sagen, welche Sprach-ID
für die <CODE>.idx</CODE> Datei verwendet werden soll.</P>
<P>Jeder Aufruf fügt neue Untertitel dazu, falls die <CODE>.idx</CODE>-
und <CODE>.sub</CODE>-Dateien bereits existieren. Sie sollten im Bedarfsfall
also vor dem Starten gelöscht werden.</P>
<H4>Beispiele:</H4>
<P><I>Kopieren zweier Untertitel von einer DVD mit 3-Pass-Encodierung</I><BR>
<CODE>rm untertitel.idx untertitel.sub</CODE><BR>
<CODE>mencoder -dvd 1 -vobsubout untertitel -vobsuboutindex 0 -sid
2 -o frameno.avi -ovc frameno -oac mp3lame -lameopts vbr=3</CODE><BR>
<CODE>mencoder -dvd 1 -oac copy -ovc divx4 -divx4opts
pass=1</CODE><BR>
<CODE>mencoder -dvd 1 -oac copy -ovc divx4 -divx4opts pass=2
-vobsubout untertitel -vobsuboutindex 1 -sid 5</CODE></P>
<P><I>Kopieren eines französischen Untertitels von einer MPEG-Datei</I><BR>
<CODE>rm untertitel.idx untertitel.sub</CODE><BR>
<CODE>mencoder film.mpg -ifo film.ifo -vobsubout untertitel
-vobsuboutindex 0 -vobsuboutid fr -sid 1</CODE></P>
<H3><A NAME="aspect">7.9 Das Höhen-/Breitenverhältnisses erhalten
</A></H3>
<P>DVDs und SVCDs (z.B. MPEG1/2) enthalten einen Wert, der das Verhältnis
zwischen der Ausgebehöhe und der Ausgebebreite enthält. Der Player
sorgt dann durch Skalierung dafür, dass dieses Verhältnis erreicht
wird, sodass wir Menschen keine Eierköpfe sehen (Beispiel: die
Bildmaße betragen 480x480, das gespeicherte Verhältnis beträgt
4:3, und der Player spielt den Videostream dann bei 640x480 ab). Wenn du
allerdings solche Dateien in ein AVI umwandelst, dann musst du beachten, dass
das AVI-Format das Höhen-/Breitenverhältnis <B>nicht</B> speichern
kann. Die Skalierung beim Encodieren ist ein zeitraubender und
qualitätsmindernder Prozess. Es sollte doch eine bessere Möglichkeit
geben!?</P>
<P>Ganz genau - die gibt es.</P>
<P>MPEG4 enthält ein einzigartiges Feature: Im Videostream selber kann
das Höhen-/Breitenverhältnis gespeichert werden. Jop, genauso wie
bei MPEG1/2 (DVD, SVCD). Leider gibt es bisher <U>keinen</U> Videoplayer, der
dieses Feature unterstützt. Bis auf MPlayer natürlich.</P>
<P>Dieses Feature kann nur in Verbindung mit dem <CODE>mpeg4</CODE>-Codec der
<B>libavcodec</B> genutzt werden. Denke immer daran, dass - auch wenn
MPlayer die Datei richtig wiedergeben wird - alle anderen Player ein
falsches Höhen-/Breitenverhältnis anzeigen werden.</P>
<P>Du solltest ernsthaft in Erwägung ziehen, die eventuell vorhandenen
schwarzen Balken oberhalb und unterhalb des Bildes wegzuschneiden. Lies
in der man-Page dazu, wie du die <CODE>cropdetect</CODE>- und
<CODE>crop</CROP>-Filter benutzt.</P>
<H4>BENUTZUNG</H4>
<P><CODE>$ mencoder beispiel-svcd.mpg -ovc lavc -lavcopts
vcodec=mpeg4:aspect=16.0/9.0 -vf crop=714:548:0:14 -oac copy -o
ausgabe.avi</CODE></P>
</BODY>
</HTML>
|