mirror of
https://github.com/mpv-player/mpv
synced 2024-12-30 11:02:10 +00:00
856011188d
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23342 b3059339-0415-0410-9bf9-f77b7e298cf2
776 lines
25 KiB
XML
776 lines
25 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<chapter id="mencoder">
|
|
<title>Basic usage of <application>MEncoder</application></title>
|
|
|
|
<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 archives
|
|
<ulink url="http://lists.mplayerhq.hu/pipermail/mencoder-users/">here</ulink>
|
|
and especially for older things also
|
|
<ulink url="http://lists.mplayerhq.hu/pipermail/mplayer-users/">here</ulink>
|
|
for a wealth of discussions about all aspects of and problems related to
|
|
encoding with <application>MEncoder</application>.
|
|
</para>
|
|
|
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
|
|
|
|
|
<sect1 id="menc-feat-selecting-codec">
|
|
<title>Selecting codecs and container formats</title>
|
|
|
|
<para>
|
|
Audio and video codecs for encoding are selected with the
|
|
<option>-oac</option> and <option>-ovc</option> options, respectively.
|
|
Type for instance:
|
|
<screen>mencoder -ovc help</screen>
|
|
to list all video codecs supported by the version of
|
|
<application>MEncoder</application> on your machine.
|
|
The following choices are available:
|
|
</para>
|
|
|
|
<para>
|
|
Audio Codecs:
|
|
<informaltable frame="all">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row><entry>Audio codec name</entry><entry>Description</entry></row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>mp3lame</entry>
|
|
<entry>encode to VBR, ABR or CBR MP3 with LAME</entry>
|
|
</row>
|
|
<row>
|
|
<entry>lavc</entry>
|
|
<entry>use one of <link linkend="menc-feat-enc-libavcodec-audio-codecs"><systemitem class="library">libavcodec</systemitem>'s audio codecs</link></entry>
|
|
</row>
|
|
<row>
|
|
<entry>faac</entry>
|
|
<entry>FAAC AAC audio encoder</entry>
|
|
</row>
|
|
<row>
|
|
<entry>toolame</entry>
|
|
<entry>MPEG Audio Layer 2 encoder</entry>
|
|
</row>
|
|
<row>
|
|
<entry>twolame</entry>
|
|
<entry>MPEG Audio Layer 2 encoder based on tooLAME</entry>
|
|
</row>
|
|
<row>
|
|
<entry>pcm</entry>
|
|
<entry>uncompressed PCM audio</entry>
|
|
</row>
|
|
<row>
|
|
<entry>copy</entry>
|
|
<entry>do not reencode, just copy compressed frames</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</para>
|
|
|
|
<para>
|
|
Video codecs:
|
|
<informaltable frame="all">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row><entry>Video codec name</entry><entry>Description</entry></row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>lavc</entry>
|
|
<entry>use one of <link linkend="menc-feat-enc-libavcodec-video-codecs"><systemitem class="library">libavcodec</systemitem>'s video codecs</link></entry>
|
|
</row>
|
|
<row>
|
|
<entry>xvid</entry>
|
|
<entry>Xvid, MPEG-4 Advanced Simple Profile (ASP) codec</entry>
|
|
</row>
|
|
<row>
|
|
<entry>x264</entry>
|
|
<entry>x264, MPEG-4 Advanced Video Coding (AVC), AKA H.264 codec</entry>
|
|
</row>
|
|
<row>
|
|
<entry>nuv</entry>
|
|
<entry>nuppel video, used by some realtime applications</entry>
|
|
</row>
|
|
<row>
|
|
<entry>raw</entry>
|
|
<entry>uncompressed video frames</entry>
|
|
</row>
|
|
<row>
|
|
<entry>copy</entry>
|
|
<entry>do not reencode, just copy compressed frames</entry>
|
|
</row>
|
|
<row>
|
|
<entry>frameno</entry>
|
|
<entry>used for 3-pass encoding (not recommended)</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</para>
|
|
|
|
<para>
|
|
Output container formats are selected with the <option>-of</option>
|
|
option.
|
|
Type:
|
|
<screen>mencoder -of help</screen>
|
|
to list all containers supported by the version of
|
|
<application>MEncoder</application> on your machine.
|
|
The following choices are available:
|
|
</para>
|
|
|
|
<para>
|
|
Container formats:
|
|
<informaltable frame="all">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row><entry>Container format name</entry><entry>Description</entry></row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>lavf</entry>
|
|
<entry>one of the containers supported by
|
|
<systemitem class="library">libavformat</systemitem></entry>
|
|
</row>
|
|
<row>
|
|
<entry>avi</entry>
|
|
<entry>Audio-Video Interleaved</entry>
|
|
</row>
|
|
<row>
|
|
<entry>mpeg</entry>
|
|
<entry>MPEG-1 and MPEG-2 PS</entry>
|
|
</row>
|
|
<row>
|
|
<entry>rawvideo</entry>
|
|
<entry>raw video stream (no muxing - one video stream only)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>rawaudio</entry>
|
|
<entry>raw audio stream (no muxing - one audio stream only)</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
The AVI container is the native container format for
|
|
<application>MEncoder</application>, which means that it's the one that
|
|
is best handled, and the one for which <application>MEncoder</application>
|
|
was designed.
|
|
As noted above, other container formats are usable, but you may
|
|
experience problems when using them.
|
|
</para>
|
|
|
|
<para>
|
|
<systemitem class="library">libavformat</systemitem> containers:
|
|
</para>
|
|
|
|
<para>
|
|
If you selected <systemitem class="library">libavformat</systemitem>
|
|
to do the muxing of the output file (by using the <option>-of lavf</option>),
|
|
the appropriate container format will be determined by the file extension
|
|
of the output file.
|
|
You may force a particular container format with
|
|
<systemitem class="library">libavformat</systemitem>'s
|
|
<option>format</option> option.
|
|
|
|
<informaltable frame="all">
|
|
<tgroup cols="2">
|
|
<thead><row>
|
|
<entry><systemitem class="library">libavformat</systemitem> container name</entry>
|
|
<entry>Description</entry>
|
|
</row></thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>mpg</entry>
|
|
<entry>MPEG-1 and MPEG-2 PS</entry>
|
|
</row>
|
|
<row>
|
|
<entry>asf</entry>
|
|
<entry>Advanced Streaming Format</entry>
|
|
</row>
|
|
<row>
|
|
<entry>avi</entry>
|
|
<entry>Audio-Video Interleaved</entry>
|
|
</row>
|
|
<row>
|
|
<entry>wav</entry>
|
|
<entry>Waveform Audio</entry>
|
|
</row>
|
|
<row>
|
|
<entry>swf</entry>
|
|
<entry>Macromedia Flash</entry>
|
|
</row>
|
|
<row>
|
|
<entry>flv</entry>
|
|
<entry>Macromedia Flash video</entry>
|
|
</row>
|
|
<row>
|
|
<entry>rm</entry>
|
|
<entry>RealMedia</entry>
|
|
</row>
|
|
<row>
|
|
<entry>au</entry>
|
|
<entry>SUN AU</entry>
|
|
</row>
|
|
<row>
|
|
<entry>nut</entry>
|
|
<entry>NUT open container (experimental and not yet spec-compliant)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>mov</entry>
|
|
<entry>QuickTime</entry>
|
|
</row>
|
|
<row>
|
|
<entry>mp4</entry>
|
|
<entry>MPEG-4 format</entry>
|
|
</row>
|
|
<row>
|
|
<entry>dv</entry>
|
|
<entry>Sony Digital Video container</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
As you can see, <systemitem class="library">libavformat</systemitem>
|
|
allows <application>MEncoder</application> to mux into a considerable
|
|
variety of containers.
|
|
Unfortunately, as <application>MEncoder</application> was not designed
|
|
from the beginning to support container formats other than AVI,
|
|
your should really be paranoid about the resulting file.
|
|
Please check to be sure that the audio/video synchronization is OK
|
|
and that the file can be played correctly by players other than
|
|
<application>MPlayer</application>.
|
|
</para>
|
|
|
|
<example id="encode_to_macromedia_flash_format">
|
|
<title>encode to Macromedia Flash format</title>
|
|
<para>
|
|
Creating a Macromedia Flash video suitable for playback in a web browser
|
|
with the Macromedia Flash plugin:
|
|
<screen>
|
|
mencoder <replaceable>input.avi</replaceable> -o <replaceable>output.flv</replaceable> -of lavf \
|
|
-oac mp3lame -lameopts abr:br=56 -srate 22050 -ovc lavc \
|
|
-lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3
|
|
</screen>
|
|
</para>
|
|
</example>
|
|
|
|
</sect1>
|
|
|
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
|
|
|
|
|
<sect1 id="menc-feat-selecting-input">
|
|
<title>Selecting input file or device</title>
|
|
|
|
<para>
|
|
<application>MEncoder</application> can encode from files or directly
|
|
from a DVD or VCD disc.
|
|
Simply include the filename on the command line to encode from a file,
|
|
or <option>dvd://</option><replaceable>titlenumber</replaceable> or
|
|
<option>vcd://</option><replaceable>tracknumber</replaceable> to encode
|
|
from a DVD title or VCD track.
|
|
If you have already copied a DVD to your hard drive (you can use a tool
|
|
such as <application>dvdbackup</application>, available on most systems),
|
|
and wish to encode from the copy, you should still use the
|
|
<option>dvd://</option> syntax, along with <option>-dvd-device</option>
|
|
followed by the path to the copied DVD root.
|
|
|
|
The <option>-dvd-device</option> and <option>-cdrom-device</option>
|
|
options can also be used to override the paths to the device nodes
|
|
for reading directly from disc, if the defaults of
|
|
<filename>/dev/dvd</filename> and <filename>/dev/cdrom</filename> do
|
|
not work on your system.
|
|
</para>
|
|
|
|
<para>
|
|
When encoding from DVD, it is often desirable to select a chapter or
|
|
range of chapters to encode.
|
|
You can use the <option>-chapter</option> option for this purpose.
|
|
For example, <option>-chapter</option> <replaceable>1-4</replaceable>
|
|
will only encode chapters 1 through 4 from the DVD.
|
|
This is especially useful if you will be making a 1400 MB encode
|
|
targetted for two CDs, since you can ensure the split occurs exactly
|
|
at a chapter boundary rather than in the middle of a scene.
|
|
</para>
|
|
|
|
<para>
|
|
If you have a supported TV capture card, you can also encode from the
|
|
TV-in device.
|
|
Use <option>tv://</option><replaceable>channelnumber</replaceable> as
|
|
the filename, and <option>-tv</option> to configure various capture
|
|
settings.
|
|
DVB input works similarly.
|
|
</para>
|
|
</sect1>
|
|
|
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
|
|
|
|
|
<sect1 id="menc-feat-mpeg4">
|
|
<title>Encoding two pass MPEG-4 ("DivX")</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 or rather just not create any video
|
|
by redirecting it into <filename>/dev/null</filename>).
|
|
In the second pass, the two 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>
|
|
|
|
<example id="copy_audio_track">
|
|
<title>copy audio track</title>
|
|
<para>
|
|
Two pass encode of the second track a DVD to an MPEG-4 ("DivX")
|
|
AVI while copying the audio track.
|
|
<screen>
|
|
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o /dev/null
|
|
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \
|
|
-oac copy -o <replaceable>output.avi</replaceable>
|
|
</screen>
|
|
</para>
|
|
</example>
|
|
|
|
<example id="encode_audio_track">
|
|
<title>encode audio track</title>
|
|
<para>
|
|
Two pass encode of a DVD to an MPEG-4 ("DivX") AVI while encoding
|
|
the audio track to MP3.
|
|
Be careful using this method as it may lead to audio/video desync in
|
|
some cases.
|
|
<screen>
|
|
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 \
|
|
-oac mp3lame -lameopts vbr=3 -o /dev/null
|
|
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \
|
|
-oac mp3lame -lameopts vbr=3 -o <replaceable>output.avi</replaceable>
|
|
</screen>
|
|
</para>
|
|
</example>
|
|
</sect1>
|
|
|
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
|
|
|
|
|
<sect1 id="menc-feat-handheld-psp">
|
|
<title>Encoding to Sony PSP video format</title>
|
|
|
|
<para>
|
|
<application>MEncoder</application> supports encoding to Sony PSP's video
|
|
format, but, depending on the revision of the PSP software, the constraints
|
|
may differ.
|
|
You should be safe if you respect the following constraints:
|
|
<itemizedlist>
|
|
<listitem><para>
|
|
<emphasis role="bold">Bitrate</emphasis>: it should not exceed 1500kbps,
|
|
however, past versions supported pretty much any bitrate as long as the
|
|
header claimed it was not too high.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">Dimensions</emphasis>: the width and height of the
|
|
PSP video should be multiples of 16, and the product width * height must
|
|
be <= 64000.
|
|
Under some circumstances, it may be possible for the PSP to play higher
|
|
resolutions.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">Audio</emphasis>: its samplerate should be 24kHz
|
|
for MPEG-4 videos, and 48kHz for H.264.
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<example id="encode_for_psp">
|
|
<title>encode for PSP</title>
|
|
<para>
|
|
<screen>
|
|
mencoder -ofps 30000/1001 -af lavcresample=24000 -vf harddup -of lavf \
|
|
-oac lavc -ovc lavc -lavcopts aglobal=1:vglobal=1:vcodec=mpeg4:acodec=aac \
|
|
-lavfopts format=psp:i_certify_that_my_video_stream_does_not_use_b_frames \
|
|
<replaceable>input.video</replaceable> -o <replaceable>output.psp</replaceable>
|
|
</screen>
|
|
Note that you can set the title of the video with
|
|
<option>-info name=<replaceable>MovieTitle</replaceable></option>.
|
|
</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
|
|
files.
|
|
Usually, when you are using MPEG-1 or MPEG-2 video, it is because you are
|
|
encoding for a constrained format such as SVCD, VCD, or DVD.
|
|
The specific requirements for these formats are explained in the
|
|
<link linkend="menc-feat-vcd-dvd"> VCD and DVD creation guide</link>
|
|
section.
|
|
</para>
|
|
|
|
<para>
|
|
To change <application>MEncoder</application>'s output file format,
|
|
use the <option>-of mpeg</option> option.
|
|
</para>
|
|
|
|
<informalexample>
|
|
<para>
|
|
Example:
|
|
<screen>
|
|
mencoder <replaceable>input.avi</replaceable> -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video \
|
|
-oac copy <replaceable>other_options</replaceable> -o <replaceable>output.mpg</replaceable>
|
|
</screen>
|
|
Creating an MPEG-1 file suitable to be played on systems with minimal
|
|
multimedia support, such as default Windows installs:
|
|
<screen>
|
|
mencoder <replaceable>input.avi</replaceable> -of mpeg -mpegopts format=mpeg1:tsaf:muxrate=2000 \
|
|
-o <replaceable>output.mpg</replaceable> -oac lavc -lavcoptc acodec=mp2:abitrate=224 -ovc lavc \
|
|
-lavcopts vcodec=mpeg1video:vbitrate=1152:keyint=15:mbd=2:aspect=4/3
|
|
</screen>
|
|
Same, but using <systemitem class="library">libavformat</systemitem> MPEG muxer:
|
|
<screen>
|
|
mencoder <replaceable>input.avi</replaceable> -o <replaceable>VCD.mpg</replaceable> -ofps 25 -vf scale=352:288,harddup -of lavf \
|
|
-lavfopts format=mpg:i_certify_that_my_video_stream_does_not_use_b_frames \
|
|
-oac lavc -lavcopts acodec=mp2:abitrate=224 -ovc lavc \
|
|
-lavcopts vcodec=mpeg1video:vrc_buf_size=327:keyint=15:vrc_maxrate=1152:vbitrate=1152:vmax_b_frames=0
|
|
</screen>
|
|
</para>
|
|
</informalexample>
|
|
|
|
<note><title>Hint:</title>
|
|
<para>
|
|
If for some reason the video quality of the second pass did not
|
|
satisfy you, you may re-run your video encode with a different target
|
|
bitrate, provided that you saved the statistics file of the previous
|
|
pass.
|
|
This is possible because the statistics file's primary goal is to
|
|
record the complexity of each frame, which doesn't depend heavily on
|
|
bitrate. You should note, though, that you'll get the best results if
|
|
all passes are run with target bitrates that do not differ very much.
|
|
</para>
|
|
</note>
|
|
</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. If you wish to rescale,
|
|
read the <link linkend="aspect">Preserving aspect ratio</link> section.
|
|
</para>
|
|
|
|
<para>
|
|
The scaling process is handled by the <literal>scale</literal> video filter:
|
|
<option>-vf scale=<replaceable>width</replaceable>:<replaceable>height</replaceable></option>.
|
|
Its quality can be set with the <option>-sws</option> option.
|
|
If it is not specified, <application>MEncoder</application> will use 2: bicubic.
|
|
</para>
|
|
|
|
<para>
|
|
Usage:
|
|
<screen>
|
|
mencoder <replaceable>input.mpg</replaceable> -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell \
|
|
-vf scale=640:480 -o <replaceable>output.avi</replaceable>
|
|
</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
|
|
MPEG-1 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,
|
|
WAV) and mux it into the output stream. Use the
|
|
<option>-audiofile <replaceable>filename</replaceable></option> option
|
|
for this.
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
Using <option>-oac copy</option> to copy from one container format to
|
|
another may require the use of <option>-fafmttag</option> to keep the
|
|
audio format tag of the original file.
|
|
For example, if you are converting an NSV file with AAC audio to an AVI
|
|
container, the audio format tag will be incorrect and it will have to
|
|
be changed. For a list of audio format tags, check
|
|
<filename>codecs.conf</filename>.
|
|
</para>
|
|
|
|
<para>
|
|
Example:
|
|
<screen>
|
|
mencoder <replaceable>input.nsv</replaceable> -oac copy -fafmttag 0x706D \
|
|
-ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -o <replaceable>output.avi</replaceable>
|
|
</screen>
|
|
</para>
|
|
</sect1>
|
|
|
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
|
|
|
|
|
<sect1 id="menc-feat-enc-images">
|
|
<title>Encoding from multiple input image files (JPEG, PNG, TGA, etc.)</title>
|
|
|
|
<para>
|
|
<application>MEncoder</application> is capable of creating movies from one
|
|
or more JPEG, PNG, TGA, or other image 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 is in the man page.
|
|
|
|
<informalexample>
|
|
<para>
|
|
Creating an MPEG-4 file from all the JPEG files in the current directory:
|
|
<screen>
|
|
mencoder mf://*.jpg -mf w=800:h=600:fps=25:type=jpg -ovc lavc \
|
|
-lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o <replaceable>output.avi</replaceable>
|
|
</screen>
|
|
</para>
|
|
</informalexample>
|
|
|
|
<informalexample>
|
|
<para>
|
|
Creating an MPEG-4 file from some JPEG files in the current directory:
|
|
<screen>
|
|
mencoder mf://<replaceable>frame001.jpg,frame002.jpg</replaceable> -mf w=800:h=600:fps=25:type=jpg \
|
|
-ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o <replaceable>output.avi</replaceable>
|
|
</screen>
|
|
</para>
|
|
</informalexample>
|
|
|
|
<informalexample>
|
|
<para>
|
|
Creating an MPEG-4 file from explicit list of JPEG files (list.txt in current
|
|
directory contains the list of files to use as source, one per line):
|
|
<screen>
|
|
mencoder mf://<replaceable>@list.txt</replaceable> -mf w=800:h=600:fps=25:type=jpg \
|
|
-ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o <replaceable>output.avi</replaceable>
|
|
</screen>
|
|
</para>
|
|
</informalexample>
|
|
|
|
You can mix different types of images, regardless of the method you use
|
|
— individual filenames, wildcard or file with list — provided of
|
|
course they have the same dimensions.
|
|
So you can e.g. take title frame from PNG file,
|
|
and then put a slideshow of your JPEG photos.
|
|
|
|
<informalexample>
|
|
<para>
|
|
Creating a Motion JPEG (MJPEG) file from all the JPEG files in the current
|
|
directory:
|
|
<screen>
|
|
mencoder mf://*.jpg -mf w=800:h=600:fps=25:type=jpg -ovc copy -oac copy -o <replaceable>output.avi</replaceable>
|
|
</screen>
|
|
</para>
|
|
</informalexample>
|
|
|
|
<informalexample>
|
|
<para>
|
|
Creating an uncompressed file from all the PNG files in the current directory:
|
|
<screen>
|
|
mencoder mf://*.png -mf w=800:h=600:fps=25:type=png -ovc raw -oac copy -o <replaceable>output.avi</replaceable>
|
|
</screen>
|
|
</para>
|
|
</informalexample>
|
|
|
|
<note><para>
|
|
Width must be integer multiple of 4, it is 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
|
|
directory:
|
|
<screen>
|
|
mencoder mf://*.png -mf w=800:h=600:fps=25:type=png -ovc copy -oac copy -o <replaceable>output.avi</replaceable><!--
|
|
--></screen>
|
|
</para>
|
|
</informalexample>
|
|
|
|
<informalexample>
|
|
<para>
|
|
Creating a Motion TGA (MTGA) file from all the TGA files in the current
|
|
directory:
|
|
<screen>
|
|
mencoder mf://*.tga -mf w=800:h=600:fps=25:type=tga -ovc copy -oac copy -o <replaceable>output.avi</replaceable><!--
|
|
--></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
|
|
a DVD into VOBsub formatted files. They consist of a pair of files ending in
|
|
<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 id="copying_two_subtitles_from_a_dvd_while_doing_two_pass_encoding">
|
|
<title>Copying two subtitles from a DVD while doing two pass encoding</title>
|
|
<screen>
|
|
rm <replaceable>subtitles.idx</replaceable> <replaceable>subtitles.sub</replaceable>
|
|
mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 \
|
|
-vobsubout <replaceable>subtitles</replaceable> -vobsuboutindex 0 -sid 2
|
|
mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \
|
|
-vobsubout <replaceable>subtitles</replaceable> -vobsuboutindex 1 -sid 5<!--
|
|
--></screen>
|
|
</example>
|
|
|
|
<example id="copying_a_french_subtitle_from_an_mpeg_file">
|
|
<title>Copying a French subtitle from an MPEG file</title>
|
|
<screen>
|
|
rm <replaceable>subtitles.idx</replaceable> <replaceable>subtitles.sub</replaceable>
|
|
mencoder <replaceable>movie.mpg</replaceable> -ifo <replaceable>movie.ifo</replaceable> -vobsubout <replaceable>subtitles</replaceable> -vobsuboutindex 0 \
|
|
-vobsuboutid fr -sid 1 -nosound -ovc copy
|
|
</screen>
|
|
</example>
|
|
</sect1>
|
|
|
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
|
|
|
|
|
<sect1 id="aspect">
|
|
<title>Preserving aspect ratio</title>
|
|
|
|
<para>
|
|
DVDs and SVCDs (i.e. MPEG-1/2) files contain an aspect ratio value, which
|
|
describes how the player should scale the video stream, so humans will not
|
|
have egg heads (ex.: 480x480 + 4:3 = 640x480). However when encoding to AVI
|
|
(DivX) files, you have to be aware that AVI headers do not store this value.
|
|
Rescaling the movie is disgusting and time consuming, there has to be a better
|
|
way!
|
|
</para>
|
|
|
|
<para>There is</para>
|
|
|
|
<para>
|
|
MPEG-4 has a unique feature: the video stream can contain its needed aspect
|
|
ratio. Yes, just like MPEG-1/2 (DVD, SVCD) and H.263 files. Regretfully, there
|
|
are few video players apart from <application>MPlayer</application> that
|
|
support this MPEG-4 attribute.
|
|
</para>
|
|
|
|
<para>
|
|
This feature can be used only with
|
|
<link linkend="ffmpeg"><systemitem class="library">libavcodec</systemitem></link>'s
|
|
<systemitem>mpeg4</systemitem> codec. Keep in mind: although
|
|
<application>MPlayer</application> will correctly play the created file,
|
|
other players may use the wrong aspect ratio.
|
|
</para>
|
|
|
|
<para>
|
|
You seriously should crop the black bands over and below the movie image.
|
|
See the man page for the usage of the <systemitem>cropdetect</systemitem> and
|
|
<systemitem>crop</systemitem> filters.
|
|
</para>
|
|
|
|
<para>
|
|
Usage
|
|
<screen>mencoder <replaceable>sample-svcd.mpg</replaceable> -vf crop=714:548:0:14 -oac copy -ovc lavc \
|
|
-lavcopts vcodec=mpeg4:mbd=2:trell:autoaspect -o <replaceable>output.avi</replaceable></screen>
|
|
</para>
|
|
</sect1>
|
|
|
|
</chapter>
|