MEncoder (MPlayer's Movie Encoder) is a simple movie encoder, designed to encode MPlayer-playable movies (AVI/ASF/OGG/DVD/VCD/VOB/MPG/MOV/VIV/FLI/RM/NUV/NET/PVA) to other MPlayer-playable formats (see below). It can encode with various codecs, like DivX4 (1 or 2 passes), libavcodec, PCM/MP3/VBR MP3 audio. Also has powerful plugin system for video manipulation.
lame
binary isn't sufficient. BTW: the less optimization
you use for lame, the better the quality will be. You can test
quality by running make test
after lame's compiling process
is over. The resulting number should be less than 30. Don't
panic if it's 400 or so, you shouldn't heard any audible
quality decrease. Oh, and if your compiler doesn't even run
make test
... Well, delete that GCC 2.96 or upgrade
lame to at least 3.90.libjpeg
and libpng
-
as described in the Installation
sectionYou are ready. As you probably know, other encoding tools need the avifile library installed. MEncoder doesn't need it at all.
-ofps
option (useful when encoding
29.97fps VOB to 24fps AVI)2-pass encoding: the name comes from the fact that this method encodes the file twice. The first encoding (dubbed pass) 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.
This example shows how to encode a DVD to a 2-pass DivX4 AVI. Just two
commands are needed:
rm frameno.avi
- remove this file, which
can come from a previous 3-pass encoding (it interferes with current
one)
mencoder -dvd 2 -ovc lavc -lavcopts
vcodec=mpeg4:vpass=1:more_options -oac copy -o movie.avi
mencoder -dvd 2 -ovc lavc -lavcopts
vcodec=mpeg4:vpass=2:more_options -oac copy -o movie.avi
3-pass encoding: 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:
rm frameno.avi
mencoder <file/DVD> -ovc frameno -oac mp3lame -lameopts vbr=3:more_options -o frameno.avi
An audio-only avi file will be created, containing
only the requested audio stream. Don't forget -lameopts
,
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.
mencoder <file/DVD> -oac copy
-ovc lavc -lavcopts vcodec=mpeg4:vpass=1:vbitrate=<bitrate>
Alias the first pass of DivX4 video encoding. Optionally specify the video bitrate MEncoder printed at the end of the previous pass.
mencoder <file/DVD> -oac copy
-ovc lavc -lavcopts vcodec=mpeg4:vpass=2:vbitrate=<bitrate>
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 frameno.avi
will
be inserted into the destination file.. and it's all ready!
rm frameno.avi
- remove this file,
which can come from a previous 3-pass encoding (it interferes with current
one)
mencoder -dvd 2 -ovc frameno
-o frameno.avi -oac mp3lame -lameopts vbr=3:more_options
mencoder -dvd 2 -ovc lavc
-lavcopts vcodec=mpeg4:vpass=1:more_options -oac copy -o movie.avi
mencoder -dvd 2 -ovc lavc
-lavcopts vcodec=mpeg4:vpass=2:more_options -oac copy -o movie.avi
2 or 3-pass encoding using internal libavcodec controller: Optionally you can use libavcodec's internal 2 or 3-pass mode, it may give you better final rate accuracy than using the external, DivX4-inspired 2-pass rate controler with libavcodec.
mencoder -dvd 2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 (audio-options) -o
movie.avi
mencoder -dvd 2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 (audio-options) -o
movie.avi
rm -f frameno.avi
mencoder -dvd 2 -ovc frameno (audio-options) -o frameno.avi
mencoder -dvd 2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o
movie.avi
mencoder -dvd 2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -oac copy -o
movie.avi
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.
The scaling process is handled by the 'scale' video filter:
-vop scale=X:Y
. Its quality can be set with the
-sws
option. If it's not specified, MEncoder will use 0:
fast bilinear.
Usage:
mencoder sample-svcd.mpg -ovc lavc -lavcopts
vcodec=mpeg4:more_options -vop scale=640:480 -oac copy -o
output.avi
MEncoder can handle input streams in two ways: encode or copy them. This section is about copying.
-ovc copy
): nice stuff can be
done :)-oac copy
): straightforward.
It is possible to take an external audio file (MP3, Vorbis) and mux it
into the output stream. Use the -audiofile <filename>
option for this.Easiest thing. We simply copy the video and audio streams, and
MEncoder 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 -ni
option won't be needed for them
anymore.
Command: mencoder -idx input.avi -ovc copy -oac copy -o output.avi
libavcodec 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:
The first column contains the codec names that should be passed after the
vcodec
config, like: -lavcopts vcodec=msmpeg4
An example, with MJPEG compression:
mencoder -dvd 2 -o title2.avi -ovc lavc
-lavcopts vcodec=mjpeg -oac copy
MEncoder is capable of creating movies from one or more JPEG, PNG or TGA files. With simple framecopy it can create MJPEG (Motion JPEG), MPNG (Motion PNG) or MTGA (Motion TGA) files.
Explanation of the process:libjpeg
(when decoding PNGs, it will use libpng).The explanation of the -mf
option can be found below in the
global Options section and in the man page.
Creating a DivX4 file from all the JPEG files in the current dir:
mencoder \*.jpg -mf on:w=800:h=600:fps=25 -ovc divx4
-oac copy -o output.avi
Creating a DivX4 file from some JPEG files in the current dir:
mencoder frame001.jpg,frame002.jpg -mf on:w=800:h=600:fps=25
-ovc divx4 -oac copy -o output.avi
Creating a Motion JPEG (MJPEG) file from all the JPEG files in the current dir:
mencoder \*.jpg -mf on:w=800:h=600:fps=25 -ovc copy
-oac copy -o output.avi
Creating an uncompressed file from all the PNG files in the current dir:
mencoder \*.png -mf on:w=800:h=600:fps=25:type=png -ovc raw
-oac copy -o output.avi
Creating a Motion PNG (MPNG) file from all the PNG files in the current dir:
mencoder \*.png -mf on:w=800:h=600:fps=25:type=png -ovc copy
-oac copy -o output.avi
Creating a Motion TGA (MTGA) file from all the TGA files in the current dir:
mencoder \*.tga -mf on:w=800:h=600:fps=25:type=tga -ovc copy
-oac copy -o output.avi
MEncoder is capable of extracting subtitles from a DVD into
Vobsub fomat files. They consist of a pair of files ending in
.idx
and .sub
and are usually packaged in a single
.rar
archive. MPlayer can play these with the
-vobsub
and -vobsubid
options.
You specify the basename (i.e without the .idx
or
.sub
extension) of the output files with -vobsubout
and the index for this subtitle in the resulting files with
-vobsuboutindex
.
If the input is not from a DVD you should use -ifo
to
indicate the .ifo
file needed to construct the resulting
.idx
file.
If the input is not from a DVD and you do not have the .ifo
file you will need to use the -vobsubid
option to let it know
what language id to put in the .idx
file.
Each run will append the running subtitle if the .idx
and
.sub
files already exist. So you should remove any before
starting.
Copying two subtitles from a DVD while doing 3-pass encoding
rm subtitles.idx subtitles.sub
mencoder -dvd 1 -vobsubout subtitles -vobsuboutindex 0
-sid 2 -o frameno.avi -ovc frameno -oac mp3lame -lameopts vbr=3
mencoder -dvd 1 -oac copy -ovc divx4 -divx4opts pass=1
mencoder -dvd 1 -oac copy -ovc divx4 -divx4opts pass=2 -vobsubout
subtitles -vobsuboutindex 1 -sid 5
Copying a french subtitle from an MPEG file
rm subtitles.idx subtitles.sub
mencoder movie.mpg -ifo movie.ifo -vobsubout subtitles
-vobsuboutindex 0 -vobsuboutid fr -sid 1
For the complete list of available MEncoder options and examples, please see the man page.