Mercurial > mplayer.hg
annotate DOCS/encoding.html @ 4541:fc978c8eff3b
checking output of getSwsContext*()
101 I420/IYUV support without -zoom
author | michael |
---|---|
date | Tue, 05 Feb 2002 19:54:38 +0000 |
parents | 970a09005860 |
children | 55c8aefdef1b |
rev | line source |
---|---|
2674 | 1 <HTML> |
2 <BODY BGCOLOR=white> | |
3 | |
4 <FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
5 | |
2745 | 6 <P><B><A NAME=2.4>2.4. Encoding with MEncoder</A></B></P> |
2674 | 7 |
3721 | 8 <P><B><A NAME=2.4.1>2.4.1. Overview</B></P> |
9 | |
2674 | 10 <P><B>MEncoder</B> (<B>MPlayer</B>'s Movie Encoder) is a simple movie encoder, |
11 designed to encode MPlayer-playable movies | |
4397 | 12 (<B>AVI/DVD/VCD/VOB/MPG/MOV/VIV/FLI/RM/NUV/NET</B>) to other MPlayer-playable |
13 formats (see below). It can encode with various codecs, like <B>DivX4</B> (1 or | |
14 2 passes), libavcodec, <B>PCM</B>/<B>MP3</B>/<B>VBRMP3</B> audio. Also has | |
15 stream copying and video resizing abilities.</P> | |
2674 | 16 |
3721 | 17 <P><B><A NAME=2.4.2>2.4.2. Compiling</B></P> |
18 | |
19 <P> | |
2674 | 20 <UL> |
3721 | 21 <LI><B>OPTIONAL</B> - read <B>MPlayer</B>'s compilation instructions, it contains info about |
3027 | 22 how to install <I>libdvdread</I> for <B>DVD</B> support, etc.</LI> |
3721 | 23 <LI><B>OPTIONAL</B> - download the newest <B>DivX4linux</B> libs |
3027 | 24 from <A HREF="http://avifile.sourceforge.net/download.htm">avifile.sourceforge.net</A>, |
4177 | 25 and have them PROPERLY installed. You need them if you want DivX4 |
26 (1/2 pass) encoding.</LI> | |
3721 | 27 <LI><B>OPTIONAL</B> - for libavcodec support, install libavcodec as |
28 described in the <A HREF="codecs.html#2.2.1.2">libavcodec section</A>.</LI> | |
29 <LI><B>OPTIONAL</B> - download and compile <B>libmp3lame</B> (from lame 3.89beta or lame CVS).<BR> | |
3211 | 30 <B>WARNING : DO NOT COMPILE LAME WITH <U>GCC 2.96</U> ! It won't |
31 work properly !</B><BR> | |
32 This | |
3027 | 33 is needed for CBR/VBR MP3 audio encoding ability. Note that a single |
34 <CODE>lame</CODE> binary isn't sufficient. BTW: the less optimization | |
35 you use for lame, the better the quality will be. You can test | |
36 quality by running <CODE>make test</CODE> after lame's compiling process | |
37 is over. The resulting number should be less than <B>30</B>. Don't | |
38 panic if it's <B>400</B> or so, you shouldn't heard any audible | |
39 quality decrease. Oh, and if your compiler doesn't even run <CODE>make test</CODE> ... | |
40 Well, delete that <B>GCC 2.96</B>.</LI> | |
2674 | 41 </UL> |
42 </P> | |
43 | |
44 <P>You are ready. As you probably know, other encoding tools need the | |
45 <I>avifile</I> library installed. <B>MEncoder</B> doesn't need it at all.</P> | |
46 | |
3721 | 47 <P><B><A NAME=2.4.3>2.4.3. MEncoder features</B></P> |
48 | |
49 <P> | |
2674 | 50 <UL> |
2868 | 51 <LI>encoding from the wide range of fileformats and decoders of <B>MPlayer</B></LI> |
4177 | 52 <LI>encoding to all the codecs of ffmpeg's |
53 <A HREF=codecs.html#2.2.1.2>libavcodec</A></LI> | |
54 <LI>video encoding from <B>V4L compatible TV tuners</B></LI> | |
2674 | 55 <LI>encoding/multiplexing to interleaved AVI files with proper index</LI> |
4397 | 56 <LI>1, 2 or 3 pass <B>DivX4</B> video</LI> |
3929 | 57 <LI><B>VBR</B> MP3 audio - <B>IMPORTANT NOTE</B> : VBR MP3 audio doesn't |
58 always play nicely on windows players! If you intend to encode AVIs | |
59 mainly for windows, encode with CBR!</LI> | |
2674 | 60 <LI>PCM audio</LI> |
3438 | 61 <LI>stream copying (CBR audio only)</LI> |
2674 | 62 <LI>input A/V synchronizing (PTS-based, can be disabled with -mc 0 option)</LI> |
63 <LI>FPS correction with <CODE>-ofps</CODE> option (useful when encoding | |
64 29.97fps VOB to 24fps AVI)</LI> | |
3438 | 65 <LI>movie rescaling</LI> |
2674 | 66 </UL> |
67 </P> | |
68 | |
69 <P><B><I>Planned features</I></B> : | |
70 <UL> | |
71 <LI>using audio from separate file (AC3, MP3, OGG)</LI> | |
72 <LI>VBR audio stream copy</LI> | |
73 <LI>even wider variety of available en/decoding formats/codecs | |
74 (creating VOB files with DivX4/Indeo5/VIVO streams :)</LI> | |
4177 | 75 <LI>audio encoding from v4l</LI> |
2674 | 76 </UL> |
77 </P> | |
78 | |
4397 | 79 <P><B><A NAME=2.4.3.1>2.4.3.1. Encoding 2 or 3-pass DivX4</B></P> |
2848
33c32f3d9f1f
many small updates, fixes (some/more to be completed soon)
gabucino
parents:
2745
diff
changeset
|
80 |
4397 | 81 <P><U><B>2-pass encoding :</B></U> the name comes from the fact that this method encodes the file <I>twice</I>. |
3620 | 82 The first encoding (dubbed <I>pass</I>) creates some temporary files (*.log) with a |
83 size of few megabytes, do not delete them yet (you can delete the AVI). In the second pass, the | |
84 2-pass output file is created, using the bitrate data from the temporary files. The resulting | |
3027 | 85 file will have much better image quality. If this is the first time you heard |
86 about this, you should consult some guides available on the Net.</P> | |
2848
33c32f3d9f1f
many small updates, fixes (some/more to be completed soon)
gabucino
parents:
2745
diff
changeset
|
87 |
33c32f3d9f1f
many small updates, fixes (some/more to be completed soon)
gabucino
parents:
2745
diff
changeset
|
88 <P>This example shows how to encode a DVD to a 2-pass DivX4 AVI. Just two |
33c32f3d9f1f
many small updates, fixes (some/more to be completed soon)
gabucino
parents:
2745
diff
changeset
|
89 commands are needed :<BR> |
4397 | 90 <CODE> rm frameno.avi</CODE> - remove this file, which |
91 can come from a previous 3-pass encoding (it interferes with current one)<BR> | |
92 <CODE> mencoder -dvd 2 -divx4opts br=1100 | |
2848
33c32f3d9f1f
many small updates, fixes (some/more to be completed soon)
gabucino
parents:
2745
diff
changeset
|
93 -o movie.avi -pass 1<BR> |
4397 | 94 mencoder -dvd 2 -divx4opts br=1100 -o movie.avi -pass 2</CODE></P> |
95 | |
96 <P><U><B>3-pass encoding :</B></U> this is an extension of 2-pass encoding, | |
97 where the audio encoding takes place in a separate pass. This method enables | |
98 estimation of recommended video bitrate in order to fit on a CD. Also, the | |
99 audio is encoded only once, unlike in 2-pass mode. The schematics :</P> | |
100 | |
101 <P> | |
102 <TABLE> | |
103 <TR> | |
104 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
105 <CODE>rm frameno.avi</CODE></TD> | |
106 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
107 <B>remove conflicting temporary file</B></TD> | |
108 </TR> | |
109 <TR> | |
110 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
111 <CODE>mencoder <file/DVD> -ovc frameno -o | |
112 frameno.avi</CODE></TD> | |
113 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
114 <B><U>First pass</U> : an audio-only avi file will be created, containing | |
115 ONLY the requested audio stream. Don't forget <CODE>-lameopts</CODE>, if | |
116 you need to set it. If you were encoding a long movie, MEncoder prints | |
117 the recommended bitrate values for 650Mb, 700Mb, and 800Mb destination | |
118 sizes, after this pass finishes.</B></TD> | |
119 </TR> | |
120 <TR> | |
121 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
122 <CODE>mencoder <file/DVD> -oac copy -pass 1 | |
123 -divx4opts br=<bitrate></CODE></TD> | |
124 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
125 <B><U>Second pass</U> : alias the first pass of DivX4 video encoding. | |
126 Optionally specify the video bitrate MEncoder printed at the end of the | |
127 previous pass.</B></TD> | |
128 </TR> | |
129 <TR> | |
130 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
131 <CODE>mencoder <file/DVD> -oac copy -pass 2 | |
132 -divx4opts br=<bitrate></CODE></TD> | |
133 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
134 <B><U>Third pass</U> : alias the second pass of DivX4 video encoding. | |
135 Optionally specify the video bitrate MEncoder printed at the end of the | |
136 previous pass. In this pass, audio from <CODE>frameno.avi</CODE> will be | |
137 inserted into the destination file.. and it's all ready!</B></TD> | |
138 </TR> | |
139 </TABLE> | |
140 </P> | |
141 | |
142 <P><B>Example for 3-pass encoding :</B></P> | |
143 | |
144 <P><CODE> rm frameno.avi</CODE> - remove this file, | |
145 which can come from a previous 3-pass encoding (it interferes with current | |
146 one)<BR> | |
147 <CODE> mencoder -dvd 2 -ovc frameno | |
148 -o frameno.avi<BR> | |
149 <CODE> mencoder -dvd 2 | |
150 -divx4opts br=1100 -oac copy -o movie.avi -pass 1<BR> | |
151 mencoder -dvd 2 | |
152 -divx4opts br=1100 -oac copy -o movie.avi -pass 2</CODE> | |
153 </P> | |
154 | |
2868 | 155 |
3721 | 156 <P><B><A NAME=2.4.3.2>2.4.3.2. Rescaling movies</B></P> |
3438 | 157 |
158 <P>Often the need to resize movie images' size emerges. Its reasons can be many, | |
159 examples are decreasing output file size, encoding SVCDs to DivX. Ripped DVDs | |
160 are mostly rescaled, for example a 4:3 DVD should be 640x480, especially | |
161 when you want it to fit to 1 CD, and have good quality at the same time. | |
162 SVCDs have 480x480 size, and their header contains the aspect ratio the | |
163 player should use (Ex.: 480x480 + 4:3 = 640x480). However when encoding to | |
164 AVI (DivX) files, you have be aware that AVI headers don't store this | |
165 value. Thus, the only solution is rescaling.</P> | |
166 | |
3912 | 167 <P><B>MEncoder</B> can scale input images if they come in YV12 format (for example: |
3859 | 168 ffdivx, odivx drivers, or mpeg1/2). The output size is specified with the |
169 <CODE>-x</CODE>, and <CODE>-y</CODE> options. Furthermore, there are 3 | |
170 rescaling filters in <B>MEncoder</B>, <I>0 | |
171 : fast bilinear</I>, <I>1 : bilinear</I>, <I>2 : bicubic</I> (best quality). | |
3438 | 172 They can be specified with the <CODE>-sws</CODE> option. If not specified, |
173 <B>MEncoder</B> will use 0 : fast bilinear.</P> | |
174 | |
175 <P>Rescaling is very simple :<BR> | |
176 <CODE> mencoder sample-svcd.mpg -divx4opts br=1300 -x 640 -y 480 -sws 2 -o output.avi</CODE></P> | |
177 | |
3721 | 178 <P><B><A NAME=2.4.3.3>2.4.3.3. Stream copying</B></P> |
2868 | 179 |
3438 | 180 <P><B>MEncoder</B> can handle input streams in two ways : <B>encode</B> or |
181 <B>copy</B> them. This section is about <B>copying</B>.</P> | |
2868 | 182 |
3438 | 183 <P> |
184 <UL> | |
185 <LI><B>Video stream</B> (option <CODE>-ovc copy</CODE>) : nice stuff can be done :)<BR> | |
186 Like, putting (not converting!) FLI or VIVO or MPEG1 video into an AVI file ! | |
187 Of course only <B>MPlayer</B> can play such files :) And it probably has no | |
188 real life value at all. Rationally : video stream copying can be useful for | |
189 example when only the audio stream has to be encoded (like, uncompressed PCM | |
190 to MP3).</LI> | |
191 | |
192 <LI><B>Audio stream</B> (option <CODE>-oac copy</CODE>) : straightforward.</LI> | |
193 </UL> | |
194 </P> | |
195 | |
3721 | 196 <P><B><A NAME=2.4.3.4>2.4.3.4. Fixing AVIs with broken index</B></P> |
3583 | 197 |
198 <P>Easiest thing. We simply copy the video and audio streams, and | |
199 <B>MEncoder</B> generates the index. Of course this cannot fix possible bugs in | |
200 the video and/or audio streams.</P> | |
201 | |
202 <P>Command : <CODE>mencoder input.avi -ovc copy -oac copy -o output.avi</CODE></P> | |
203 | |
3721 | 204 |
205 <P><B><A NAME=2.4.3.5>2.4.3.5. Encoding with the <I>libavcodec</I> codec family</B></P> | |
206 | |
3929 | 207 <P><A HREF="codecs.html#2.2.1.2">libavcodec</A> provides simple encoding to a |
208 lot of interesting video and audio formats (currently its audio codecs are | |
209 unsupported). You can encode to the following codecs :</P> | |
3721 | 210 |
211 <P> | |
212 <UL> | |
213 <LI>mjpeg - Motion JPEG</LI> | |
3774 | 214 <LI>h263 - H263</LI> |
3721 | 215 <LI>h263p - H263 Plus</LI> |
216 <LI>mpeg4 - DivX4</LI> | |
217 <LI>msmpeg4 - the old DivX</LI> | |
218 <LI>rv10 - an old RealVideo codec</LI> | |
219 <LI>mpeg1video - MPEG1 video :)</LI> | |
220 </UL> | |
221 </P> | |
222 | |
223 <P>The first column contains the codec names that should be passed after the | |
224 <CODE>vcodec</CODE> config, like : <CODE>-lavcopts vcodec=msmpeg4</CODE></P> | |
225 | |
3912 | 226 <P>An example, with MJPEG compression :<BR> |
227 <CODE> mencoder -dvd 2 -o title2.avi -ovc lavc -lavcopts vcodec=mjpeg -ffourcc mjpg</CODE></P> | |
228 | |
3721 | 229 <P><B><A NAME=2.4.4>2.4.4. Syntax</B></P> |
3438 | 230 |
231 <P> <CODE>mencoder [options] [input file] [options] ...</P> | |
232 | |
3721 | 233 <P><B><A NAME=2.4.5>2.4.5. Available options</B></P> |
2868 | 234 |
235 <P>NOTE : for all available options, <B>read the manpage !</B></P> | |
236 | |
4177 | 237 <TABLE BORDER=1> |
2868 | 238 <TR> |
239 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
240 <I>-o</I> filename</TD> | |
241 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
242 specify output filename | |
243 </TD> | |
244 </TR> | |
245 <TR> | |
246 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
3287 | 247 <I>-x</I> width in pixels</TD> |
248 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
249 rescale output video to given pixels width | |
250 </TD> | |
251 </TR> | |
252 <TR> | |
253 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
254 <I>-y</I> height in pixels</TD> | |
255 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
256 rescale output video to given pixels height | |
257 </TD> | |
258 </TR> | |
259 <TR> | |
260 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
261 <I>-sws</I> 0-2</TD> | |
262 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
263 type of scaling method<BR> | |
264 0 - fast bilinear<BR> | |
265 1 - bilinear<BR> | |
266 2 - bicubic (best quality)<BR> | |
267 </TD> | |
268 </TR> | |
269 <TR> | |
270 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
2868 | 271 <I>-ovc</I> codecname</TD> |
272 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
273 Encode with the given codec (codec names are from codecs.conf). Examples:<BR> | |
274 <B>help</B> - get list of available codecs<BR> | |
275 <B>copy</B> - no encoding, just copy the stream (only from AVI/ASF now)<BR> | |
276 <B>divx4</B> - encode to DivX4<BR> | |
3721 | 277 <B>lavc</B> - encode with a codec from libavcodec<BR> |
2868 | 278 </TD> |
279 </TR> | |
280 <TR> | |
281 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
282 <I>-oac</I> codecname</TD> | |
283 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
284 Encode with the given codec (codec names are from codecs.conf). Examples:<BR> | |
285 <B>help</B> - get list of available codecs<BR> | |
286 <B>copy</B> - no encoding, just copy the stream (only from AVI/ASF now)<BR> | |
287 <B>pcm</B> - encode to uncompressed PCM<BR> | |
288 <B>mp3lame</B> - encode to MP3 (using Lame)<BR> | |
289 </TD> | |
290 </TR> | |
291 <TR> | |
292 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
293 <I>-divx4opts</I></TD> | |
294 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
295 If encoding to DivX4, you can specify its parameters here, like:<BR> | |
296 <CODE>-divx4opts br=1800:deinterlace:key=250</CODE><BR> | |
297 Common options: <B>(for full list, check the manpage!)</B><BR> | |
298 <B>help</B> - get help<BR> | |
299 <B>br</B>=XXX - specify bitrate in kbit <4-16000> or bit <16001-24000000><BR> | |
300 <B>q</B>=XXXX - quality (1-fastest, 5-best - default 5)<BR> | |
3721 | 301 <B>key</B>=XXXX - keyframe interval<BR> |
302 </TD> | |
303 </TR> | |
304 <TR> | |
305 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
306 <I>-lavcopts</I></TD> | |
307 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
308 If encoding with libavcodec, you can specify its parameters here, like:<BR> | |
309 <CODE>-lavcopts vcodec=msmpeg4:vbitrate=1800:vhq:keyint=250</CODE><BR> | |
310 Common options: <B>(for full list, check the manpage!)</B><BR> | |
311 <B>help</B> - get help<BR> | |
312 <B>vcodec</B>=XXX - select videocodec (for the full list, see the libavcodec section above)<BR> | |
313 <B>vbitrate</B>=XXX - specify bitrate in kbit <4-16000> or bit <16001-24000000><BR> | |
314 <B>vhq</B> - high quality<BR> | |
315 <B>keyint</B>=XXX - keyframe interval<BR> | |
2868 | 316 </TD> |
317 </TR> | |
318 <TR> | |
319 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
320 <I>-lameopts</I></TD> | |
321 <TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2> | |
322 If encoding to MP3 with libmp3lame, you can specify its parameters here, like:<BR> | |
323 <CODE>-lameopts q=3</CODE><BR> | |
324 <CODE>-lameopts br=192:cbr</CODE><BR> | |
325 Common options: <B>(for full list, check the manpage!)</B><BR> | |
326 <B>help</B> - get help<BR> | |
327 <B>cbr</B> - select <B>CBR</B> MP3 (default is <B>VBR</B>)<BR> | |
328 <B>br</B>=XXX - specify bitrate in kbit <0-1024> (this is for <B>CBR</B> only!)<BR> | |
329 <B>q</B>=XXXX - quality (0-highest, 9-fastest - default 0) (this is for <B>VBR</B> only!)<BR> | |
330 </TD> | |
331 </TR> | |
332 </TABLE> | |
2848
33c32f3d9f1f
many small updates, fixes (some/more to be completed soon)
gabucino
parents:
2745
diff
changeset
|
333 |
3721 | 334 <P><B><A NAME=2.4.6>2.4.6. Examples</B></P> |
2674 | 335 |
336 <P>Using <B>MEncoder</B> is the easiest thing on Earth. See the following :</P> | |
337 | |
338 <P>Encoding from DVD, title 2 :<BR> | |
339 <CODE> mencoder -dvd 2 -o title2.avi</CODE></P> | |
340 | |
3721 | 341 <P>The same, but with libavcodec family, MJPEG compression :<BR> |
342 <CODE> mencoder -dvd 2 -o title2.avi -ovc lavc -lavcopts vcodec=mjpeg -ffourcc mjpg</CODE></P> | |
343 | |
3438 | 344 <P>Encoding from DVD, title 2, with rescaling :<BR> |
345 <CODE> mencoder -dvd 2 -x 640 -y 480 -sws 2 -o title2.avi</CODE></P> | |
346 | |
2674 | 347 <P>Encoding from HTTP :<BR> |
348 <CODE> mencoder http://mplayer.hq/example.avi -o example.avi</CODE></P> | |
349 | |
2874
632032ff27bf
patch applied from Colin Marquardt <colin@marquardt-home.de>
gabucino
parents:
2868
diff
changeset
|
350 <P>Encoding from a pipe :<BR> |
2674 | 351 <CODE> rar p test-SVCD.rar | mencoder -divx4opts br=800 -ofps 24 -pass 1 -- -</CODE></P> |
352 | |
2874
632032ff27bf
patch applied from Colin Marquardt <colin@marquardt-home.de>
gabucino
parents:
2868
diff
changeset
|
353 <P>Encoding multiple *.vob files :<BR> |
632032ff27bf
patch applied from Colin Marquardt <colin@marquardt-home.de>
gabucino
parents:
2868
diff
changeset
|
354 <CODE> cat *.vob | mencoder <options> -</CODE></P> |
632032ff27bf
patch applied from Colin Marquardt <colin@marquardt-home.de>
gabucino
parents:
2868
diff
changeset
|
355 |
2950
20157c719b2c
new features in TV input dox (chan, chanlist, norm, keys)
gabucino
parents:
2939
diff
changeset
|
356 <P>Encoding from tuner (for tuner options <A HREF="documentation.html#2.5">see the TV input section !</A>) :<BR> |
3382 | 357 <CODE> mencoder -tv on:driver=v4l:width=640:height=480 <options></CODE></P> |
2950
20157c719b2c
new features in TV input dox (chan, chanlist, norm, keys)
gabucino
parents:
2939
diff
changeset
|
358 |
2674 | 359 <P>For all available options, <B><I>check the MEncoder man page !</I></B> |
360 <P> | |
361 </FONT> | |
362 </BODY> | |
363 </HTML> |