2003-03-23 23:35:12 +00:00
|
|
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
2003-09-21 13:05:42 +00:00
|
|
|
<!-- $Revision$ -->
|
2003-03-23 23:35:12 +00:00
|
|
|
<chapter id="mencoder">
|
2003-11-30 13:07:40 +00:00
|
|
|
<title>Encoding with <application>MEncoder</application></title>
|
2003-03-23 23:35:12 +00:00
|
|
|
|
|
|
|
<para>
|
|
|
|
For the complete list of available <application>MEncoder</application> options
|
|
|
|
and examples, please see the man page. For a series of hands-on examples and
|
|
|
|
detailed guides on using several encoding parameters, read the
|
|
|
|
<ulink url="../../tech/encoding-tips.txt">encoding-tips</ulink> that were
|
|
|
|
collected from several mailing list threads on mplayer-users. Search the
|
|
|
|
<ulink url="http://mplayerhq.hu/pipermail/mplayer-users/">archives</ulink>
|
|
|
|
for a wealth of discussions about all aspects of and problems related to
|
|
|
|
encoding with <application>MEncoder</application>.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect1 id="menc-feat-divx4">
|
|
|
|
<title>Encoding 2 or 3-pass MPEG-4 ("DivX")</title>
|
|
|
|
|
|
|
|
<formalpara>
|
|
|
|
<title>2-pass encoding</title>
|
|
|
|
<para>
|
|
|
|
The name comes from the fact that this method encodes the file <emphasis>twice</emphasis>.
|
|
|
|
The first encoding (dubbed pass) creates some temporary files
|
|
|
|
(<filename>*.log</filename>) 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.
|
|
|
|
</para>
|
|
|
|
</formalpara>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This example shows how to encode a DVD to a 2-pass MPEG-4 ("DivX") AVI.
|
|
|
|
Just two commands are needed:
|
|
|
|
<screen>rm frameno.avi</screen>
|
|
|
|
remove this file, which can come from a previous 3-pass encoding (it interferes
|
|
|
|
with current one)
|
|
|
|
<screen>
|
2004-01-01 14:43:46 +00:00
|
|
|
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o <replaceable>movie.avi</replaceable>
|
|
|
|
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -oac copy -o <replaceable>movie.avi</replaceable>
|
2003-03-23 23:35:12 +00:00
|
|
|
</screen>
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<formalpara>
|
|
|
|
<title>3-pass encoding</title>
|
|
|
|
<para>
|
|
|
|
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:
|
|
|
|
</para>
|
|
|
|
</formalpara>
|
|
|
|
|
|
|
|
<procedure>
|
|
|
|
<step><para>
|
|
|
|
Remove conflicting temporary file:
|
|
|
|
<screen>rm frameno.avi</screen>
|
|
|
|
</para></step>
|
|
|
|
<step><para>
|
|
|
|
<emphasis>First pass:</emphasis>
|
|
|
|
|
|
|
|
<screen>mencoder <replaceable>file/DVD</replaceable> -ovc frameno -oac mp3lame -lameopts vbr=3 -o frameno.avi</screen>
|
2004-01-02 23:07:07 +00:00
|
|
|
|
2003-03-23 23:35:12 +00:00
|
|
|
An audio-only avi file will be created, containing
|
|
|
|
<emphasis role="bold">only</emphasis> the requested audio stream. Don't forget
|
|
|
|
<option>-lameopts</option>, if you need to set it. If you were encoding a
|
|
|
|
long movie, <application>MEncoder</application> prints the recommended
|
|
|
|
bitrate values for 650Mb, 700Mb, and 800Mb destination sizes, after this
|
|
|
|
pass finishes.
|
|
|
|
</para></step>
|
|
|
|
<step><para>
|
|
|
|
<emphasis>Second pass:</emphasis>
|
|
|
|
<screen>
|
|
|
|
mencoder <replaceable>file/DVD</replaceable> -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=1:vbitrate=<replaceable>bitrate</replaceable><!--
|
|
|
|
--></screen>
|
|
|
|
This is the first pass of video encoding. Optionally specify the video
|
2003-11-30 13:07:40 +00:00
|
|
|
bitrate <application>MEncoder</application> printed at the end of the previous pass.
|
2003-03-23 23:35:12 +00:00
|
|
|
</para></step>
|
|
|
|
<step><para>
|
|
|
|
<emphasis>Third pass:</emphasis>
|
|
|
|
<screen>
|
2004-01-21 15:25:16 +00:00
|
|
|
mencoder <replaceable>file/DVD</replaceable> -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=2:vbitrate=<replaceable>bitrate</replaceable>
|
2003-03-23 23:35:12 +00:00
|
|
|
</screen>
|
|
|
|
This is the second pass of video encoding. Specify the same bitrate
|
|
|
|
as in the previous pass unless you really know what you are doing.
|
|
|
|
In this pass, audio from <filename>frameno.avi</filename> will be
|
|
|
|
inserted into the destination file...and it's all ready!
|
|
|
|
</para></step>
|
|
|
|
</procedure>
|
|
|
|
|
|
|
|
<example>
|
|
|
|
<title>Example of 3-pass encoding</title>
|
|
|
|
<para>
|
|
|
|
<screen>rm frameno.avi</screen>
|
|
|
|
remove this file, which can come from a previous 3-pass encoding
|
|
|
|
(it interferes with current one)
|
|
|
|
<screen>
|
2003-05-25 19:15:01 +00:00
|
|
|
mencoder dvd://2 -ovc frameno -o frameno.avi -oac mp3lame -lameopts vbr=3
|
2004-01-01 14:43:46 +00:00
|
|
|
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o <replaceable>movie.avi</replaceable>
|
|
|
|
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -oac copy -o <replaceable>movie.avi</replaceable>
|
2003-03-23 23:35:12 +00:00
|
|
|
</screen>
|
|
|
|
</para>
|
|
|
|
</example>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1 id="menc-feat-mpeg">
|
|
|
|
<title>Encoding to MPEG format</title>
|
|
|
|
<para>
|
|
|
|
<application>MEncoder</application> can create MPEG (MPEG-PS) format output
|
2004-01-21 19:25:18 +00:00
|
|
|
files. It's probably useful only with
|
|
|
|
<link linkend="ffmpeg"><systemitem class="library">libavcodec</systemitem></link>'s
|
2003-09-15 01:21:04 +00:00
|
|
|
<emphasis>mpeg1video</emphasis> codec, because players - except
|
|
|
|
<application>MPlayer</application> - expect MPEG1 video, and MPEG1 layer 2 (MP2)
|
|
|
|
audio streams in MPEG files.
|
2003-03-23 23:35:12 +00:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2003-12-24 23:59:50 +00:00
|
|
|
This feature is not very useful right now, aside that it probably has many bugs,
|
2003-11-30 13:07:40 +00:00
|
|
|
but the more importantly because <application>MEncoder</application> currently
|
|
|
|
cannot encode MPEG1 layer 2 (MP2) audio, which all other players expect in MPEG files.
|
2003-03-23 23:35:12 +00:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2003-11-30 13:07:40 +00:00
|
|
|
To change <application>MEncoder's</application> output file format,
|
|
|
|
use the <option>-of mpeg</option> option.
|
2003-03-23 23:35:12 +00:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Example:
|
|
|
|
<screen>
|
2004-01-01 14:43:46 +00:00
|
|
|
mencoder -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video -oac copy <replaceable>other_options</replaceable> <replaceable>media.avi</replaceable> -o <replaceable>output.mpg</replaceable>
|
2003-03-23 23:35:12 +00:00
|
|
|
</screen>
|
|
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
|
|
|
|
<sect1 id="menc-feat-rescale">
|
|
|
|
<title>Rescaling movies</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Often the need to resize movie images' size emerges. Its reasons can be
|
|
|
|
many: decreasing file size, network bandwidth,etc. Most people even do
|
|
|
|
rescaling when converting DVDs or SVCDs to DivX AVI. This is <emphasis role="bold">bad</emphasis>.
|
|
|
|
Instead of even you doing so, read the <link linkend="aspect">Preserving aspect ratio</link>
|
|
|
|
section.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The scaling process is handled by the <literal>scale</literal> video filter:
|
2003-03-24 17:24:25 +00:00
|
|
|
<option>-vf scale=<replaceable>width</replaceable>:<replaceable>height</replaceable></option>.
|
2003-03-23 23:35:12 +00:00
|
|
|
Its quality can be set with the <option>-sws</option> option.
|
|
|
|
If it's not specified, <application>MEncoder</application> will use 0: fast
|
|
|
|
bilinear.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Usage:
|
|
|
|
<screen>
|
2003-03-24 17:24:25 +00:00
|
|
|
mencoder <replaceable>input.mpg</replaceable> -ovc lavc -lavcopts vcodec=mpeg4 -vf scale=640:480-o <replaceable>output.avi</replaceable>
|
2003-03-23 23:35:12 +00:00
|
|
|
</screen>
|
|
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
|
|
|
|
<sect1 id="menc-feat-streamcopy">
|
|
|
|
<title>Stream copying</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
<application>MEncoder</application> can handle input streams in two ways:
|
|
|
|
<emphasis role="bold">encode</emphasis> or <emphasis role="bold">copy</emphasis>
|
|
|
|
them. This section is about <emphasis role="bold">copying</emphasis>.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem><para>
|
|
|
|
<emphasis role="bold">Video stream</emphasis> (option <option>-ovc copy</option>):
|
|
|
|
nice stuff can be done :) Like, putting (not converting!) FLI or VIVO or
|
|
|
|
MPEG1 video into an AVI file! Of course only
|
|
|
|
<application>MPlayer</application> 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).
|
|
|
|
</para></listitem>
|
|
|
|
<listitem><para>
|
|
|
|
<emphasis role="bold">Audio stream</emphasis> (option <option>-oac copy</option>):
|
|
|
|
straightforward. It is possible to take an external audio file (MP3,
|
2003-07-14 13:25:18 +00:00
|
|
|
WAV) and mux it into the output stream. Use the
|
2003-03-23 23:35:12 +00:00
|
|
|
<option>-audiofile <replaceable>filename</replaceable></option> option
|
|
|
|
for this.
|
|
|
|
</para></listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
|
|
|
|
<sect1 id="menc-feat-fix-avi">
|
|
|
|
<title>Fixing AVIs with broken index or interleaving</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Easiest thing. We simply copy the video and audio streams, and
|
|
|
|
<application>MEncoder</application> 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 <option>-ni</option> option won't be needed for them anymore.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Command:
|
|
|
|
<screen>
|
|
|
|
mencoder -idx <replaceable>input.avi</replaceable> -ovc copy -oac copy -o <replaceable>output.avi</replaceable><!--
|
|
|
|
--></screen>
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
|
|
<sect2 id="menc-feat-appending">
|
|
|
|
<title>Appending multiple AVI files</title>
|
|
|
|
|
|
|
|
<para>
|
2003-11-30 13:07:40 +00:00
|
|
|
As a side-effect, the broken AVI fixer function enables <application>MEncoder</application>
|
|
|
|
to append 2 (or more) AVI files:
|
2003-03-23 23:35:12 +00:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Command:
|
2004-01-01 14:43:46 +00:00
|
|
|
<screen>cat 1.avi 2.avi | mencoder -noidx -ovc copy -oac copy -o <replaceable>output.avi</replaceable> -</screen>
|
2003-03-23 23:35:12 +00:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<note><para>
|
|
|
|
This expects <filename>1.avi</filename> and <filename>2.avi</filename> to use
|
|
|
|
the same codecs, resolution, stream rate etc, and at least <filename>1.avi</filename>
|
|
|
|
must not be broken. You may need to fix your input AVI files first, as described
|
|
|
|
<link linkend="menc-feat-fix-avi">above</link>.
|
|
|
|
</para></note>
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1 id="menc-feat-enc-libavcodec">
|
2004-01-21 19:25:18 +00:00
|
|
|
<title>Encoding with the <systemitem class="library">libavcodec</systemitem>
|
|
|
|
codec family</title>
|
2003-03-23 23:35:12 +00:00
|
|
|
|
|
|
|
<para>
|
2004-01-21 19:25:18 +00:00
|
|
|
<link linkend="ffmpeg"><systemitem class="library">libavcodec</systemitem></link>
|
|
|
|
provides simple encoding to a lot of interesting video and audio formats.
|
2004-01-05 20:52:44 +00:00
|
|
|
You can encode to the following codecs (more or less up to date):
|
2003-03-23 23:35:12 +00:00
|
|
|
|
|
|
|
<informaltable frame="all">
|
|
|
|
<tgroup cols="2">
|
|
|
|
<thead>
|
|
|
|
<row><entry>Codec name</entry><entry>Description</entry></row>
|
|
|
|
</thead>
|
|
|
|
<tbody>
|
|
|
|
<row><entry>mjpeg</entry><entry>
|
|
|
|
Motion JPEG
|
|
|
|
</entry></row>
|
2003-09-15 01:21:04 +00:00
|
|
|
<row><entry>ljpeg</entry><entry>
|
|
|
|
Lossless JPEG
|
|
|
|
</entry></row>
|
2003-03-23 23:35:12 +00:00
|
|
|
<row><entry>h263</entry><entry>
|
|
|
|
H263
|
|
|
|
</entry></row>
|
|
|
|
<row><entry>h263p</entry><entry>
|
|
|
|
H263 Plus
|
|
|
|
</entry></row>
|
|
|
|
<row><entry>mpeg4</entry><entry>
|
|
|
|
ISO standard MPEG-4 (DivX 5, XVID compatible)
|
|
|
|
</entry></row>
|
|
|
|
<row><entry>msmpeg4</entry><entry>
|
|
|
|
pre-standard MPEG-4 variant by MS, v3 (aka DivX3)
|
|
|
|
</entry></row>
|
|
|
|
<row><entry>msmpeg4v2</entry><entry>
|
|
|
|
pre-standard MPEG-4 by MS, v2 (used in old asf files)
|
|
|
|
</entry></row>
|
2003-09-15 01:21:04 +00:00
|
|
|
<row><entry>wmv1</entry><entry>
|
2003-03-23 23:35:12 +00:00
|
|
|
Windows Media Video, version 1 (aka WMV7)
|
|
|
|
</entry></row>
|
2003-09-15 01:21:04 +00:00
|
|
|
<row><entry>wmv2</entry><entry>
|
|
|
|
Windows Media Video, version 2 (aka WMV8)
|
|
|
|
</entry></row>
|
2003-03-23 23:35:12 +00:00
|
|
|
<row><entry>rv10</entry><entry>
|
|
|
|
an old RealVideo codec
|
|
|
|
</entry></row>
|
|
|
|
<row><entry>mpeg1video</entry><entry>
|
2003-09-15 01:21:04 +00:00
|
|
|
MPEG1 video
|
|
|
|
</entry></row>
|
|
|
|
<row><entry>mpeg2video</entry><entry>
|
|
|
|
MPEG2 video
|
2003-03-23 23:35:12 +00:00
|
|
|
</entry></row>
|
|
|
|
<row><entry>huffyuv</entry><entry>
|
|
|
|
lossless compression
|
|
|
|
</entry></row>
|
2003-09-15 01:21:04 +00:00
|
|
|
<row><entry>asv1</entry><entry>
|
|
|
|
ASUS Video v1
|
|
|
|
</entry></row>
|
|
|
|
<row><entry>asv2</entry><entry>
|
|
|
|
ASUS Video v2
|
|
|
|
</entry></row>
|
|
|
|
<row><entry>ffv1</entry><entry>
|
|
|
|
FFmpeg's lossless video codec
|
|
|
|
</entry></row>
|
2003-03-23 23:35:12 +00:00
|
|
|
</tbody>
|
|
|
|
</tgroup>
|
|
|
|
</informaltable>
|
|
|
|
|
|
|
|
The first column contains the codec names that should be passed after the
|
|
|
|
<literal>vcodec</literal> config, like: <option>-lavcopts vcodec=msmpeg4</option>
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<informalexample>
|
|
|
|
<para>
|
|
|
|
An example, with MJPEG compression:
|
2003-05-25 19:15:01 +00:00
|
|
|
<screen>mencoder dvd://2 -o title2.avi -ovc lavc -lavcopts vcodec=mjpeg -oac copy</screen>
|
2003-03-23 23:35:12 +00:00
|
|
|
</para>
|
|
|
|
</informalexample>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
|
|
|
|
<sect1 id="menc-feat-enc-images">
|
|
|
|
<title>Encoding from multiple input image files (JPEGs,PNGs or TGAs)</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
<application>MEncoder</application> 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.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<orderedlist>
|
|
|
|
<title>Explanation of the process:</title>
|
|
|
|
<listitem><para>
|
|
|
|
<application>MEncoder</application> <emphasis>decodes</emphasis> the input image(s) with
|
|
|
|
<systemitem class="library">libjpeg</systemitem> (when decoding PNGs, it
|
|
|
|
will use <systemitem class="library">libpng</systemitem>).
|
|
|
|
</para></listitem>
|
|
|
|
<listitem><para>
|
|
|
|
<application>MEncoder</application> then feeds the decoded image to the
|
|
|
|
chosen video compressor (DivX4, Xvid, ffmpeg msmpeg4, etc.).
|
|
|
|
</para></listitem>
|
|
|
|
</orderedlist>
|
|
|
|
|
|
|
|
<formalpara>
|
|
|
|
<title>Examples</title>
|
|
|
|
<para>
|
|
|
|
The explanation of the <option>-mf</option> option can be found below in
|
|
|
|
the man page.
|
|
|
|
|
|
|
|
<informalexample>
|
|
|
|
<para>
|
|
|
|
Creating a DivX4 file from all the JPEG files in the current dir:
|
|
|
|
<screen>
|
2004-01-01 14:43:46 +00:00
|
|
|
mencoder -mf on:w=800:h=600:fps=25 -ovc divx4 -o <replaceable>output.avi</replaceable> \*.jpg<!--
|
2003-03-23 23:35:12 +00:00
|
|
|
--></screen>
|
|
|
|
</para>
|
|
|
|
</informalexample>
|
|
|
|
|
|
|
|
<informalexample>
|
|
|
|
<para>
|
|
|
|
Creating a DivX4 file from some JPEG files in the current dir:
|
|
|
|
<screen>
|
2004-01-01 14:43:46 +00:00
|
|
|
mencoder -mf on:w=800:h=600:fps=25 -ovc divx4 -o <replaceable>output.avi</replaceable> <replaceable>frame001.jpg,frame002.jpg</replaceable> <!--
|
2003-03-23 23:35:12 +00:00
|
|
|
--></screen>
|
|
|
|
</para>
|
|
|
|
</informalexample>
|
|
|
|
|
|
|
|
<informalexample>
|
|
|
|
<para>
|
|
|
|
Creating a Motion JPEG (MJPEG) file from all the JPEG files in the current
|
|
|
|
dir:
|
|
|
|
<screen>
|
2004-01-01 14:43:46 +00:00
|
|
|
mencoder -mf on:w=800:h=600:fps=25 -ovc copy -o <replaceable>output.avi</replaceable> \*.jpg<!--
|
2003-03-23 23:35:12 +00:00
|
|
|
--></screen>
|
|
|
|
</para>
|
|
|
|
</informalexample>
|
|
|
|
|
|
|
|
<informalexample>
|
|
|
|
<para>
|
|
|
|
Creating an uncompressed file from all the PNG files in the current dir:
|
|
|
|
<screen>
|
2004-01-01 14:43:46 +00:00
|
|
|
mencoder -mf on:w=800:h=600:fps=25:type=png -ovc raw -o <replaceable>output.avi</replaceable> \*.png<!--
|
2003-03-23 23:35:12 +00:00
|
|
|
--></screen>
|
|
|
|
</para>
|
|
|
|
</informalexample>
|
|
|
|
|
|
|
|
<note><para>
|
|
|
|
Width must be integer multiple of 4, it's a limitation of the RAW RGB AVI format.
|
|
|
|
</para></note>
|
|
|
|
|
|
|
|
<informalexample>
|
|
|
|
<para>
|
|
|
|
Creating a Motion PNG (MPNG) file from all the PNG files in the current
|
|
|
|
dir:
|
|
|
|
<screen>
|
2004-01-01 14:43:46 +00:00
|
|
|
mencoder -mf on:w=800:h=600:fps=25:type=png -ovc copy -o <replaceable>output.avi</replaceable> \*.png<!--
|
2003-03-23 23:35:12 +00:00
|
|
|
--></screen>
|
|
|
|
</para>
|
|
|
|
</informalexample>
|
|
|
|
|
|
|
|
<informalexample>
|
|
|
|
<para>
|
|
|
|
Creating a Motion TGA (MTGA) file from all the TGA files in the current
|
|
|
|
dir:
|
|
|
|
<screen>
|
2004-01-01 14:43:46 +00:00
|
|
|
mencoder -mf on:w=800:h=600:fps=25:type=tga -ovc copy -o <replaceable>output.avi</replaceable> \*.tga<!--
|
2003-03-23 23:35:12 +00:00
|
|
|
--></screen>
|
|
|
|
</para>
|
|
|
|
</informalexample>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
</formalpara>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
|
|
|
|
<sect1 id="menc-feat-extractsub">
|
|
|
|
<title>Extracting DVD subtitles to Vobsub file</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
<application>MEncoder</application> is capable of extracting subtitles from
|
2003-10-26 14:58:17 +00:00
|
|
|
a DVD into Vobsub formatted files. They consist of a pair of files ending in
|
2003-03-23 23:35:12 +00:00
|
|
|
<filename>.idx</filename> and <filename>.sub</filename> and are usually
|
|
|
|
packaged in a single <filename>.rar</filename> archive.
|
|
|
|
<application>MPlayer</application> can play these with the
|
|
|
|
<option>-vobsub</option> and <option>-vobsubid</option> options.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
You specify the basename (i.e without the <filename>.idx</filename> or
|
|
|
|
<filename>.sub</filename> extension) of the output files with
|
|
|
|
<option>-vobsubout</option> and the index for this subtitle in the
|
|
|
|
resulting files with <option>-vobsuboutindex</option>.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
If the input is not from a DVD you should use <option>-ifo</option> to
|
|
|
|
indicate the <filename>.ifo</filename> file needed to construct the
|
|
|
|
resulting <filename>.idx</filename> file.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
If the input is not from a DVD and you do not have the
|
|
|
|
<filename>.ifo</filename> file you will need to use the
|
|
|
|
<option>-vobsubid</option> option to let it know what language id to put in
|
|
|
|
the <filename>.idx</filename> file.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Each run will append the running subtitle if the <filename>.idx</filename>
|
|
|
|
and <filename>.sub</filename> files already exist. So you should remove any
|
|
|
|
before starting.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<example>
|
|
|
|
<title>Copying two subtitles from a DVD while doing 3-pass encoding</title>
|
|
|
|
<screen>
|
|
|
|
rm subtitles.idx subtitles.sub
|
2003-05-25 19:15:01 +00:00
|
|
|
mencoder dvd://1 -vobsubout subtitles -vobsuboutindex 0 -sid 2 -o frameno.avi -ovc frameno
|
|
|
|
mencoder dvd://1 -oac copy -ovc divx4 -pass 1
|
|
|
|
mencoder dvd://1 -oac copy -ovc divx4 -pass 2 -vobsubout subtitles -vobsuboutindex 1 -sid 5<!--
|
2003-03-23 23:35:12 +00:00
|
|
|
--></screen>
|
|
|
|
</example>
|
|
|
|
|
|
|
|
<example>
|
|
|
|
<title>Copying a french subtitle from an MPEG file</title>
|
|
|
|
<screen>
|
|
|
|
rm subtitles.idx subtitles.sub
|
2004-01-01 14:43:46 +00:00
|
|
|
mencoder <replaceable>movie.mpg</replaceable> -ifo <replaceable>movie.ifo</replaceable> -vobsubout subtitles -vobsuboutindex 0 -vobsuboutid fr -sid 1<!--
|
2003-03-23 23:35:12 +00:00
|
|
|
--></screen>
|
|
|
|
</example>
|
|
|
|
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1 id="aspect">
|
|
|
|
<title>Preserving aspect ratio</title>
|
|
|
|
<para>
|
|
|
|
DVDs and SVCDs (i.e. MPEG1/2) files contain an aspect ratio value, which
|
2003-05-04 23:27:47 +00:00
|
|
|
describes how the player should scale the video stream, so humans won't
|
2003-03-23 23:35:12 +00:00
|
|
|
have egg heads (ex.: 480x480 + 4:3 = 640x480). However when encoding to AVI
|
|
|
|
(DivX) files, you have be aware that AVI headers don't store this value.
|
2003-05-04 23:27:47 +00:00
|
|
|
Rescaling the movie is disgusting and time consuming, there has to be a better
|
|
|
|
way!
|
2003-03-23 23:35:12 +00:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>There is</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
MPEG4 has an unique feature: the video stream can contain its needed aspect
|
2003-09-15 01:21:04 +00:00
|
|
|
ratio. Yes, just like MPEG1/2 (DVD, SVCD) and H263 files. Regretfully, there are
|
2003-03-23 23:35:12 +00:00
|
|
|
<emphasis role="bold">no</emphasis> video players outside which support this
|
2003-09-15 01:21:04 +00:00
|
|
|
attribute of MPEG4, except <application>MPlayer</application>.
|
2003-03-23 23:35:12 +00:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2004-01-21 19:25:18 +00:00
|
|
|
This feature can be used only with
|
|
|
|
<link linkend="ffmpeg"><systemitem class="library">libavcodec</systemitem></link>'s
|
2003-09-15 01:21:04 +00:00
|
|
|
<systemitem>mpeg4</systemitem> codec. Keep in mind: although
|
|
|
|
<application>MPlayer</application> will correctly play the created file,
|
|
|
|
other players will use the wrong aspect ratio.
|
2003-03-23 23:35:12 +00:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
You seriously should crop the black bands over and below the movie image.
|
2003-05-04 23:27:47 +00:00
|
|
|
See the man page for the usage of the <systemitem>cropdetect</systemitem> and
|
2003-03-23 23:35:12 +00:00
|
|
|
<systemitem>crop</systemitem> filters.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2003-09-15 01:21:04 +00:00
|
|
|
Usage
|
2004-01-01 14:43:46 +00:00
|
|
|
<screen>mencoder <replaceable>sample-svcd.mpg</replaceable> -ovc lavc -lavcopts vcodec=mpeg4:autoaspect -vf crop=714:548:0:14 -oac copy -o <replaceable>output.avi</replaceable></screen>
|
2003-03-23 23:35:12 +00:00
|
|
|
</para>
|
2003-09-15 01:21:04 +00:00
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1 id="custommatrices"><title>Custom inter/intra matrices</title>
|
|
|
|
|
|
|
|
<para>
|
2004-01-21 19:25:18 +00:00
|
|
|
With this feature of
|
|
|
|
<link linkend="ffmpeg"><systemitem class="library">libavcodec</systemitem></link>
|
|
|
|
you are able to set custom inter (I-frames/key frames) and intra
|
|
|
|
(P-frames/predicted frames) matrices. It is supported by many of the codecs:
|
2003-09-15 01:21:04 +00:00
|
|
|
<systemitem>mpeg1video</systemitem> and <systemitem>mpeg2video</systemitem>
|
|
|
|
are reported as working.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2004-01-02 23:07:07 +00:00
|
|
|
A typical usage of this feature is to set the matrices preferred by the
|
2003-09-15 01:21:04 +00:00
|
|
|
<ulink url="http://www.kvcd.net/">KVCD</ulink> specifications.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The <emphasis role="bold">KVCD "Notch" Quantization Matrix:</emphasis>
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Intra:
|
|
|
|
<screen>
|
|
|
|
8 9 12 22 26 27 29 34
|
|
|
|
9 10 14 26 27 29 34 37
|
|
|
|
12 14 18 27 29 34 37 38
|
|
|
|
22 26 27 31 36 37 38 40
|
|
|
|
26 27 29 36 39 38 40 48
|
|
|
|
27 29 34 37 38 40 48 58
|
|
|
|
29 34 37 38 40 48 58 69
|
|
|
|
34 37 38 40 48 58 69 79
|
|
|
|
</screen>
|
|
|
|
|
|
|
|
Inter:
|
|
|
|
<screen>
|
|
|
|
16 18 20 22 24 26 28 30
|
|
|
|
18 20 22 24 26 28 30 32
|
|
|
|
20 22 24 26 28 30 32 34
|
|
|
|
22 24 26 30 32 32 34 36
|
|
|
|
24 26 28 32 34 34 36 38
|
|
|
|
26 28 30 32 34 36 38 40
|
|
|
|
28 30 32 34 36 38 42 42
|
|
|
|
30 32 34 36 38 40 42 44
|
|
|
|
</screen>
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Usage:
|
|
|
|
<screen>
|
2004-01-01 14:43:46 +00:00
|
|
|
$ mencoder <replaceable>input.avi</replaceable> -o <replaceable>output.avi</replaceable> -oac copy -ovc lavc -lavcopts inter_matrix=...:intra_matrix=...
|
2003-09-15 01:21:04 +00:00
|
|
|
</screen>
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
<screen>
|
2004-01-01 14:43:46 +00:00
|
|
|
$ mencoder <replaceable>input.avi</replaceable> -ovc lavc -lavcopts
|
2003-09-15 01:21:04 +00:00
|
|
|
vcodec=mpeg2video:intra_matrix=8,9,12,22,26,27,29,34,9,10,14,26,27,29,34,37,
|
|
|
|
12,14,18,27,29,34,37,38,22,26,27,31,36,37,38,40,26,27,29,36,39,38,40,48,27,
|
|
|
|
29,34,37,38,40,48,58,29,34,37,38,40,48,58,69,34,37,38,40,48,58,69,79
|
|
|
|
:inter_matrix=16,18,20,22,24,26,28,30,18,20,22,24,26,28,30,32,20,22,24,26,
|
|
|
|
28,30,32,34,22,24,26,30,32,32,34,36,24,26,28,32,34,34,36,38,26,28,30,32,34,
|
|
|
|
36,38,40,28,30,32,34,36,38,42,42,30,32,34,36,38,40,42,44 -oac copy -o svcd.mpg
|
|
|
|
</screen>
|
|
|
|
</para>
|
2003-03-23 23:35:12 +00:00
|
|
|
</sect1>
|
|
|
|
|
2004-01-02 23:07:07 +00:00
|
|
|
<sect1 id="menc-feat-dvd-mpeg4">
|
|
|
|
<title>Making a high quality MPEG4 ("DivX") rip of a DVD movie</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Ripping a DVD title into a maximally high quality MPEG4 (DivX) file
|
|
|
|
involves many considerations. Below is an example of the process when
|
|
|
|
there is no file size goal (other than perhaps fitting the result into 2GB).
|
2004-01-21 19:59:33 +00:00
|
|
|
<systemitem class="library">libavcodec</systemitem>
|
2004-01-21 19:25:18 +00:00
|
|
|
will be used for the video,
|
2004-01-02 23:07:07 +00:00
|
|
|
and the audio will be copied as is without any changes.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2 id="menc-feat-dvd-mpeg4-crop">
|
|
|
|
<title>Cropping</title>
|
|
|
|
<para>
|
|
|
|
Play the DVD and run the crop detection filter
|
|
|
|
(<option>-vf cropdetect</option>) on it. This gives you a crop rectangle
|
|
|
|
to use for encoding. The reason for cropping is that many movies are
|
|
|
|
not shot in a standard DVD aspect ratio (16/9 or 4/3), or, for whatever
|
|
|
|
reason, the picture does not properly fill the frame. So you want to crop
|
|
|
|
out the pointless black bars when you rip. It also improves the quality
|
|
|
|
of the rip since the sharp edge of the black bars wastes a lot of bits.
|
|
|
|
A common aspect is 2.35, which is cinescope. Most big blockbuster
|
|
|
|
movies have this aspect ratio.
|
|
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2 id="menc-feat-dvd-mpeg4-quality">
|
|
|
|
<title>Quality level</title>
|
|
|
|
<para>
|
|
|
|
Next you need to choose the desired quality level. When there is no
|
|
|
|
need to fit the resulting file on CDs or the like, using constant
|
|
|
|
quantizing AKA constant quality is a good choice. That way each frame
|
|
|
|
is given as much bits as its needs to keep the quality at the desired
|
|
|
|
level, but multiple encoding passes are not needed. With
|
2004-01-21 19:59:33 +00:00
|
|
|
<systemitem class="library">libavcodec</systemitem>,
|
2004-01-21 19:25:18 +00:00
|
|
|
you get constant quality by using
|
2004-01-02 23:07:07 +00:00
|
|
|
<option>-lavcopts vqscale=<replaceable>N</replaceable></option>.
|
|
|
|
<option>vqscale=3</option> should give you a file below 2GB in size,
|
|
|
|
depending mainly on the movie length and video noisiness (the more
|
2004-01-21 15:25:16 +00:00
|
|
|
noise, the harder it is to compress).
|
2004-01-02 23:07:07 +00:00
|
|
|
</para></sect2>
|
|
|
|
|
|
|
|
<sect2 id="menc-feat-dvd-mpeg4-2gb">
|
|
|
|
<title>Files over 2GB</title>
|
|
|
|
<para>
|
|
|
|
If the file resulting from constant quality encoding is over 2GB big,
|
|
|
|
you will have to create an index to be able to view it properly.
|
|
|
|
Either
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem><para>
|
|
|
|
play the file with <option>-forceidx</option> to create an index
|
|
|
|
on the fly or
|
|
|
|
</para></listitem>
|
|
|
|
<listitem><para>
|
|
|
|
use <option>-saveidx</option> to write an index to a file once and
|
|
|
|
<option>-loadidx</option> to use it when playing the file.
|
|
|
|
</para></listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
If this bothers you, you may want to keep the file size below 2GB.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2004-01-12 06:30:30 +00:00
|
|
|
There are three ways to avoid this. You can try encoding again using
|
2004-01-02 23:07:07 +00:00
|
|
|
<option>vqscale=4</option> and see if both the resulting file size
|
|
|
|
and picture quality are acceptable. You can also use
|
|
|
|
<link linkend="menc-feat-divx4">2 pass encoding</link>.
|
|
|
|
As you will be copying the audio track as is and hence know its
|
|
|
|
bitrate, and you know the running time of the movie, you can
|
2004-01-21 15:25:16 +00:00
|
|
|
compute the required video bitrate to give to the
|
2004-01-02 23:07:07 +00:00
|
|
|
<option>-lavcopts vbitrate=<replaceable>bitrate</replaceable></option>
|
|
|
|
option without using
|
|
|
|
<link linkend="menc-feat-divx4">3 pass encoding</link>.
|
2004-01-12 06:30:30 +00:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The third and possibly the best option may be to slightly scale down
|
|
|
|
the resolution. The uniform slight softening and loss of detail is
|
|
|
|
visually more appealing than the blockiness and other artifacts
|
|
|
|
caused by MPEG compression. Scaling down also effectively reduces the
|
|
|
|
noise of the picture, which is good, as noise is hard to compress.
|
2004-01-02 23:07:07 +00:00
|
|
|
</para></sect2>
|
|
|
|
|
|
|
|
<sect2 id="menc-feat-dvd-mpeg4-deinterlacing">
|
|
|
|
<title>Deinterlacing</title>
|
|
|
|
<para>
|
|
|
|
If the movie is interlaced, you may want to deinterlace it as part of
|
|
|
|
the ripping. It is debatable whether deinterlacing should be done at
|
|
|
|
this stage. The benefit is that deinterlacing when converting to
|
|
|
|
MPEG4 makes compression better, and viewing easier and less CPU
|
|
|
|
intensive on computer monitors as no deinterlacing is required at
|
|
|
|
that stage.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
If deinterlacing at the ripping stage is a good idea depends on
|
|
|
|
the DVD. If the DVD is made from film, which was shot at 24 fps, you
|
|
|
|
can as well deinterlace while ripping. If, however, the original was
|
|
|
|
50/60 fps video, converting into deinterlaced 23.976/25 fps video
|
2004-01-21 15:25:16 +00:00
|
|
|
will lose information. If you do decide to deinterlace, you can further
|
2004-01-02 23:07:07 +00:00
|
|
|
experiment with different deinterlacing filters. See
|
|
|
|
<ulink url="http://www.wieser-web.de/MPlayer/">http://www.wieser-web.de/MPlayer/</ulink>
|
|
|
|
for examples. A good starting point is <option>-vf pp=fd</option>.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
If you are both cropping and deinterlacing, deinterlace
|
|
|
|
<emphasis>before</emphasis> cropping. Actually, this is not necessary
|
|
|
|
if the crop offset is vertically a multiple of 2 pixels. However with
|
2004-01-21 15:25:16 +00:00
|
|
|
some other filters, like dering, you should always crop last, so it's a
|
2004-01-02 23:07:07 +00:00
|
|
|
good habit to put the crop filter last.
|
|
|
|
</para></sect2>
|
|
|
|
|
|
|
|
<sect2 id="menc-feat-dvd-mpeg4-telecine">
|
|
|
|
<title>Inverse telecine</title>
|
|
|
|
<para>
|
|
|
|
If you are ripping a PAL DVD, which is 25 fps, you do not need to
|
|
|
|
think about the fps. Just use 25 fps. NTSC DVDs on the other hand are
|
|
|
|
29.97 fps (often rounded to 30 fps, but that is not what they are).
|
|
|
|
If the movie was shot for TV, you again do not need to touch the fps.
|
|
|
|
But if the movie was shot on film, and hence at (exactly) 24 fps,
|
|
|
|
it has been converted to 29.97 fps when making the DVD. That
|
|
|
|
conversion where 12 fields are added to each 24 frames of film is
|
|
|
|
called telecine. For more info about telecine, see a
|
|
|
|
<ulink url="http://www.google.com/search?q=telecine+field+23.976">
|
|
|
|
Google search for "telecine field 23.976"</ulink>.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
In case you have such a telecined DVD, you will want to do inverse
|
|
|
|
telecine, that is convert the movie to 23.976 fps (29.97*4/5).
|
|
|
|
Otherwise camera panning will look jerky and awful. You can use
|
|
|
|
<option>-ofps 23.976</option> for this. Anything that is shown in
|
|
|
|
theatres is shot on film and needs inverse telecine, TV shows do not.
|
|
|
|
</para></sect2>
|
|
|
|
|
|
|
|
<sect2 id="menc-feat-dvd-mpeg4-scaling">
|
|
|
|
<title>Scaling and aspect ratio</title>
|
|
|
|
<para>
|
2004-01-12 06:30:30 +00:00
|
|
|
For best quality, do not scale the movie while ripping. Scaling down
|
|
|
|
obviously loses detail, and scaling up causes artifacts and obviously
|
|
|
|
makes the file larger. Pixels in DVD movies
|
2004-01-02 23:07:07 +00:00
|
|
|
are not square, so DVD movies include info about the correct aspect
|
|
|
|
ratio. It is possible to store the aspect ratio in the MPEG4 header
|
|
|
|
of the output file. Most video players ignore this info, but
|
|
|
|
<application>MPlayer</application> honors it. So if you are only
|
|
|
|
going to use <application>MPlayer</application> for viewing the
|
|
|
|
ripped file, you do not need to scale the movie, just pass
|
|
|
|
<option>-lavcopts autoaspect</option> to
|
|
|
|
<application>MEncoder</application> and things will
|
|
|
|
automagically work right. If you must scale the movie, be
|
|
|
|
careful about getting the size right especially if you do cropping.
|
|
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2 id="menc-feat-dvd-mpeg4-summary">
|
|
|
|
<title>Summing it up</title>
|
|
|
|
<para>
|
|
|
|
With all of the above mentioned in mind, a suitable encoding command
|
|
|
|
might be
|
|
|
|
|
|
|
|
<screen>
|
|
|
|
mencoder dvd://1 -aid 128 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vqscale=3:vhq:v4mv:trell:autoaspect \
|
|
|
|
-ofps 23.976 -vf crop=720:364:0:56 -o Harry_Potter_2.avi
|
|
|
|
</screen>
|
|
|
|
|
|
|
|
Here <option>dvd://1</option> gives the DVD title to rip. Option
|
|
|
|
<option>-aid 128</option> says to use audio track 128, and
|
|
|
|
<option>-oac copy</option> to copy it as is. You'll have to use
|
|
|
|
<application>MPlayer</application> to find out the right values for
|
|
|
|
these options.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Options <option>vhq:v4mv:trell</option> for
|
|
|
|
<option>-lavcopts</option> improve quality versus bitrate, but make
|
|
|
|
encoding take longer. Especially <option>trell</option> slows
|
|
|
|
encoding down but also increases quality visibly. If you want to
|
|
|
|
deinterlace, add a <option>pp</option> filter to
|
|
|
|
<option>-vf</option>, for example
|
|
|
|
<option>-vf pp=fd,crop=720:364:0:56</option> (in that order). If you don't need
|
|
|
|
inverse telecine, leave out the <option>-ofps 23.976</option>.
|
|
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
</sect1>
|
|
|
|
|
2003-03-23 23:35:12 +00:00
|
|
|
</chapter>
|