mirror of
https://github.com/mpv-player/mpv
synced 2024-12-16 11:55:42 +00:00
66ebcb8714
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@4710 b3059339-0415-0410-9bf9-f77b7e298cf2
393 lines
17 KiB
HTML
393 lines
17 KiB
HTML
<HTML>
|
|
<BODY BGCOLOR=white>
|
|
|
|
<FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
|
|
<P><B><A NAME=2.4>2.4. Encoding with MEncoder</A></B></P>
|
|
|
|
<P><B><A NAME=2.4.1>2.4.1. Overview</B></P>
|
|
|
|
<P><B>MEncoder</B> (<B>MPlayer</B>'s Movie Encoder) is a simple movie encoder,
|
|
designed to encode MPlayer-playable movies
|
|
(<B>AVI/DVD/VCD/VOB/MPG/MOV/VIV/FLI/RM/NUV/NET</B>) to other MPlayer-playable
|
|
formats (see below). It can encode with various codecs, like <B>DivX4</B> (1 or
|
|
2 passes), libavcodec, <B>PCM</B>/<B>MP3</B>/<B>VBRMP3</B> audio. Also has
|
|
stream copying and video resizing abilities.</P>
|
|
|
|
<P><B><A NAME=2.4.2>2.4.2. Compiling</B></P>
|
|
|
|
<P>
|
|
<UL>
|
|
<LI><B>OPTIONAL</B> - read <B>MPlayer</B>'s compilation instructions, it contains info about
|
|
how to install <I>libdvdread</I> for <B>DVD</B> support, etc.</LI>
|
|
<LI><B>OPTIONAL</B> - download the newest <B>DivX4linux</B> libs
|
|
from <A HREF="http://avifile.sourceforge.net/download.htm">avifile.sourceforge.net</A>,
|
|
and have them PROPERLY installed. You need them if you want DivX4
|
|
(1/2 pass) encoding.</LI>
|
|
<LI><B>OPTIONAL</B> - for libavcodec support, install libavcodec as
|
|
described in the <A HREF="codecs.html#2.2.1.2">libavcodec section</A>.</LI>
|
|
<LI><B>OPTIONAL</B> - download and compile <B>libmp3lame</B> (from lame 3.89beta or lame CVS).<BR>
|
|
<B>WARNING : DO NOT COMPILE LAME WITH <U>GCC 2.96</U> ! It won't
|
|
work properly !</B><BR>
|
|
This
|
|
is needed for CBR/VBR MP3 audio encoding ability. Note that a single
|
|
<CODE>lame</CODE> binary isn't sufficient. BTW: the less optimization
|
|
you use for lame, the better the quality will be. You can test
|
|
quality by running <CODE>make test</CODE> after lame's compiling process
|
|
is over. The resulting number should be less than <B>30</B>. Don't
|
|
panic if it's <B>400</B> or so, you shouldn't heard any audible
|
|
quality decrease. Oh, and if your compiler doesn't even run <CODE>make test</CODE> ...
|
|
Well, delete that <B>GCC 2.96</B>.</LI>
|
|
</UL>
|
|
</P>
|
|
|
|
<P>You are ready. As you probably know, other encoding tools need the
|
|
<I>avifile</I> library installed. <B>MEncoder</B> doesn't need it at all.</P>
|
|
|
|
<P><B><A NAME=2.4.3>2.4.3. MEncoder features</B></P>
|
|
|
|
<P>
|
|
<UL>
|
|
<LI>encoding from the wide range of fileformats and decoders of <B>MPlayer</B></LI>
|
|
<LI>encoding to all the codecs of ffmpeg's
|
|
<A HREF=codecs.html#2.2.1.2>libavcodec</A></LI>
|
|
<LI>video encoding from <B>V4L compatible TV tuners</B></LI>
|
|
<LI>encoding/multiplexing to interleaved AVI files with proper index</LI>
|
|
<LI>1, 2 or 3 pass <B>DivX4</B> video</LI>
|
|
<LI><B>VBR</B> MP3 audio - <B>IMPORTANT NOTE</B> : VBR MP3 audio doesn't
|
|
always play nicely on windows players! If you intend to encode AVIs
|
|
mainly for windows, encode with CBR!</LI>
|
|
<LI>PCM audio</LI>
|
|
<LI>stream copying</LI>
|
|
<LI>input A/V synchronizing (PTS-based, can be disabled with -mc 0 option)</LI>
|
|
<LI>FPS correction with <CODE>-ofps</CODE> option (useful when encoding
|
|
29.97fps VOB to 24fps AVI)</LI>
|
|
<LI>movie rescaling</LI>
|
|
</UL>
|
|
</P>
|
|
|
|
<P><B><I>Planned features</I></B> :
|
|
<UL>
|
|
<LI>using audio from separate file (AC3, MP3, OGG)</LI>
|
|
<LI>even wider variety of available en/decoding formats/codecs
|
|
(creating VOB files with DivX4/Indeo5/VIVO streams :)</LI>
|
|
<LI>audio encoding from v4l</LI>
|
|
</UL>
|
|
</P>
|
|
|
|
<P><B><A NAME=2.4.3.1>2.4.3.1. Encoding 2 or 3-pass DivX4</B></P>
|
|
|
|
<P><U><B>2-pass encoding :</B></U> the name comes from the fact that this method encodes the file <I>twice</I>.
|
|
The first encoding (dubbed <I>pass</I>) creates some temporary files (*.log) with a
|
|
size of few megabytes, do not delete them yet (you can delete the AVI). In the second pass, the
|
|
2-pass output file is created, using the bitrate data from the temporary files. The resulting
|
|
file will have much better image quality. If this is the first time you heard
|
|
about this, you should consult some guides available on the Net.</P>
|
|
|
|
<P>This example shows how to encode a DVD to a 2-pass DivX4 AVI. Just two
|
|
commands are needed :<BR>
|
|
<CODE> rm frameno.avi</CODE> - remove this file, which
|
|
can come from a previous 3-pass encoding (it interferes with current one)<BR>
|
|
<CODE> mencoder -dvd 2 -divx4opts br=1100
|
|
-o movie.avi -pass 1<BR>
|
|
mencoder -dvd 2 -divx4opts br=1100 -o movie.avi -pass 2</CODE></P>
|
|
|
|
<P><U><B>3-pass encoding :</B></U> this is an extension of 2-pass encoding,
|
|
where the audio encoding takes place in a separate pass. This method enables
|
|
estimation of recommended video bitrate in order to fit on a CD. Also, the
|
|
audio is encoded only once, unlike in 2-pass mode. The schematics :</P>
|
|
|
|
<P>
|
|
<TABLE>
|
|
<TR>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
<CODE>rm frameno.avi</CODE></TD>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
<B>remove conflicting temporary file</B></TD>
|
|
</TR>
|
|
<TR>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
<CODE>mencoder <file/DVD> -ovc frameno -o
|
|
frameno.avi</CODE></TD>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
<B><U>First pass</U> : an audio-only avi file will be created, containing
|
|
ONLY the requested audio stream. Don't forget <CODE>-lameopts</CODE>, if
|
|
you need to set it. If you were encoding a long movie, MEncoder prints
|
|
the recommended bitrate values for 650Mb, 700Mb, and 800Mb destination
|
|
sizes, after this pass finishes.</B></TD>
|
|
</TR>
|
|
<TR>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
<CODE>mencoder <file/DVD> -oac copy -pass 1
|
|
-divx4opts br=<bitrate></CODE></TD>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
<B><U>Second pass</U> : alias the first pass of DivX4 video encoding.
|
|
Optionally specify the video bitrate MEncoder printed at the end of the
|
|
previous pass.</B></TD>
|
|
</TR>
|
|
<TR>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
<CODE>mencoder <file/DVD> -oac copy -pass 2
|
|
-divx4opts br=<bitrate></CODE></TD>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
<B><U>Third pass</U> : alias the second pass of DivX4 video encoding.
|
|
Optionally specify the video bitrate MEncoder printed at the end of the
|
|
previous pass. In this pass, audio from <CODE>frameno.avi</CODE> will be
|
|
inserted into the destination file.. and it's all ready!</B></TD>
|
|
</TR>
|
|
</TABLE>
|
|
</P>
|
|
|
|
<P><B>Example for 3-pass encoding :</B></P>
|
|
|
|
<P><CODE> rm frameno.avi</CODE> - remove this file,
|
|
which can come from a previous 3-pass encoding (it interferes with current
|
|
one)<BR>
|
|
<CODE> mencoder -dvd 2 -ovc frameno
|
|
-o frameno.avi<BR>
|
|
<CODE> mencoder -dvd 2
|
|
-divx4opts br=1100 -oac copy -o movie.avi -pass 1<BR>
|
|
mencoder -dvd 2
|
|
-divx4opts br=1100 -oac copy -o movie.avi -pass 2</CODE>
|
|
</P>
|
|
|
|
|
|
<P><B><A NAME=2.4.3.2>2.4.3.2. Rescaling movies</B></P>
|
|
|
|
<P>Often the need to resize movie images' size emerges. Its reasons can be many,
|
|
examples are decreasing output file size, encoding SVCDs to DivX. Ripped DVDs
|
|
are mostly rescaled, for example a 4:3 DVD should be 640x480, especially
|
|
when you want it to fit to 1 CD, and have good quality at the same time.
|
|
SVCDs have 480x480 size, and their header contains the aspect ratio the
|
|
player should use (Ex.: 480x480 + 4:3 = 640x480). However when encoding to
|
|
AVI (DivX) files, you have be aware that AVI headers don't store this
|
|
value. Thus, the only solution is rescaling.</P>
|
|
|
|
<P><B>MEncoder</B> can scale input images if they come in YV12 format (for example:
|
|
ffdivx, odivx drivers, or mpeg1/2). The output size is specified with the
|
|
<CODE>-x</CODE>, and <CODE>-y</CODE> options. Furthermore, there are 3
|
|
rescaling filters in <B>MEncoder</B>, <I>0
|
|
: fast bilinear</I>, <I>1 : bilinear</I>, <I>2 : bicubic</I> (best quality).
|
|
They can be specified with the <CODE>-sws</CODE> option. If not specified,
|
|
<B>MEncoder</B> will use 0 : fast bilinear.</P>
|
|
|
|
<P>Rescaling is very simple :<BR>
|
|
<CODE> mencoder sample-svcd.mpg -divx4opts br=1300 -x 640 -y 480 -sws 2 -o output.avi</CODE></P>
|
|
|
|
|
|
<P><B><A NAME=2.4.3.3>2.4.3.3. Stream copying</B></P>
|
|
|
|
<P><B>MEncoder</B> can handle input streams in two ways : <B>encode</B> or
|
|
<B>copy</B> them. This section is about <B>copying</B>.</P>
|
|
|
|
<P>
|
|
<UL>
|
|
<LI><B>Video stream</B> (option <CODE>-ovc copy</CODE>) : nice stuff can be done :)<BR>
|
|
Like, putting (not converting!) FLI or VIVO or MPEG1 video into an AVI file !
|
|
Of course only <B>MPlayer</B> can play such files :) And it probably has no
|
|
real life value at all. Rationally : video stream copying can be useful for
|
|
example when only the audio stream has to be encoded (like, uncompressed PCM
|
|
to MP3).</LI>
|
|
|
|
<LI><B>Audio stream</B> (option <CODE>-oac copy</CODE>) : straightforward.</LI>
|
|
</UL>
|
|
</P>
|
|
|
|
|
|
<P><B><A NAME=2.4.3.4>2.4.3.4. Fixing AVIs with broken index or interleaving</B></P>
|
|
|
|
<P>Easiest thing. We simply copy the video and audio streams, and
|
|
<B>MEncoder</B> generates the index. Of course this cannot fix possible bugs in
|
|
the video and/or audio streams. It also fixes files with broken interleaving,
|
|
thus the <CODE>-ni</CODE> option won't be needed for them anymore.</P>
|
|
|
|
<P>Command : <CODE>mencoder input.avi -ovc copy -oac copy -o output.avi</CODE></P>
|
|
|
|
|
|
<P><B><A NAME=2.4.3.5>2.4.3.5. Encoding with the <I>libavcodec</I> codec family</B></P>
|
|
|
|
<P><A HREF="codecs.html#2.2.1.2">libavcodec</A> provides simple encoding to a
|
|
lot of interesting video and audio formats (currently its audio codecs are
|
|
unsupported). You can encode to the following codecs :</P>
|
|
|
|
<P>
|
|
<UL>
|
|
<LI>mjpeg - Motion JPEG</LI>
|
|
<LI>h263 - H263</LI>
|
|
<LI>h263p - H263 Plus</LI>
|
|
<LI>mpeg4 - DivX4</LI>
|
|
<LI>msmpeg4 - the old DivX</LI>
|
|
<LI>rv10 - an old RealVideo codec</LI>
|
|
<LI>mpeg1video - MPEG1 video :)</LI>
|
|
</UL>
|
|
</P>
|
|
|
|
<P>The first column contains the codec names that should be passed after the
|
|
<CODE>vcodec</CODE> config, like : <CODE>-lavcopts vcodec=msmpeg4</CODE></P>
|
|
|
|
<P>An example, with MJPEG compression :<BR>
|
|
<CODE> mencoder -dvd 2 -o title2.avi -ovc lavc -lavcopts vcodec=mjpeg</CODE></P>
|
|
|
|
|
|
<P><B><A NAME=2.4.4>2.4.4. Syntax</B></P>
|
|
|
|
<P> <CODE>mencoder [options] [input file] [options] ...</P>
|
|
|
|
|
|
<P><B><A NAME=2.4.5>2.4.5. Available options</B></P>
|
|
|
|
<P>NOTE : for all available options, <B>read the manpage !</B></P>
|
|
|
|
<P>
|
|
As <B>MEncoder</B> is built on the same codebase as <B>MPlayer</B>, there
|
|
are many <B>MPlayer</B> options that have function in <B>MEncoder</B> too!
|
|
See, you can use <CODE>-sid</CODE> to rip a DVD with subtitles, or
|
|
<CODE>-noidx</CODE> to disregard buggy index of input AVI. <B>Be smart!</B>
|
|
</P>
|
|
|
|
<TABLE BORDER=1>
|
|
<TR>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
<I>-ss</I> time</TD>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
start encoding from the given time (can start only from keyframes !)
|
|
</TD>
|
|
</TR>
|
|
<TR>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
<I>-endpos</I> time</TD>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
stop encoding at the given time. See the manpage for examples !
|
|
</TD>
|
|
</TR>
|
|
<TR>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
<I>-o</I> filename</TD>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
specify output filename
|
|
</TD>
|
|
</TR>
|
|
<TR>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
<I>-x</I> width in pixels</TD>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
rescale output video to given pixels width
|
|
</TD>
|
|
</TR>
|
|
<TR>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
<I>-y</I> height in pixels</TD>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
rescale output video to given pixels height
|
|
</TD>
|
|
</TR>
|
|
<TR>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
<I>-sws</I> 0-2</TD>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
type of scaling method<BR>
|
|
0 - fast bilinear<BR>
|
|
1 - bilinear<BR>
|
|
2 - bicubic (best quality)<BR>
|
|
</TD>
|
|
</TR>
|
|
<TR>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
<I>-ovc</I> codecname</TD>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
Encode with the given codec (codec names are from codecs.conf). Examples:<BR>
|
|
<B>help</B> - get list of available codecs<BR>
|
|
<B>null</B> - do not create a video stream in the output AVI<BR>
|
|
<B>raw</B> - create uncompressed video<BR>
|
|
<B>rawrgb</B> - ?<BR>
|
|
<B>copy</B> - no encoding, just copy the stream (only from AVI/ASF now)<BR>
|
|
<B>divx4</B> - encode to DivX4<BR>
|
|
<B>lavc</B> - encode with a codec from libavcodec<BR>
|
|
<B>vfw</B> - encode with a Windows DLL<BR>
|
|
</TD>
|
|
</TR>
|
|
<TR>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
<I>-oac</I> codecname</TD>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
Encode with the given codec (codec names are from codecs.conf). Examples:<BR>
|
|
<B>help</B> - get list of available codecs<BR>
|
|
<B>copy</B> - no encoding, just copy the stream (only from AVI/ASF now)<BR>
|
|
<B>pcm</B> - encode to uncompressed PCM<BR>
|
|
<B>mp3lame</B> - encode to MP3 (using Lame)<BR>
|
|
</TD>
|
|
</TR>
|
|
<TR>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
<I>-divx4opts</I></TD>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
If encoding to DivX4, you can specify its parameters here, like:<BR>
|
|
<CODE>-divx4opts br=1800:deinterlace:key=250</CODE><BR>
|
|
Common options: <B>(for full list, check the manpage!)</B><BR>
|
|
<B>help</B> - get help<BR>
|
|
<B>br</B>=XXX - specify bitrate in kbit <4-16000> or bit <16001-24000000><BR>
|
|
<B>q</B>=XXXX - quality (1-fastest, 5-best - default 5)<BR>
|
|
<B>key</B>=XXXX - keyframe interval<BR>
|
|
</TD>
|
|
</TR>
|
|
<TR>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
<I>-lavcopts</I></TD>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
If encoding with libavcodec, you can specify its parameters here, like:<BR>
|
|
<CODE>-lavcopts vcodec=msmpeg4:vbitrate=1800:vhq:keyint=250</CODE><BR>
|
|
Common options: <B>(for full list, check the manpage!)</B><BR>
|
|
<B>help</B> - get help<BR>
|
|
<B>vcodec</B>=XXX - select videocodec (for the full list, see the libavcodec section above)<BR>
|
|
<B>vbitrate</B>=XXX - specify bitrate in kbit <4-16000> or bit <16001-24000000><BR>
|
|
<B>vhq</B> - high quality<BR>
|
|
<B>keyint</B>=XXX - keyframe interval<BR>
|
|
</TD>
|
|
</TR>
|
|
<TR>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
<I>-lameopts</I></TD>
|
|
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" size=2>
|
|
If encoding to MP3 with libmp3lame, you can specify its parameters here, like:<BR>
|
|
<CODE>-lameopts q=3</CODE><BR>
|
|
<CODE>-lameopts br=192:cbr</CODE><BR>
|
|
Common options: <B>(for full list, check the manpage!)</B><BR>
|
|
<B>help</B> - get help<BR>
|
|
<B>cbr</B> - select <B>CBR</B> MP3 (default is <B>VBR</B>)<BR>
|
|
<B>br</B>=XXX - specify bitrate in kbit <0-1024> (this is for <B>CBR</B> only!)<BR>
|
|
<B>q</B>=XXXX - quality (0-highest, 9-fastest - default 0) (this is for <B>VBR</B> only!)<BR>
|
|
</TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<P><B><A NAME=2.4.6>2.4.6. Examples</B></P>
|
|
|
|
<P>Using <B>MEncoder</B> is the easiest thing on Earth. See the following :</P>
|
|
|
|
<P>Encoding from DVD, title 2 :<BR>
|
|
<CODE> mencoder -dvd 2 -o title2.avi</CODE></P>
|
|
|
|
<P>The same, but with libavcodec family, MJPEG compression :<BR>
|
|
<CODE> mencoder -dvd 2 -o title2.avi -ovc lavc -lavcopts vcodec=mjpeg -ffourcc mjpg</CODE></P>
|
|
|
|
<P>Encoding from DVD, title 2, with rescaling :<BR>
|
|
<CODE> mencoder -dvd 2 -x 640 -y 480 -sws 2 -o title2.avi</CODE></P>
|
|
|
|
<P>Encoding from HTTP :<BR>
|
|
<CODE> mencoder http://mplayer.hq/example.avi -o example.avi</CODE></P>
|
|
|
|
<P>Encoding from a pipe :<BR>
|
|
<CODE> rar p test-SVCD.rar | mencoder -divx4opts br=800 -ofps 24 -pass 1 -- -</CODE></P>
|
|
|
|
<P>Encoding multiple *.vob files :<BR>
|
|
<CODE> cat *.vob | mencoder <options> -</CODE></P>
|
|
|
|
<P>Encoding from tuner (for tuner options <A HREF="documentation.html#2.5">see the TV input section !</A>) :<BR>
|
|
<CODE> mencoder -tv on:driver=v4l:width=640:height=480 <options></CODE></P>
|
|
|
|
<P>For all available options, <B><I>check the MEncoder man page !</I></B>
|
|
<P>
|
|
</FONT>
|
|
</BODY>
|
|
</HTML>
|