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