changeset 15926:e51e67f19eff

Documentation for VCD/SVCD/DVD encoding, patch by Brendan McCarthy < bmccarthy AH iinet POUM net POUM au>
author gpoirier
date Wed, 06 Jul 2005 08:39:57 +0000
parents 5e1ea4b159d4
children fa2281c94e7e
files DOCS/xml/en/mencoder.xml
diffstat 1 files changed, 604 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/DOCS/xml/en/mencoder.xml	Wed Jul 06 08:15:46 2005 +0000
+++ b/DOCS/xml/en/mencoder.xml	Wed Jul 06 08:39:57 2005 +0000
@@ -2767,6 +2767,610 @@
 </sect2>
 </sect1>
 
+<sect1 id="menc-feat-vcd-dvd">
+<title>Using MEncoder to create VCD/SVCD/DVD-compliant files.</title>
+
+<sect2 id="menc-feat-vcd-dvd-constraints">
+<title>Format Constraints</title>
+<para>
+  <application>MEncoder</application> is capable of creating VCD, SCVD
+  and DVD format MPEG files using the
+  <systemitem class="library">libavcodec</systemitem> library.
+  These files can then be used in conjunction with
+  <ulink url="http://www.gnu.org/software/vcdimager/vcdimager.html">vcdimager</ulink>
+  or
+  <ulink url="http://dvdauthor.sourceforge.net/">dvdauthor</ulink>
+  to create discs that will play on a standard set-top player.
+</para>
+
+<para>
+  The DVD, SVCD, and VCD formats are subject to heavy constraints.
+  Only a small selection of encoded picture sizes and aspect ratios are
+  available.
+  If your movie does not already meet these requirements, you may have
+  to scale,crop or add black borders to the picture to make it
+  compliant.
+</para>
+
+<sect3 id="menc-feat-vcd-dvd-constraints-resolution">
+<title>Format Constraints</title>
+
+<informaltable frame="all">
+<tgroup cols="9">
+<thead>
+    <row>
+        <entry>Format</entry>
+        <entry>Resolution</entry>
+        <entry>V. Codec</entry>
+        <entry>V. Bitrate</entry>
+        <entry>Sample Rate</entry>
+        <entry>A. Codec</entry>
+        <entry>A. Bitrate</entry>
+        <entry>FPS</entry>
+        <entry>Aspect</entry>
+    </row>
+</thead>
+<tbody>
+    <row>
+        <entry>NTSC DVD</entry>
+        <entry>720x480, 704x480, 352x480, 352x240</entry> 
+        <entry>MPEG-2</entry>
+        <entry>9800 kbps</entry>
+        <entry>48000 Hz</entry>
+        <entry>AC3,PCM</entry>
+        <entry>1536 kbps</entry>
+        <entry>23.976, 29.97</entry>
+        <entry>4:3, 16:9 (only for 720x480)</entry>
+    </row>
+    <row>
+        <entry>NTSC DVD</entry>
+        <entry>352x240*</entry> 
+        <entry>MPEG-1</entry>
+        <entry>1856 kbps</entry>
+        <entry>48000 Hz</entry>
+        <entry>AC3,PCM</entry>
+        <entry>1536 kbps</entry>
+        <entry>23.976, 29.97</entry>
+        <entry>4:3, 16:9</entry>
+    </row>
+    <row>
+        <entry>NTSC SVCD</entry>
+        <entry>480x480</entry>
+        <entry>MPEG-2</entry>
+        <entry>2600 kbps</entry>
+        <entry>44100 Hz</entry>
+        <entry>MP2</entry>
+        <entry>384 kbps</entry>
+        <entry>29.97</entry>
+        <entry>4:3</entry>
+    </row>
+    <row>
+        <entry>NTSC VCD</entry>
+        <entry>352x240</entry>
+        <entry>MPEG-1</entry>
+        <entry>1150 kbps</entry>
+        <entry>44100 Hz</entry>
+        <entry>MP2</entry>
+        <entry>224 kbps</entry>
+        <entry>23.976, 29.97</entry>
+        <entry>4:3</entry>
+    </row>
+    <row>
+        <entry>PAL DVD</entry>
+        <entry>720x576, 704x576, 352x576, 352x288</entry>
+        <entry>MPEG-2</entry>
+        <entry>9800 kbps</entry>
+        <entry>48000 Hz</entry>
+        <entry>MP2,AC3,PCM</entry>
+        <entry>1536 kbps</entry>
+        <entry>25</entry>
+        <entry>4:3, 16:9 (only for 720x576)</entry>
+    </row>
+    <row>
+        <entry>PAL DVD</entry>
+        <entry>352x288*</entry>
+        <entry>MPEG-1</entry>
+        <entry>1856 kbps</entry>
+        <entry>48000 Hz</entry>
+        <entry>MP2,AC3,PCM</entry>
+        <entry>1536 kbps</entry>
+        <entry>25</entry>
+        <entry>4:3, 16:9</entry>
+    </row>
+    <row>
+        <entry>PAL SVCD</entry>
+        <entry>480x576</entry>
+        <entry>MPEG-2</entry>
+        <entry>2600 kbps</entry>
+        <entry>44100 Hz</entry>
+        <entry>MP2</entry>
+        <entry>384 kbps</entry>
+        <entry>25</entry>
+        <entry>4:3</entry>
+    </row>
+    <row>
+        <entry>PAL VCD</entry>
+        <entry>352x288</entry>
+        <entry>MPEG-1</entry>
+        <entry>1150 kbps</entry>
+        <entry>44100 Hz</entry>
+        <entry>MP2</entry>
+        <entry>224 kbps</entry>
+        <entry>25</entry>
+        <entry>4:3</entry>
+    </row>
+</tbody>
+</tgroup>
+</informaltable>
+<para>
+  * These resolutions are rarely used for DVDs because they are fairly low
+  quality.
+</para>
+
+<para>
+  If your movie has 2.35:1 aspect (most recent action movies), you will
+  have to add black borders or crop the movie down to 16:9 to make a DVD
+  or VCD.
+  If you add black borders, try to align them at 16-pixel boundaries in
+  order to minimize the impact on encoding performance.
+  Thankfully DVD has sufficiently excessive bitrate that you do not have
+  to worry too much about encoding efficiency, but SVCD and VCD are
+  highly bitrate-starved and require effort to obtain acceptable quality.
+</para>
+</sect3>
+
+<sect3 id="menc-feat-vcd-dvd-constraints-gop">
+<title>GOP Size Constraints</title>
+<para>
+  DVD, VCD, and SVCD also constrain you to relatively low 
+  GOP (Group of Pictures) sizes.
+  For 30 fps material the largest allows GOP size is 18.
+  For 25 or 25 fps, the maximum is 15.
+  The GOP size is set using the <option>keyint</option> option.
+</para>
+</sect3>
+
+<sect3 id="menc-feat-vcd-dvd-constraints-bitrate">
+<title>Bitrate Constraints</title>
+<para>
+  VCD video is required to be CBR at 1152 kbps.
+  This highly limiting constraint also comes along with an extremly low vbv
+  buffer size of 327 kilobits.
+  SVCD allows varying video bitrates up to 2500 kbps, and a somewhat less 
+  restrictive vbv buffer size of 917 kilobits is allowed.
+  DVD video bitrates may range anywhere up to 9800 kbps (though typical
+  bitrates are about half that), and the vbv buffer size is 1835 kilobits.
+</para>
+</sect3>
+</sect2>
+
+<sect2 id="menc-feat-vcd-dvd-output">
+<title>Output Options</title>
+<para>
+  <application>MEncoder</application> has options to control the output
+  format.
+  Using these options we can instruct it to create the correct type of
+  file.
+</para>
+
+<para>
+  The options for VCD and SVCD are called xvcd and xsvcd, because they
+  are extended formats.
+  They are not strictly compliant, mainly because the output does not
+  contain scan offsets.
+  If you need to generate an SVCD image, you  should pass the output file
+  to
+  <ulink url="http://www.gnu.org/software/vcdimager/vcdimager.html">vcdimager</ulink>.
+</para>
+
+<para>
+  VCD:
+  <screen>
+  -of mpeg -mpegopts format=xvcd
+  </screen>
+</para>
+
+<para>
+  SVCD:
+  <screen>
+  -of mpeg -mpegopts format=xsvcd
+  </screen>
+</para>
+
+<para>
+  DVD:
+  <screen>
+  -of mpeg -mpegopts format=dvd
+  </screen>
+</para>
+
+<sect3 id="menc-feat-vcd-dvd-output-aspect">
+<title>Aspect Ratio</title>
+<para>
+  The aspect argument of <option>-lavcopts</option> is used to encode
+  the aspect ratio of the file.
+  During playback the aspect ratio is used to restore the video to the
+  correct size.
+</para>
+
+<para>
+  16:9 or "Widescreen"
+  <screen>
+  -lavcopts aspect=16/9
+  </screen>
+</para>
+
+<para>
+  4:3 or "Fullscreen"
+  <screen>
+  -lavcopts aspect=4/3
+  </screen>
+</para>
+
+<para>
+  2.35:1 or "Cinemascope" NTSC
+  <screen>
+  -vf scale=720:368,expand=720:480 -lavcopts aspect=16/9
+  </screen>
+  To calculate the correct scaling size, use the expanded NTSC width of
+  854/2.35 = 368
+</para>
+
+<para>
+  2.35:1 or "Cinemascope" PAL
+  <screen>
+  -vf scale="720:432,expand=720:576 -lavcopts aspect=16/9
+  </screen>
+  To calculate the correct scaling size, use the expanded PAL width of
+  1024/2.35 = 432
+</para>
+
+</sect3>
+
+<sect3 id="menc-feat-vcd-dvd-output-srate">
+<title>Sample Rate Conversion</title>
+<para>
+  If the audio sample rate in the original file is not the same as
+  required by the target format, sample rate conversion is required.
+  This is acheived using the <option>-srate</option> and 
+  <option>-af lavcresample</option> options together.
+  </para>
+  <para>
+  DVD:
+  <screen>
+  -srate 48000 -af lavcresample=48000
+  </screen>
+</para>
+<para>
+  VCD and SVCD:
+  <screen>
+  -srate 44100 -af lavcresample=44100
+  </screen>
+  </para>
+</sect3>
+</sect2>
+
+<sect2 id="menc-feat-vcd-dvd-lavc">
+<title>Using libavcodec for VCD/SVCD/DVD Encoding</title>
+
+<sect3 id="menc-feat-vcd-dvd-lavc-intro">
+<title>Introduction</title>
+<para>
+  <systemitem class="library">libavcodec</systemitem> can be used to
+  create VCD/SVCD/DVD compliant video by using the appropriate options.
+</para>
+</sect3>
+
+<sect3 id="menc-feat-vcd-dvd-lavc-options">
+<title>lavcopts</title>
+<para>
+  This is a list of fields in <option>-lavcopts</option> that you may
+  be required to change in order to make a complaint movie for VCD, SVCD,
+  or DVD:
+</para>
+
+<itemizedlist>
+<listitem><para>
+  <emphasis role="bold">acodec</emphasis>:
+  <option>mp2</option> for VCD, SVCD, or PAL DVD;
+  <option>ac3</option> is most commonly used for DVD.
+  PCM audio may also be used for DVD, but this is mostly a big waste of
+  space.
+  Note that mp3 audio is not compliant for any of these formats, but
+  players often have no problem playing it anyway.
+</para></listitem>
+
+<listitem><para>
+  <emphasis role="bold">abitrate</emphasis>:
+  224 for VCD; up to 384 for SVCD; up to 1536 for  DVD, but commonly
+  used values range from 192 kbps for stereo to 384 kbps for 5.1 channel
+  sound.
+</para></listitem>
+
+<listitem><para>
+  <emphasis role="bold">vcodec</emphasis>:
+  <option>mpeg1video</option> for VCD;
+  <option>mpeg2video</option> for SVCD;
+  <option>mpeg2video</option> is usually used for DVD but you may also use
+  <option>mpeg1video</option> for CIF resolutions.
+</para></listitem>
+
+<listitem><para>
+  <emphasis role="bold">keyint</emphasis>:
+  Used to set the GOP size.
+  18 for 30fps material, or 15 for 25/24 fps material.
+  Commercial producers seem to prefer keyframe intervals of 12.
+  It is possible to make this much larger and still retain compatibility 
+  with most players.
+  A <option>keyint</option> of 25 should never cause any problems.
+</para></listitem>
+
+<listitem><para>
+  <emphasis role="bold">vrc_buf_size</emphasis>:
+  327 for VCD, 917 for SVCD, and 1835 for DVD.
+</para></listitem>
+
+<listitem><para>
+  <emphasis role="bold">vrc_minrate</emphasis>:
+  1152, for VCD. May be left alone for SVCD and DVD.
+</para></listitem>
+
+<listitem><para>
+  <emphasis role="bold">vrc_maxrate</emphasis>:
+  1152 for VCD; 2500 for SVCD; 9800 for DVD.
+  For SVCD and DVD, you might wish to use lower values depending on your
+  own personal preferences and requirements.
+</para></listitem>
+
+<listitem><para>
+  <emphasis role="bold">vbitrate</emphasis>:
+  1152 for VCD;
+  up to 2500 for SVCD;
+  up to 9800 for DVD.
+  For the latter two formats, vbitrate should be set based on personal
+  preference.
+  For instance, if you insist on fitting 20 or so hours on a DVD, you
+  could use vbitrate=400.
+  The resulting video quality would probably be quite bad.
+  If you are trying to squeeze out the maximum possible quality on a DVD,
+  use vbitrate=9800, but be warned that this could constrain you to less
+  than an hour of video on a single-layer DVD.
+</para></listitem>
+</itemizedlist>
+</sect3>
+
+<sect3 id="menc-feat-vcd-dvd-lavc-examples">
+<title>Examples</title>
+<para>
+  This is a typical minimum set of <option>-lavcopts</option> for
+  encoding video:
+</para>
+<para>
+  VCD:
+  <screen>
+  -lavcopts vcodec=mpeg1video:vrc_buf_size=327:vrc_minrate=1152:\
+  vrc_maxrate=1152:vbitrate=1152:keyint=15:acodec=mp2
+  </screen>
+</para>
+
+<para>
+  SVCD:
+  <screen>
+  -lavcopts vcodec=mpeg2video:vrc_buf_size=917:vrc_maxrate=2500:vbitrate=1800:\
+  keyint=15:acodec=mp2
+  </screen>
+</para>
+
+<para>
+  DVD:
+  <screen>
+  -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\
+  keyint=15:acodec=ac3
+  </screen>
+</para>
+
+</sect3>
+
+<sect3 id="menc-feat-vcd-dvd-lavc-advanced">
+<title>Advanced Options</title>
+<para>
+  For higher quality encoding, you may also wish to add quality-enhancing
+  options to lavcopts, such as <option>trell</option>,
+  <option>mbd=2</option>, and others.
+  Note that <option>qpel</option> and <option>v4mv</option>, while often
+  useful with MPEG-4, are not usable in MPEG-1 or MPEG-2.
+  Also, if you are trying to make a very high quality DVD encode, it may
+  be useful to add <option>dc=10</option> to lavcopts.
+  Doing so may help reduce the appearance of blocks in flat-colored areas.
+  Putting it all together, this is an example of a set of lavcopts for a
+  higher quality DVD:
+</para>
+
+<para>
+  <screen>
+  -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=8000:\
+  keyint=15:trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:predia=-10:cbp:mv0:\
+  vqmin=1:lmin=1:dc=10
+  </screen>
+</para>
+
+</sect3>
+</sect2>
+
+<sect2 id="menc-feat-vcd-dvd-audio">
+<title>Encoding Audio</title>
+<para>
+  VCD and SVCD supports MPEG-1 layer II audio, using one of
+  <systemitem class="library">toolame</systemitem>,
+  <systemitem class="library">twolame</systemitem>,
+  or <systemitem class="library">libavcodec</systemitem>'s mp2 encoder.
+  The libavcodec mp2 is far from being as good as the other two libraries,
+  however it should always be available to use.
+</para>
+
+<para>
+  For DVD audio, <systemitem class="library">libavcodec</systemitem>'s
+  AC3 codec is used.
+</para>
+
+<sect3 id="menc-feat-vcd-dvd-audio-toolame">
+<title>toolame</title>
+<para>
+  For VCD and SVCD:
+  <screen>
+  -oac toolame -toolameopts br=224
+  </screen>
+</para>
+</sect3>
+
+<sect3 id="menc-feat-vcd-dvd-audio-twolame">
+<title>twolame</title>
+<para>
+  For VCD and SVCD:
+  <screen>
+  -oac twolame -twolameopts br=224
+  </screen>
+</para>
+</sect3>
+
+<sect3 id="menc-feat-vcd-dvd-audio-lavc">
+<title>libavcodec</title>
+<para>
+  For DVD with 2 channel sound:
+  <screen>
+  -oac lavc -lavcopts acodec=ac3:abitrate=192
+  </screen>
+</para>
+<para>
+  For DVD with 5.1 channel sound:
+  <screen>
+  -channels 6 -oac lavc -lavcopts acodec=ac3:abitrate=384
+  </screen>
+</para>
+<para>
+  For VCD and SVCD:
+  <screen>
+  -oac lavc -lavcopts acodec=mp2:abitrate=224
+  </screen>
+</para>
+</sect3>
+
+</sect2>
+
+<sect2 id="menc-feat-vcd-dvd-all">
+<title>Putting it all Together</title>
+<para>
+  This section shows some complete commands for creating VCD/SVCD/DVD
+  compliant videos.
+</para>
+
+<sect3 id="menc-feat-vcd-dvd-all-pal-dvd">
+<title>PAL DVD</title>
+<para>
+  <screen>
+  mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd -vf scale=720:576,\
+  harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:\
+  vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:acodec=ac3:\
+  abitrate=192:aspect=16/9 -ofps 25 \
+  -o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable>
+  </screen>
+</para>
+</sect3>
+
+<sect3 id="menc-feat-vcd-dvd-all-ntsc-dvd">
+<title>NTSC DVD</title>
+<para>
+  <screen>
+  mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd -vf scale=720:480,\
+  harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:\
+  vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=18:acodec=ac3:\
+  abitrate=192:aspect=16/9 -ofps 30000/1001 \
+  -o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable>
+  </screen>
+</para>
+</sect3>
+
+<sect3 id="menc-feat-vcd-dvd-all-pal-ac3-copy">
+<title>PAL AVI Containing AC3 Audio to DVD</title>
+<para>
+  If the source already has AC3 audio, use -oac copy instead of re-encoding it.
+  <screen>
+  mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd -vf scale=720:576,\
+  harddup -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:\
+  vbitrate=5000:keyint=15:aspect=16/9 -ofps 25 \
+  -o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable>
+  </screen>
+</para>
+</sect3>
+
+<sect3 id="menc-feat-vcd-dvd-all-ntsc-ac3-copy">
+<title>NTSC AVI Containing AC3 Audio to DVD</title>
+<para>
+  If the source already has AC3 audio, and is NTSC @ 23.976 fps:
+  <screen>
+  mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd -vf scale=720:480,\
+  harddup -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:\
+  vbitrate=5000:keyint=15:aspect=16/9 -ofps  24000/1001 \
+  -o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable>
+  </screen>
+</para>
+</sect3>
+
+<sect3 id="menc-feat-vcd-dvd-all-pal-svcd">
+<title>PAL SVCD</title>
+<para>
+  <screen>
+  mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xsvcd -vf \
+  scale=480:576,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
+  vcodec=mpeg2video:mbd=2:keyint=15:vrc_buf_size=917:vrc_minrate=600:\
+  vbitrate=2500:vrc_maxrate=2500:acodec=mp2:abitrate=224 -ofps 25 \
+  -o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable>
+  </screen>
+</para>
+</sect3>
+
+<sect3 id="menc-feat-vcd-dvd-all-ntsc-svcd">
+<title>NTSC SVCD</title>
+<para>
+  <screen>
+  mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xsvcd  -vf \
+  scale=480:480,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
+  vcodec=mpeg2video:mbd=2:keyint=18:vrc_buf_size=917:vrc_minrate=600:\
+  vbitrate=2500:vrc_maxrate=2500:acodec=mp2:abitrate=224 -ofps 30000/1001 \
+  -o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable>
+  </screen>
+</para>
+</sect3>
+
+<sect3 id="menc-feat-vcd-dvd-all-pal-vcd">
+<title>PAL VCD</title>
+<para>
+  <screen>
+  mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xvcd -vf \
+  scale=352:288,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
+  vcodec=mpeg1video:keyint=15:vrc_buf_size=327:vrc_minrate=1152:vbitrate=1152:\
+  vrc_maxrate=1152:acodec=mp2:abitrate=224 -ofps 25 \
+  -o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable>
+  </screen>
+</para>
+</sect3>
+
+<sect3 id="menc-feat-vcd-dvd-all-ntsc-vcd">
+<title>NTSC VCD</title>
+<para>
+  <screen>
+  mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xvcd -vf \
+  scale=352:240,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
+  vcodec=mpeg1video:keyint=18:vrc_buf_size=327:vrc_minrate=1152:vbitrate=1152:\
+  vrc_maxrate=1152:acodec=mp2:abitrate=224 -ofps 30000/1001 \
+  -o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable>
+  </screen>
+</para>
+</sect3>
+
+</sect2>
+
+</sect1>
 
 <sect1 id="menc-feat-telecine">
 <title>How to deal with telecine and interlacing within NTSC DVDs</title>