diff options
Diffstat (limited to 'DOCS/xml')
-rw-r--r-- | DOCS/xml/en/bugreports.xml | 260 | ||||
-rw-r--r-- | DOCS/xml/en/documentation.xml | 106 | ||||
-rw-r--r-- | DOCS/xml/en/encoding-guide.xml | 5545 | ||||
-rw-r--r-- | DOCS/xml/en/faq.xml | 647 | ||||
-rw-r--r-- | DOCS/xml/en/install.xml | 413 | ||||
-rw-r--r-- | DOCS/xml/en/mencoder.xml | 771 | ||||
-rw-r--r-- | DOCS/xml/en/ports.xml | 833 | ||||
-rw-r--r-- | DOCS/xml/en/usage.xml | 119 | ||||
-rw-r--r-- | DOCS/xml/en/video.xml | 2301 |
9 files changed, 43 insertions, 10952 deletions
diff --git a/DOCS/xml/en/bugreports.xml b/DOCS/xml/en/bugreports.xml index 786c2516ef..dbcffcb88a 100644 --- a/DOCS/xml/en/bugreports.xml +++ b/DOCS/xml/en/bugreports.xml @@ -41,13 +41,7 @@ send that one with another mail. <title>How to fix bugs</title> <para> -If you feel have the necessary skills you are invited to have a go at fixing the -bug yourself. Or maybe you already did that? Please read -<ulink url="../../tech/patches.txt">this short document</ulink> to find out how -to get your code included in <application>MPlayer</application>. The people on -the -<ulink url="http://lists.mplayerhq.hu/mailman/listinfo/mplayer-dev-eng">MPlayer-dev-eng</ulink> -mailing list will assist you if you have questions. +OUTDATED CONTENT REMOVED </para> </sect1> @@ -59,84 +53,7 @@ mailing list will assist you if you have questions. <title>How to do regression testing using Subversion</title> <para> -A problem that can happen sometimes is 'it used to work before, now it -doesn't anymore...'. -Here is a step by step procedure to try to pinpoint when the problem -occurred. This is <emphasis role="bold">not</emphasis> for casual users. -</para> - -<para> -First, you'd need to fetch MPlayer's source tree from Subversion. -Instructions can be found in the -<ulink url="http://www.mplayerhq.hu/design7/dload.html#svn">Subversion section of the download page</ulink>. -</para> - -<para> -You will have now in the mplayer/ directory an image of the Subversion tree, on -the client side. -Now update this image to the date you want: -<screen> -cd mplayer/ -svn update -r {"2004-08-23"} -</screen> -The date format is YYYY-MM-DD HH:MM:SS. -Using this date format ensure that you will be able to extract patches -according to the date at which they were committed, as in the -<ulink url="http://lists.mplayerhq.hu/pipermail/mplayer-cvslog/">MPlayer-cvslog archive</ulink>. -</para> - -<para> -Now proceed as for a normal update: -<screen> -./configure -make -</screen> -</para> - -<para> -If any non-programmer reads this, the fastest method to get at the point -where the problem occurred is to use a binary search — that is, -search the date of the breakage by repeatedly dividing the search -interval in half. -For example, if the problem occurred in 2003, start at mid-year, then ask -"Is the problem already here?". -If yes, go back to the first of April; if not, go to the first of October, -and so on. -</para> - -<para> -If you have lot of free hard disk space (a full compile currently takes -100 MB, and around 300-350 MB if debugging symbols are enabled), copy the -oldest known working version before updating it; this will save time if -you need to go back. -(It is usually necessary to run 'make distclean' before recompiling an -earlier version, so if you do not make a backup copy of your original -source tree, you will have to recompile everything in it when you come -back to the present.) -Alternatively you may use <ulink url="http://ccache.samba.org/">ccache</ulink> -to speed up compilation. -</para> - -<para> -When you have found the day where the problem happened, continue the search -using the mplayer-cvslog archive (sorted by date) and a more precise svn -update including hour, minute and second: -<screen> -svn update -r {"2004-08-23 15:17:25"} -</screen> -This will allow you to easily find the exact patch that did it. -</para> - -<para> -If you find the patch that is the cause of the problem, you have almost won; -report about it to the -<ulink url="http://bugzilla.mplayerhq.hu/">MPlayer Bugzilla</ulink> or -subscribe to -<ulink url="http://lists.mplayerhq.hu/mailman/listinfo/mplayer-users">MPlayer-users</ulink> -and post it there. -There is a chance that the author will jump in to suggest a fix. -You may also look hard at the patch until it is coerced to reveal where -the bug is :-). +OUTDATED CONTENT REMOVED </para> </sect1> @@ -148,49 +65,7 @@ the bug is :-). <title>How to report bugs</title> <para> -First of all please try the latest Subversion version of -<application>MPlayer</application> -as your bug might already be fixed there. Development moves extremely fast, -most problems in official releases are reported within days or even hours, -so please use <emphasis role="bold">only Subversion</emphasis> to report bugs. -This includes binary packages of <application>MPlayer</application>. -Subversion instructions can be found at the bottom of -<ulink url="http://www.mplayerhq.hu/dload.html">this page</ulink> or in -the README. If this did not help please refer to the rest of the documentation. -If your problem is not known or not solvable by our instructions, -then please report the bug. -</para> - -<para> -Please do not send bug reports privately to individual developers. This is -community work and thus there might be several people interested in it. -Sometimes other users already experienced your troubles and know how to -circumvent a problem even if it is a bug in <application>MPlayer</application> -code. -</para> - -<para> -Please describe your problem in as much detail as possible. Do a little -detective work to narrow down the circumstances under which the problem occurs. -Does the bug only show up in certain situations? Is it specific to certain -files or file types? Does it occur with only one codec or is it codec -independent? Can you reproduce it with all output drivers? The more information -you provide the better are our chances at fixing your problem. Please do not -forget to also include the valuable information requested below, we will be -unable to properly diagnose your problem otherwise. -</para> - -<para> -An excellent and well written guide to asking questions in public forums is -<ulink url="http://www.catb.org/~esr/faqs/smart-questions.html">How To Ask Questions The Smart Way</ulink> -by <ulink url="http://www.catb.org/~esr/">Eric S. Raymond</ulink>. -There is another called -<ulink url="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html">How to Report Bugs Effectively</ulink> -by <ulink url="http://www.chiark.greenend.org.uk/~sgtatham/">Simon Tatham</ulink>. -If you follow these guidelines you should be able to get help. But please -understand that we all follow the mailing lists voluntarily in our free time. We -are very busy and cannot guarantee that you will get a solution for your problem -or even an answer. +OUTDATED CONTENT REMOVED </para> </sect1> @@ -202,15 +77,7 @@ or even an answer. <title>Where to report bugs</title> <para> -Subscribe to the MPlayer-users mailing list: -<ulink url="http://lists.mplayerhq.hu/mailman/listinfo/mplayer-users"/> -and send your bug report to -<ulink url="mailto:mplayer-users@mplayerhq.hu"/> where you can discuss it. -</para> - -<para> -If you prefer, you can use our brand-new -<ulink url="http://bugzilla.mplayerhq.hu/">Bugzilla</ulink> instead. +OUTDATED CONTENT REMOVED </para> <para> @@ -235,12 +102,7 @@ to subscribe to actually receive your answer. <title>What to report</title> <para> -You may need to include log, configuration or sample files in your bug report. -If some of them are quite big then it is better to upload them to our -<ulink url="ftp://upload.mplayerhq.hu/MPlayer/incoming/">FTP server</ulink> in a -compressed format (gzip and bzip2 preferred) and include only the path and file -name in your bug report. Our mailing lists have a message size limit of 80k, if -you have something bigger you have to compress or upload it. +OUTDATED CONTENT REMOVED </para> <!-- ********** --> @@ -249,57 +111,7 @@ you have something bigger you have to compress or upload it. <title>System Information</title> <para> -<itemizedlist> -<listitem><para> - Your Linux distribution or operating system and version e.g.: - <itemizedlist> - <listitem><para>Red Hat 7.1</para></listitem> - <listitem><para>Slackware 7.0 + devel packs from 7.1 ...</para></listitem> - </itemizedlist> -</para></listitem> -<listitem><para> - kernel version: - <screen>uname -a</screen> -</para></listitem> -<listitem><para> - libc version: - <screen>ls -l /lib/libc[.-]*</screen> -</para></listitem> -<listitem><para> - gcc and ld versions: - <screen> -gcc -v -ld -v<!-- - --></screen> -</para></listitem> -<listitem><para> - binutils version: - <screen>as --version</screen> -</para></listitem> -<listitem><para> - If you have problems with fullscreen mode: - <itemizedlist> - <listitem><para>Window manager type and version</para></listitem> - </itemizedlist> -</para></listitem> -<listitem><para> - If you have problems with XVIDIX: - <itemizedlist> - <listitem><para> - X colour depth: - <screen>xdpyinfo | grep "depth of root"</screen> - </para></listitem> - </itemizedlist> -</para></listitem> -<listitem><para> - If only the GUI is buggy: - <itemizedlist> - <listitem><para>GTK version</para></listitem> - <listitem><para>GLIB version</para></listitem> - <listitem><para>GUI situation in which the bug occurs</para></listitem> - </itemizedlist> -</para></listitem> -</itemizedlist> +OUTDATED CONTENT REMOVED </para> </sect2> @@ -309,39 +121,7 @@ ld -v<!-- <title>Hardware and drivers</title> <para> -<itemizedlist> -<listitem><para> - CPU info (this works on Linux only): - <screen>cat /proc/cpuinfo</screen> -</para></listitem> -<listitem><para> - Video card manufacturer and model, e.g.: - <itemizedlist> - <listitem><para>ASUS V3800U chip: nVidia TNT2 Ultra pro 32MB SDRAM</para></listitem> - <listitem><para>Matrox G400 DH 32MB SGRAM</para></listitem> - </itemizedlist> -</para></listitem> -<listitem><para> - Video driver type & version, e.g.: - <itemizedlist> - <listitem><para>X built-in driver</para></listitem> - <listitem><para>nVidia 0.9.623</para></listitem> - <listitem><para>Utah-GLX CVS 2001-02-17</para></listitem> - <listitem><para>DRI from X 4.0.3</para></listitem> - </itemizedlist> -</para></listitem> -<listitem><para> - Sound card type & driver, e.g.: - <itemizedlist> - <listitem><para>Creative SBLive! Gold with OSS driver from oss.creative.com</para></listitem> - <listitem><para>Creative SB16 with kernel OSS drivers</para></listitem> - <listitem><para>GUS PnP with ALSA OSS emulation</para></listitem> - </itemizedlist> -</para></listitem> -<listitem><para> - If in doubt include <command>lspci -vv</command> output on Linux systems. -</para></listitem> -</itemizedlist> +OUTDATED CONTENT REMOVED </para> </sect2> @@ -472,30 +252,4 @@ gdb mplayer --core=core -batch --command=command_file > mplayer.bug </sect2> </sect1> - -<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - - -<sect1 id="bugreports_advusers"> -<title>I know what I am doing...</title> - -<para> -If you created a proper bug report following the steps above and you are -confident it is a bug in <application>MPlayer</application>, not a compiler -problem or broken file, you have already read the documentation and you could -not find a solution, your sound drivers are OK, then you might want to -subscribe to the MPlayer-advusers list and send your bug report there to get -a better and faster answer. -</para> - -<para> -Please be advised that if you post newbie questions or questions answered in the -manual there, you will be ignored or flamed instead of getting an appropriate -answer. So do not flame us and subscribe to -advusers only if you really know -what you are doing and feel like being an advanced -<application>MPlayer</application> user or developer. If you meet these -criteria it should not be difficult to find out how to subscribe... -</para> -</sect1> - </appendix> diff --git a/DOCS/xml/en/documentation.xml b/DOCS/xml/en/documentation.xml index 8d4a5e38a4..2d6e16c4c2 100644 --- a/DOCS/xml/en/documentation.xml +++ b/DOCS/xml/en/documentation.xml @@ -3,7 +3,7 @@ <bookinfo id="toc"> <title><application>MPlayer</application> - The Movie Player</title> -<subtitle><ulink url="http://www.mplayerhq.hu"></ulink></subtitle> +<subtitle><ulink url="http://www.mplayer2.org/"></ulink></subtitle> <date>March 24, 2003</date> <copyright> <year>2000</year> @@ -17,6 +17,7 @@ <year>2008</year> <year>2009</year> <year>2010</year> + <year>2011</year> <holder>MPlayer team</holder> </copyright> <legalnotice> @@ -45,116 +46,17 @@ If you are a first-time installer: be sure to read everything from here to the end of the Installation section, and follow the links you will find. If you have any other questions, return to the <link linkend="toc">Table of Contents</link> and search for the topic, read the <xref linkend="faq"/>, -or try grepping through the files. Most questions should be answered somewhere -here and the rest has probably already been asked on our -<ulink url="http://www.mplayerhq.hu/design7/mailing_lists.html">mailing lists</ulink>. -Check the -<ulink url="https://lists.mplayerhq.hu/mailman/listinfo">archives</ulink>, there -is a lot of valuable information to be found there. +or try grepping through the files. </para> </preface> <chapter id="intro"> <title>Introduction</title> - -<para> -<application>MPlayer</application> is a movie player for Linux (runs on -many other Unices, and non-x86 CPUs, see <xref linkend="ports"/>). -It plays most MPEG, VOB, AVI, Ogg/OGM, VIVO, ASF/WMA/WMV, QT/MOV/MP4, FLI, RM, -NuppelVideo, yuv4mpeg, FILM, RoQ, PVA, Matroska files, supported by -many native, XAnim, RealPlayer, and Win32 DLL codecs. You can watch -Video CD, SVCD, DVD, 3ivx, RealMedia, Sorenson, Theora, -and MPEG-4 (DivX) movies, too. Another big -feature of <application>MPlayer</application> is the wide range of -supported output drivers. It works with X11, Xv, DGA, OpenGL, SVGAlib, -fbdev, AAlib, libcaca, DirectFB, but you can use GGI and SDL (and this way all -their drivers) and some low level card-specific drivers (for Matrox, 3Dfx and -Radeon, Mach64, Permedia3) too! Most of them support software or hardware -scaling, so you can enjoy movies in fullscreen. -<application>MPlayer</application> supports displaying through some -hardware MPEG decoder boards, such as the <link linkend="dvb">DVB</link> and -<link linkend="dxr3">DXR3/Hollywood+</link>. And what about the nice big -antialiased shaded subtitles (14 supported types) -with European/ISO 8859-1,2 (Hungarian, English, Czech, etc), Cyrillic, Korean -fonts, and the onscreen display (OSD)? -</para> - +OUTDATED CONTENT REMOVED <para> -The player is rock solid playing damaged MPEG files (useful for some VCDs), -and it plays bad AVI files which are unplayable with the famous -<application>Windows Media Player</application>. -Even AVI files without index chunk are playable, and you can -temporarily rebuild their indexes with the <option>-idx</option> option, or -permanently with <application>MEncoder</application>, thus enabling -seeking! As you see, stability and quality are the most important things, -but the speed is also amazing. There is also a powerful filter system for -video and audio manipulation. </para> -<para> -<application>MEncoder</application> (<application>MPlayer</application>'s Movie -Encoder) is a simple movie encoder, designed to encode -<application>MPlayer</application>-playable movies -AVI/ASF/OGG/DVD/VCD/VOB/MPG/MOV/VIV/FLI/RM/NUV/NET/PVA -to other <application>MPlayer</application>-playable formats (see below). -It can encode with various codecs, like MPEG-4 (DivX4) -(one or two passes), <systemitem class="library">libavcodec</systemitem>, -PCM/MP3/VBR MP3 audio. -</para> - -<itemizedlist> -<title><application>MEncoder</application> features</title> -<listitem><para> - Encoding from the wide range of file formats and decoders of - <application>MPlayer</application> -</para></listitem> -<listitem><para> - Encoding to all the codecs of FFmpeg's - <systemitem class="library">libavcodec</systemitem> -</para></listitem> -<listitem><para> - Video encoding from V4L compatible TV tuners -</para></listitem> -<listitem><para> - Encoding/multiplexing to interleaved AVI files with proper index -</para></listitem> -<listitem><para> - Creating files from external audio stream -</para></listitem> -<listitem><para> - 1, 2 or 3 pass encoding -</para></listitem> -<listitem><para> - VBR MP3 audio -</para></listitem> -<listitem><para> - PCM audio -</para></listitem> -<listitem><para> - Stream copying -</para></listitem> -<listitem><para> - Input A/V synchronizing (pts-based, can be disabled with - <option>-mc 0</option> option) -</para></listitem> -<listitem><para> - fps correction with <option>-ofps</option> option (useful when encoding - 30000/1001 fps VOB to 24000/1001 fps AVI) -</para></listitem> -<listitem><para> - Using our very powerful filter system (crop, expand, flip, postprocess, - rotate, scale, RGB/YUV conversion) -</para></listitem> -<listitem><para> - Can encode DVD/VOBsub and text subtitles - into the output file -</para></listitem> -<listitem><para> - Can rip DVD subtitles to VOBsub format -</para></listitem> -</itemizedlist> - <!-- FIXME: the license should be in bookinfo --> <para> <application>MPlayer</application> and <application>MEncoder</application> diff --git a/DOCS/xml/en/encoding-guide.xml b/DOCS/xml/en/encoding-guide.xml index 9309df9df7..d458f31b1c 100644 --- a/DOCS/xml/en/encoding-guide.xml +++ b/DOCS/xml/en/encoding-guide.xml @@ -3,5550 +3,7 @@ <chapter id="encoding-guide"> <title>Encoding with <application>MEncoder</application></title> -<sect1 id="menc-feat-dvd-mpeg4"> -<title>Making a high quality MPEG-4 ("DivX") - rip of a DVD movie</title> - -<para> -One frequently asked question is "How do I make the highest quality rip -for a given size?". Another question is "How do I make the highest -quality DVD rip possible? I do not care about file size, I just want the best -quality." -</para> - -<para> -The latter question is perhaps at least somewhat wrongly posed. After all, if -you do not care about file size, why not simply copy the entire MPEG-2 video -stream from the the DVD? Sure, your AVI will end up being 5GB, give -or take, but if you want the best quality and do not care about size, -this is certainly your best option. -</para> - -<para> -In fact, the reason you want to transcode a DVD into MPEG-4 is -specifically because you <emphasis role="bold">do</emphasis> care about -file size. -</para> - -<para> -It is difficult to offer a cookbook recipe on how to create a very high -quality DVD rip. There are several factors to consider, and you should -understand these details or else you are likely to end up disappointed -with your results. Below we will investigate some of these issues, and -then have a look at an example. We assume you are using -<systemitem class="library">libavcodec</systemitem> to encode the video, -although the theory applies to other codecs as well. -</para> - -<para> -If this seems to be too much for you, you should probably use one of the -many fine frontends that are listed in the -<ulink url="http://www.mplayerhq.hu/design7/projects.html#mencoder_frontends">MEncoder section</ulink> -of our related projects page. -That way, you should be able to achieve high quality rips without too much -thinking, because most of those tools are designed to take clever decisions -for you. -</para> - -<!-- ********** --> - -<sect2 id="menc-feat-dvd-mpeg4-preparing-encode"> -<title>Preparing to encode: Identifying source material and framerate</title> - -<para> -Before you even think about encoding a movie, you need to take -several preliminary steps. -</para> - -<para> -The first and most important step before you encode should be -determining what type of content you are dealing with. -If your source material comes from DVD or broadcast/cable/satellite -TV, it will be stored in one of two formats: NTSC for North -America and Japan, PAL for Europe, etc. -It is important to realize, however, that this is just the formatting for -presentation on a television, and often does -<emphasis role="bold">not</emphasis> correspond to the -original format of the movie. -Experience shows that NTSC material is a lot more difficult to encode, -because there more elements to identify in the source. -In order to produce a suitable encode, you need to know the original -format. -Failure to take this into account will result in various flaws in your -encode, including ugly combing (interlacing) artifacts and duplicated -or even lost frames. -Besides being ugly, the artifacts also harm coding efficiency: -You will get worse quality per unit bitrate. -</para> - - -<sect3 id="menc-feat-dvd-mpeg4-preparing-encode-fps"> -<title>Identifying source framerate</title> - -<para> -Here is a list of common types of source material, where you are -likely to find them, and their properties: -</para> - -<itemizedlist> -<listitem><para> - <emphasis role="bold">Standard Film</emphasis>: Produced for - theatrical display at 24fps. -</para></listitem> -<listitem><para> - <emphasis role="bold">PAL video</emphasis>: Recorded with a PAL - video camera at 50 fields per second. - A field consists of just the odd- or even-numbered lines of a - frame. - Television was designed to refresh these in alternation as a - cheap form of analog compression. - The human eye supposedly compensates for this, but once you - understand interlacing you will learn to see it on TV too and - never enjoy TV again. - Two fields do <emphasis role="bold">not</emphasis> make a - complete frame, because they are captured 1/50 of a second apart - in time, and thus they do not line up unless there is no motion. -</para></listitem> -<listitem><para> - <emphasis role="bold">NTSC Video</emphasis>: Recorded with an - NTSC video camera at 60000/1001 fields per second, or 60 fields per - second in the pre-color era. - Otherwise similar to PAL. -</para></listitem> -<listitem><para> - <emphasis role="bold">Animation</emphasis>: Usually drawn at - 24fps, but also comes in mixed-framerate varieties. -</para></listitem> -<listitem><para> - <emphasis role="bold">Computer Graphics (CG)</emphasis>: Can be - any framerate, but some are more common than others; 24 and - 30 frames per second are typical for NTSC, and 25fps is typical - for PAL. -</para></listitem> -<listitem><para> - <emphasis role="bold">Old Film</emphasis>: Various lower - framerates. -</para></listitem> -</itemizedlist> -</sect3> - - -<sect3 id="menc-feat-dvd-mpeg4-preparing-encode-material"> -<title>Identifying source material</title> - -<para> -Movies consisting of frames are referred to as progressive, -while those consisting of independent fields are called -either interlaced or video - though this latter term is -ambiguous. -</para> - -<para> -To further complicate matters, some movies will be a mix of -several of the above. -</para> - -<para> -The most important distinction to make between all of these -formats is that some are frame-based, while others are -field-based. -<emphasis role="bold">Whenever</emphasis> a movie is prepared -for display on television (including DVD), it is converted to a -field-based format. -The various methods by which this can be done are collectively -referred to as "telecine", of which the infamous NTSC -"3:2 pulldown" is one variety. -Unless the original material was also field-based (and the same -fieldrate), you are getting the movie in a format other than the -original. -</para> - -<itemizedlist> -<title>There are several common types of pulldown:</title> -<listitem><para> - <emphasis role="bold">PAL 2:2 pulldown</emphasis>: The nicest of - them all. - Each frame is shown for the duration of two fields, by extracting the - even and odd lines and showing them in alternation. - If the original material is 24fps, this process speeds up the - movie by 4%. -</para></listitem> -<listitem><para> - <emphasis role="bold">PAL 2:2:2:2:2:2:2:2:2:2:2:3 pulldown</emphasis>: - Every 12th frame is shown for the duration of three fields, instead of - just two. - This avoids the 4% speedup issue, but makes the process much - more difficult to reverse. - It is usually seen in musical productions where adjusting the - speed by 4% would seriously damage the musical score. -</para></listitem> -<listitem><para> - <emphasis role="bold">NTSC 3:2 telecine</emphasis>: Frames are - shown alternately for the duration of 3 fields or 2 fields. - This gives a fieldrate 2.5 times the original framerate. - The result is also slowed down very slightly from 60 fields per - second to 60000/1001 fields per second to maintain NTSC fieldrate. -</para></listitem> -<listitem><para> - <emphasis role="bold">NTSC 2:2 pulldown</emphasis>: Used for - showing 30fps material on NTSC. - Nice, just like 2:2 PAL pulldown. -</para></listitem> -</itemizedlist> - -<para> -There are also methods for converting between NTSC and PAL video, -but such topics are beyond the scope of this guide. -If you encounter such a movie and want to encode it, your best -bet is to find a copy in the original format. -Conversion between these two formats is highly destructive and -cannot be reversed cleanly, so your encode will greatly suffer -if it is made from a converted source. -</para> - -<para> -When video is stored on DVD, consecutive pairs of fields are -grouped as a frame, even though they are not intended to be shown -at the same moment in time. -The MPEG-2 standard used on DVD and digital TV provides a -way both to encode the original progressive frames and to store -the number of fields for which a frame should be shown in the -header of that frame. -If this method has been used, the movie will often be described -as "soft-telecined", since the process only directs the -DVD player to apply pulldown to the movie rather than altering -the movie itself. -This case is highly preferable since it can easily be reversed -(actually ignored) by the encoder, and since it preserves maximal -quality. -However, many DVD and broadcast production studios do not use -proper encoding techniques but instead produce movies with -"hard telecine", where fields are actually duplicated in the -encoded MPEG-2. -</para> - -<para> -The procedures for dealing with these cases will be covered -<link linkend="menc-feat-telecine">later in this guide</link>. -For now, we leave you with some guides to identifying which type -of material you are dealing with: -</para> - -<itemizedlist> -<title>NTSC regions:</title> -<listitem><para> - If <application>MPlayer</application> prints that the framerate - has changed to 24000/1001 when watching your movie, and never changes - back, it is almost certainly progressive content that has been - "soft telecined". -</para></listitem> -<listitem><para> - If <application>MPlayer</application> shows the framerate - switching back and forth between 24000/1001 and 30000/1001, and you see - "combing" at times, then there are several possibilities. - The 24000/1001 fps segments are almost certainly progressive - content, "soft telecined", but the 30000/1001 fps parts could be - either hard-telecined 24000/1001 fps content or 60000/1001 fields per second - NTSC video. - Use the same guidelines as the following two cases to determine which. -</para></listitem> -<listitem><para> - If <application>MPlayer</application> never shows the framerate - changing, and every single frame with motion appears combed, your - movie is NTSC video at 60000/1001 fields per second. -</para></listitem> -<listitem><para> - If <application>MPlayer</application> never shows the framerate - changing, and two frames out of every five appear combed, your - movie is "hard telecined" 24000/1001fps content. -</para></listitem> -</itemizedlist> - -<itemizedlist> -<title>PAL regions:</title> -<listitem><para> - If you never see any combing, your movie is 2:2 pulldown. -</para></listitem> -<listitem><para> - If you see combing alternating in and out every half second, - then your movie is 2:2:2:2:2:2:2:2:2:2:2:3 pulldown. -</para></listitem> -<listitem><para> - If you always see combing during motion, then your movie is PAL - video at 50 fields per second. -</para></listitem> -</itemizedlist> - -<note><title>Hint:</title> -<para> - <application>MPlayer</application> can slow down movie playback - with the -speed option or play it frame-by-frame. - Try using <option>-speed</option> 0.2 to watch the movie very - slowly or press the "<keycap>.</keycap>" key repeatedly to play one frame at - a time and identify the pattern, if you cannot see it at full speed. -</para> -</note> -</sect3> -</sect2> - -<!-- ********** --> - -<sect2 id="menc-feat-dvd-mpeg4-2pass"> -<title>Constant quantizer vs. multipass</title> - -<para> -It is possible to encode your movie at a wide range of qualities. -With modern video encoders and a bit of pre-codec compression -(downscaling and denoising), it is possible to achieve very good -quality at 700 MB, for a 90-110 minute widescreen movie. -Furthermore, all but the longest movies can be encoded with near-perfect -quality at 1400 MB. -</para> - -<para> -There are three approaches to encoding the video: constant bitrate -(CBR), constant quantizer, and multipass (ABR, or average bitrate). -</para> - -<para> -The complexity of the frames of a movie, and thus the number of bits -required to compress them, can vary greatly from one scene to another. -Modern video encoders can adjust to these needs as they go and vary -the bitrate. -In simple modes such as CBR, however, the encoders do not know the -bitrate needs of future scenes and so cannot exceed the requested -average bitrate for long stretches of time. -More advanced modes, such as multipass encode, can take into account -the statistics from previous passes; this fixes the problem mentioned -above. -</para> - -<note><title>Note:</title> -<para> -Most codecs which support ABR encode only support two pass encode -while some others such as <systemitem class="library">x264</systemitem>, -<systemitem class="library">Xvid</systemitem> -and <systemitem class="library">libavcodec</systemitem> support -multipass, which slightly improves quality at each pass, -yet this improvement is no longer measurable nor noticeable after the -4th or so pass. -Therefore, in this section, two pass and multipass will be used -interchangeably. -</para> -</note> - -<para> -In each of these modes, the video codec (such as -<systemitem class="library">libavcodec</systemitem>) -breaks the video frame into 16x16 pixel macroblocks and then applies a -quantizer to each macroblock. The lower the quantizer, the better the -quality and higher the bitrate. -The method the movie encoder uses to determine -which quantizer to use for a given macroblock varies and is highly -tunable. (This is an extreme over-simplification of the actual -process, but the basic concept is useful to understand.) -</para> - -<para> -When you specify a constant bitrate, the video codec will encode the video, -discarding -detail as much as necessary and as little as possible in order to remain -lower than the given bitrate. If you truly do not care about file size, -you could as well use CBR and specify a bitrate of infinity. (In -practice, this means a value high enough so that it poses no limit, like -10000Kbit.) With no real restriction on bitrate, the result is that -the codec will use the lowest -possible quantizer for each macroblock (as specified by -<option>vqmin</option> for -<systemitem class="library">libavcodec</systemitem>, which is 2 by default). -As soon as you specify a -low enough bitrate that the codec -is forced to use a higher quantizer, then you are almost certainly ruining -the quality of your video. -In order to avoid that, you should probably downscale your video, according -to the method described later on in this guide. -In general, you should avoid CBR altogether if you care about quality. -</para> - -<para> -With constant quantizer, the codec uses the same quantizer, as -specified by the <option>vqscale</option> option (for -<systemitem class="library">libavcodec</systemitem>), on every macroblock. -If you want the highest quality rip possible, again ignoring bitrate, -you can use <option>vqscale=2</option>. -This will yield the same bitrate and PSNR (peak signal-to-noise ratio) -as CBR with -<option>vbitrate</option>=infinity and the default <option>vqmin</option> -of 2. -</para> - -<para> -The problem with constant quantizing is that it uses the given quantizer -whether the macroblock needs it or not. That is, it might be possible -to use a higher quantizer on a macroblock without sacrificing visual -quality. Why waste the bits on an unnecessarily low quantizer? Your -CPU has as many cycles as there is time, but there is only so many bits -on your hard disk. -</para> - -<para> -With a two pass encode, the first pass will rip the movie as though it -were CBR, but it will keep a log of properties for each frame. This -data is then used during the second pass in order to make intelligent -decisions about which quantizers to use. During fast action or high -detail scenes, higher quantizers will likely be used, and during -slow moving or low detail scenes, lower quantizers will be used. -Normally, the amount of motion is much more important than the -amount of detail. -</para> - -<para> -If you use <option>vqscale=2</option>, then you are wasting bits. If you -use <option>vqscale=3</option>, then you are not getting the highest -quality rip. Suppose you rip a DVD at <option>vqscale=3</option>, and -the result is 1800Kbit. If you do a two pass encode with -<option>vbitrate=1800</option>, the resulting video will have -<emphasis role="bold">higher quality</emphasis> for the -<emphasis role="bold">same bitrate</emphasis>. -</para> - -<para> -Since you are now convinced that two pass is the way to go, the real -question now is what bitrate to use? The answer is that there is no -single answer. Ideally you want to choose a bitrate that yields the -best balance between quality and file size. This is going to vary -depending on the source video. -</para> - -<para> -If size does not matter, a good starting point for a very high quality -rip is about 2000Kbit plus or minus 200Kbit. -For fast action or high detail source video, or if you just have a very -critical eye, you might decide on 2400 or 2600. -For some DVDs, you might not notice a difference at 1400Kbit. It is a -good idea to experiment with scenes at different bitrates to get a feel. -</para> - -<para> -If you aim at a certain size, you will have to somehow calculate the bitrate. -But before that, you need to know how much space you should reserve for the -audio track(s), so you should -<link linkend="menc-feat-dvd-mpeg4-audio">rip those</link> first. -You can compute the bitrate with the following equation: -<systemitem>bitrate = (target_size_in_Mbytes - sound_size_in_Mbytes) * -1024 * 1024 / length_in_secs * 8 / 1000</systemitem> -For instance, to squeeze a two-hour movie onto a 702MB CD, with 60MB -of audio track, the video bitrate will have to be: -<systemitem>(702 - 60) * 1024 * 1024 / (120*60) * 8 / 1000 -= 740kbps</systemitem> -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="menc-feat-dvd-mpeg4-constraints"> -<title>Constraints for efficient encoding</title> - -<para> -Due to the nature of MPEG-type compression, there are various -constraints you should follow for maximal quality. -MPEG splits the video up into 16x16 squares called macroblocks, -each composed of 4 8x8 blocks of luma (intensity) information and two -half-resolution 8x8 chroma (color) blocks (one for red-cyan axis and -the other for the blue-yellow axis). -Even if your movie width and height are not multiples of 16, the -encoder will use enough 16x16 macroblocks to cover the whole picture -area, and the extra space will go to waste. -So in the interests of maximizing quality at a fixed file size, it is -a bad idea to use dimensions that are not multiples of 16. -</para> - -<para> -Most DVDs also have some degree of black borders at the edges. Leaving -these in place will hurt quality <emphasis role="bold">a lot</emphasis> -in several ways. -</para> - -<orderedlist> -<listitem> - <para> - MPEG-type compression is highly dependent on frequency domain - transformations, in particular the Discrete Cosine Transform (DCT), - which is similar to the Fourier transform. This sort of encoding is - efficient for representing patterns and smooth transitions, but it - has a hard time with sharp edges. In order to encode them it must - use many more bits, or else an artifact known as ringing will - appear. - </para> - - <para> - The frequency transform (DCT) takes place separately on each - macroblock (actually each block), so this problem only applies when - the sharp edge is inside a block. If your black borders begin - exactly at multiple-of-16 pixel boundaries, this is not a problem. - However, the black borders on DVDs rarely come nicely aligned, so - in practice you will always need to crop to avoid this penalty. - </para> -</listitem> -</orderedlist> - -<para> -In addition to frequency domain transforms, MPEG-type compression uses -motion vectors to represent the change from one frame to the next. -Motion vectors naturally work much less efficiently for new content -coming in from the edges of the picture, because it is not present in -the previous frame. As long as the picture extends all the way to the -edge of the encoded region, motion vectors have no problem with -content moving out the edges of the picture. However, in the presence -of black borders, there can be trouble: -</para> - -<orderedlist continuation="continues"> -<listitem> - <para> - For each macroblock, MPEG-type compression stores a vector - identifying which part of the previous frame should be copied into - this macroblock as a base for predicting the next frame. Only the - remaining differences need to be encoded. If a macroblock spans the - edge of the picture and contains part of the black border, then - motion vectors from other parts of the picture will overwrite the - black border. This means that lots of bits must be spent either - re-blackening the border that was overwritten, or (more likely) a - motion vector will not be used at all and all the changes in this - macroblock will have to be coded explicitly. Either way, encoding - efficiency is greatly reduced. - </para> - - <para> - Again, this problem only applies if black borders do not line up on - multiple-of-16 boundaries. - </para> -</listitem> - -<listitem> - <para> - Finally, suppose we have a macroblock in the interior of the - picture, and an object is moving into this block from near the edge - of the image. MPEG-type coding cannot say "copy the part that is - inside the picture but not the black border." So the black border - will get copied inside too, and lots of bits will have to be spent - encoding the part of the picture that is supposed to be there. - </para> - - <para> - If the picture runs all the way to the edge of the encoded area, - MPEG has special optimizations to repeatedly copy the pixels at the - edge of the picture when a motion vector comes from outside the - encoded area. This feature becomes useless when the movie has black - borders. Unlike problems 1 and 2, aligning the borders at multiples - of 16 does not help here. - </para> -</listitem> - -<listitem><para> - Despite the borders being entirely black and never changing, there - is at least a minimal amount of overhead involved in having more - macroblocks. -</para></listitem> -</orderedlist> - -<para> -For all of these reasons, it is recommended to fully crop black -borders. Further, if there is an area of noise/distortion at the edge -of the picture, cropping this will improve encoding efficiency as -well. Videophile purists who want to preserve the original as close as -possible may object to this cropping, but unless you plan to encode at -constant quantizer, the quality you gain from cropping will -considerably exceed the amount of information lost at the edges. -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="menc-feat-dvd-mpeg4-crop"> -<title>Cropping and Scaling</title> - -<para> -Recall from the previous section that the final picture size you -encode should be a multiple of 16 (in both width and height). -This can be achieved by cropping, scaling, or a combination of both. -</para> - -<para> -When cropping, there are a few guidelines that must be followed to -avoid damaging your movie. -The normal YUV format, 4:2:0, stores chroma (color) information -subsampled, i.e. chroma is only sampled half as often in each -direction as luma (intensity) information. -Observe this diagram, where L indicates luma sampling points and C -chroma. -</para> - -<informaltable> -<?dbhtml table-width="40%" ?> -<?dbfo table-width="40%" ?> -<tgroup cols="8" align="center"> -<colspec colnum="1" colname="col1"/> -<colspec colnum="2" colname="col2"/> -<colspec colnum="3" colname="col3"/> -<colspec colnum="4" colname="col4"/> -<colspec colnum="5" colname="col5"/> -<colspec colnum="6" colname="col6"/> -<colspec colnum="7" colname="col7"/> -<colspec colnum="8" colname="col8"/> -<spanspec spanname="spa1-2" namest="col1" nameend="col2"/> -<spanspec spanname="spa3-4" namest="col3" nameend="col4"/> -<spanspec spanname="spa5-6" namest="col5" nameend="col6"/> -<spanspec spanname="spa7-8" namest="col7" nameend="col8"/> - <tbody> - <row> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - </row> - <row> - <entry spanname="spa1-2">C</entry> - <entry spanname="spa3-4">C</entry> - <entry spanname="spa5-6">C</entry> - <entry spanname="spa7-8">C</entry> - </row> - <row> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - </row> - <row> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - </row> - <row> - <entry spanname="spa1-2">C</entry> - <entry spanname="spa3-4">C</entry> - <entry spanname="spa5-6">C</entry> - <entry spanname="spa7-8">C</entry> - </row> - <row> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - </row> - </tbody> -</tgroup> -</informaltable> - -<para> -As you can see, rows and columns of the image naturally come in pairs. -Thus your crop offsets and dimensions <emphasis>must</emphasis> be -even numbers. -If they are not, the chroma will no longer line up correctly with the -luma. -In theory, it is possible to crop with odd offsets, but it requires -resampling the chroma which is potentially a lossy operation and not -supported by the crop filter. -</para> - -<para> -Further, interlaced video is sampled as follows: -</para> - -<informaltable> -<?dbhtml table-width="80%" ?> -<?dbfo table-width="80%" ?> -<tgroup cols="16" align="center"> -<colspec colnum="1" colname="col1"/> -<colspec colnum="2" colname="col2"/> -<colspec colnum="3" colname="col3"/> -<colspec colnum="4" colname="col4"/> -<colspec colnum="5" colname="col5"/> -<colspec colnum="6" colname="col6"/> -<colspec colnum="7" colname="col7"/> -<colspec colnum="8" colname="col8"/> -<colspec colnum="9" colname="col9"/> -<colspec colnum="10" colname="col10"/> -<colspec colnum="11" colname="col11"/> -<colspec colnum="12" colname="col12"/> -<colspec colnum="13" colname="col13"/> -<colspec colnum="14" colname="col14"/> -<colspec colnum="15" colname="col15"/> -<colspec colnum="16" colname="col16"/> -<spanspec spanname="spa1-2" namest="col1" nameend="col2"/> -<spanspec spanname="spa3-4" namest="col3" nameend="col4"/> -<spanspec spanname="spa5-6" namest="col5" nameend="col6"/> -<spanspec spanname="spa7-8" namest="col7" nameend="col8"/> -<spanspec spanname="spa9-10" namest="col9" nameend="col10"/> -<spanspec spanname="spa11-12" namest="col11" nameend="col12"/> -<spanspec spanname="spa13-14" namest="col13" nameend="col14"/> -<spanspec spanname="spa15-16" namest="col15" nameend="col16"/> - <tbody> - <row> - <entry namest="col1" nameend="col8">Top field</entry> - <entry namest="col9" nameend="col16">Bottom field</entry> - </row> - <row> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - </row> - <row> - <entry spanname="spa1-2">C</entry> - <entry spanname="spa3-4">C</entry> - <entry spanname="spa5-6">C</entry> - <entry spanname="spa7-8">C</entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - </row> - <row> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry spanname="spa9-10">C</entry> - <entry spanname="spa11-12">C</entry> - <entry spanname="spa13-14">C</entry> - <entry spanname="spa15-16">C</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - </row> - <row> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - </row> - <row> - <entry spanname="spa1-2">C</entry> - <entry spanname="spa3-4">C</entry> - <entry spanname="spa5-6">C</entry> - <entry spanname="spa7-8">C</entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - </row> - <row> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry spanname="spa9-10">C</entry> - <entry spanname="spa11-12">C</entry> - <entry spanname="spa13-14">C</entry> - <entry spanname="spa15-16">C</entry> - </row> - <row> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - <entry>L</entry> - </row> - </tbody> -</tgroup> -</informaltable> - -<para> -As you can see, the pattern does not repeat until after 4 lines. -So for interlaced video, your y-offset and height for cropping must -be multiples of 4. -</para> - -<para> -Native DVD resolution is 720x480 for NTSC, and 720x576 for PAL, but -there is an aspect flag that specifies whether it is full-screen (4:3) or -wide-screen (16:9). Many (if not most) widescreen DVDs are not strictly -16:9, and will be either 1.85:1 or 2.35:1 (cinescope). This means that -there will be black bands in the video that will need to be cropped out. -</para> - -<para> -<application>MPlayer</application> provides a crop detection filter that -will determine the crop rectangle (<option>-vf cropdetect</option>). -Run <application>MPlayer</application> with -<option>-vf cropdetect</option> and it will print out the crop -settings to remove the borders. -You should let the movie run long enough that the whole picture -area is used, in order to get accurate crop values. -</para> - -<para> -Then, test the values you get with <application>MPlayer</application>, -using the command line which was printed by -<option>cropdetect</option>, and adjust the rectangle as needed. -The <option>rectangle</option> filter can help by allowing you to -interactively position the crop rectangle over your movie. -Remember to follow the above divisibility guidelines so that you -do not misalign the chroma planes. -</para> - -<para> -In certain cases, scaling may be undesirable. -Scaling in the vertical direction is difficult with interlaced -video, and if you wish to preserve the interlacing, you should -usually refrain from scaling. -If you will not be scaling but you still want to use multiple-of-16 -dimensions, you will have to overcrop. -Do not undercrop, since black borders are very bad for encoding! -</para> - -<para> -Because MPEG-4 uses 16x16 macroblocks, you will want to make sure that each -dimension of the video you are encoding is a multiple of 16 or else you -will be degrading quality, especially at lower bitrates. You can do this -by rounding the width and height of the crop rectangle down to the nearest -multiple of 16. -As stated earlier, when cropping, you will want to increase the Y offset by -half the difference of the old and the new height so that the resulting -video is taken from the center of the frame. And because of the way DVD -video is sampled, make sure the offset is an even number. (In fact, as a -rule, never use odd values for any parameter when you are cropping and -scaling video.) If you are not comfortable throwing a few extra pixels -away, you might prefer to scale the video instead. We will look -at this in our example below. -You can actually let the <option>cropdetect</option> filter do all of the -above for you, as it has an optional <option>round</option> parameter that -is equal to 16 by default. -</para> - -<para> -Also, be careful about "half black" pixels at the edges. Make sure you -crop these out too, or else you will be wasting bits there that -are better spent elsewhere. -</para> - -<para> -After all is said and done, you will probably end up with video whose pixels -are not quite 1.85:1 or 2.35:1, but rather something close to that. You -could calculate the new aspect ratio manually, but -<application>MEncoder</application> offers an option for <systemitem -class="library">libavcodec</systemitem> called <option>autoaspect</option> -that will do this for you. Absolutely do not scale this video up in order to -square the pixels unless you like to waste your hard disk space. Scaling -should be done on playback, and the player will use the aspect stored in -the AVI to determine the correct resolution. -Unfortunately, not all players enforce this auto-scaling information, -therefore you may still want to rescale. -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="menc-feat-dvd-mpeg4-resolution-bitrate"> -<title>Choosing resolution and bitrate</title> - -<para> -If you will not be encoding in constant quantizer mode, you need to -select a bitrate. -The concept of bitrate is quite simple. -It is the (average) number of bits that will be consumed to store your -movie, per second. -Normally bitrate is measured in kilobits (1000 bits) per second. -The size of your movie on disk is the bitrate times the length of the -movie in time, plus a small amount of "overhead" (see the section on -<link linkend="menc-feat-dvd-mpeg4-muxing-avi-limitations">the AVI container</link> -for instance). -Other parameters such as scaling, cropping, etc. will -<emphasis role="bold">not</emphasis> alter the file size unless you -change the bitrate as well! -</para> - -<para> -Bitrate does <emphasis role="bold">not</emphasis> scale proportionally -to resolution. -That is to say, a 320x240 file at 200 kbit/sec will not be the same -quality as the same movie at 640x480 and 800 kbit/sec! -There are two reasons for this: -<orderedlist> -<listitem><para> - <emphasis role="bold">Perceptual</emphasis>: You notice MPEG - artifacts more if they are scaled up bigger! - Artifacts appear on the scale of blocks (8x8). - Your eye will not see errors in 4800 small blocks as easily as it - sees errors in 1200 large blocks (assuming you will be scaling both - to fullscreen). -</para></listitem> -<listitem><para> - <emphasis role="bold">Theoretical</emphasis>: When you scale down - an image but still use the same size (8x8) blocks for the frequency - space transform, you move more data to the high frequency bands. - Roughly speaking, each pixel contains more of the detail than it - did before. - So even though your scaled-down picture contains 1/4 the information - in the spacial directions, it could still contain a large portion - of the information in the frequency domain (assuming that the high - frequencies were underutilized in the original 640x480 image). -</para></listitem> -</orderedlist> -</para> - -<para> -Past guides have recommended choosing a bitrate and resolution based -on a "bits per pixel" approach, but this is usually not valid due to -the above reasons. -A better estimate seems to be that bitrates scale proportional to the -square root of resolution, so that 320x240 and 400 kbit/sec would be -comparable to 640x480 at 800 kbit/sec. -However this has not been verified with theoretical or empirical -rigor. -Further, given that movies vary greatly with regard to noise, detail, -degree of motion, etc., it is futile to make general recommendations -for bits per length-of-diagonal (the analog of bits per pixel, -using the square root). -</para> -<para> -So far we have discussed the difficulty of choosing a bitrate and -resolution. -</para> - - -<sect3 id="menc-feat-dvd-mpeg4-resolution-bitrate-compute"> -<title>Computing the resolution</title> - -<para> -The following steps will guide you in computing the resolution of your -encode without distorting the video too much, by taking into account several -types of information about the source video. -First, you should compute the encoded aspect ratio: -<systemitem>ARc = (Wc x (ARa / PRdvd )) / Hc</systemitem> - -<itemizedlist> -<title>where:</title> -<listitem><para> - Wc and Hc are the width and height of the cropped video, -</para></listitem> -<listitem><para> - ARa is the displayed aspect ratio, which usually is 4/3 or 16/9, -</para></listitem> -<listitem><para> - PRdvd is the pixel ratio of the DVD which is equal to 1.25=(720/576) for PAL - DVDs and 1.5=(720/480) for NTSC DVDs. -</para></listitem> -</itemizedlist> -</para> - -<para> -Then, you can compute the X and Y resolution, according to a certain -Compression Quality (CQ) factor: -<systemitem>ResY = INT(SQRT( 1000*Bitrate/25/ARc/CQ )/16) * 16</systemitem> -and -<systemitem>ResX = INT( ResY * ARc / 16) * 16</systemitem> -</para> - -<para> -Okay, but what is the CQ? -The CQ represents the number of bits per pixel and per frame of the encode. -Roughly speaking, the greater the CQ, the less the likelihood to see -encoding artifacts. -However, if you have a target size for your movie (1 or 2 CDs for instance), -there is a limited total number of bits that you can spend; therefore it is -necessary to find a good tradeoff between compressibility and quality. -</para> - -<para> -The CQ depends on the bitrate, the video codec efficiency and the -movie resolution. -In order to raise the CQ, typically you would downscale the movie given that the -bitrate is computed in function of the target size and the length of the -movie, which are constant. -With MPEG-4 ASP codecs such as <systemitem class="library">Xvid</systemitem> -and <systemitem class="library">libavcodec</systemitem>, a CQ below 0.18 -usually results in a pretty blocky picture, because there -are not enough bits to code the information of each macroblock. (MPEG4, like -many other codecs, groups pixels by blocks of several pixels to compress the -image; if there are not enough bits, the edges of those blocks are -visible.) -It is therefore wise to take a CQ ranging from 0.20 to 0.22 for a 1 CD rip, -and 0.26-0.28 for 2 CDs rip with standard encoding options. -More advanced encoding options such as those listed here for -<link linkend="menc-feat-mpeg4-lavc-example-settings"><systemitem class="library">libavcodec</systemitem></link> -and -<link linkend="menc-feat-xvid-example-settings"><systemitem class="library">Xvid</systemitem></link> -should make it possible to get the same quality with CQ ranging from -0.18 to 0.20 for a 1 CD rip, and 0.24 to 0.26 for a 2 CD rip. -With MPEG-4 AVC codecs such as <systemitem class="library">x264</systemitem>, -you can use a CQ ranging from 0.14 to 0.16 with standard encoding options, -and should be able to go as low as 0.10 to 0.12 with -<link linkend="menc-feat-x264-example-settings"><systemitem class="library">x264</systemitem>'s advanced encoding settings</link>. -</para> - -<para> -Please take note that the CQ is just an indicative figure, as depending on -the encoded content, a CQ of 0.18 may look just fine for a Bergman, contrary -to a movie such as The Matrix, which contains many high-motion scenes. -On the other hand, it is worthless to raise CQ higher than 0.30 as you would -be wasting bits without any noticeable quality gain. -Also note that as mentioned earlier in this guide, low resolution videos -need a bigger CQ (compared to, for instance, DVD resolution) to look good. -</para> -</sect3> -</sect2> - -<!-- ********** --> - -<sect2 id="menc-feat-dvd-mpeg4-filtering"> -<title>Filtering</title> - -<para> -Learning how to use <application>MEncoder</application>'s video filters -is essential to producing good encodes. -All video processing is performed through the filters -- cropping, -scaling, color adjustment, noise removal, sharpening, deinterlacing, -telecine, inverse telecine, and deblocking, just to name a few. -Along with the vast number of supported input formats, the variety of -filters available in <application>MEncoder</application> is one of its -main advantages over other similar programs. -</para> - -<para> -Filters are loaded in a chain using the -vf option: - -<screen>-vf filter1=options,filter2=options,...</screen> - -Most filters take several numeric options separated by colons, but -the syntax for options varies from filter to filter, so read the man -page for details on the filters you wish to use. -</para> - -<para> -Filters operate on the video in the order they are loaded. -For example, the following chain: - -<screen>-vf crop=688:464:12:4,scale=640:464</screen> - -will first crop the 688x464 region of the picture with upper-left -corner at (12,4), and then scale the result down to 640x464. -</para> - -<para> -Certain filters need to be loaded at or near the beginning of the -filter chain, in order to take advantage of information from the -video decoder that will be lost or invalidated by other filters. -The principal examples are <option>pp</option> (postprocessing, only -when it is performing deblock or dering operations), -<option>spp</option> (another postprocessor to remove MPEG artifacts), -<option>pullup</option> (inverse telecine), and -<option>softpulldown</option> (for converting soft telecine to hard telecine). -</para> - -<para> -In general, you want to do as little filtering as possible to the movie -in order to remain close to the original DVD source. Cropping is often -necessary (as described above), but avoid to scale the video. Although -scaling down is sometimes preferred to using higher quantizers, we want -to avoid both these things: remember that we decided from the start to -trade bits for quality. -</para> - -<para> -Also, do not adjust gamma, contrast, brightness, etc. What looks good -on your display may not look good on others. These adjustments should -be done on playback only. -</para> - -<para> -One thing you might want to do, however, is pass the video through a -very light denoise filter, such as <option>-vf hqdn3d=2:1:2</option>. -Again, it is a matter of putting those bits to better use: why waste them -encoding noise when you can just add that noise back in during playback? -Increasing the parameters for <option>hqdn3d</option> will further -improve compressibility, but if you increase the values too much, you -risk degrading the image visibly. The suggested values above -(<option>2:1:2</option>) are quite conservative; you should feel free to -experiment with higher values and observe the results for yourself. -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="menc-feat-dvd-mpeg4-interlacing"> -<title>Interlacing and Telecine</title> - -<para> -Almost all movies are shot at 24 fps. Because NTSC is 30000/1001 fps, some -processing must be done to this 24 fps video to make it run at the correct -NTSC framerate. The process is called 3:2 pulldown, commonly referred to -as telecine (because pulldown is often applied during the telecine -process), and, naively described, it works by slowing the film down to -24000/1001 fps, and repeating every fourth frame. -</para> - -<para> -No special processing, however, is done to the video for PAL DVDs, which -run at 25 fps. (Technically, PAL can be telecined, called 2:2 pulldown, -but this does not become an issue in practice.) The 24 fps film is simply -played back at 25 fps. The result is that the movie runs slightly faster, -but unless you are an alien, you probably will not notice the difference. -Most PAL DVDs have pitch-corrected audio, so when they are played back at -25 fps things will sound right, even though the audio track (and hence the -whole movie) has a running time that is 4% less than NTSC DVDs. -</para> - -<para> -Because the video in a PAL DVD has not been altered, you need not worry -much about framerate. The source is 25 fps, and your rip will be 25 -fps. However, if you are ripping an NTSC DVD movie, you may need to -apply inverse telecine. -</para> - -<para> -For movies shot at 24 fps, the video on the NTSC DVD is either telecined -30000/1001, or else it is progressive 24000/1001 fps and intended to be -telecined on-the-fly by a DVD player. On the other hand, TV series are usually -only interlaced, not telecined. This is not a hard rule: some TV series -are interlaced (such as Buffy the Vampire Slayer) whereas some are a -mixture of progressive and interlaced (such as Angel, or 24). -</para> - -<para> -It is highly recommended that you read the section on -<link linkend="menc-feat-telecine">How to deal with telecine and interlacing in NTSC DVDs</link> -to learn how to handle the different possibilities. -</para> - -<para> -However, if you are mostly just ripping movies, likely you are either -dealing with 24 fps progressive or telecined video, in which case you can -use the <option>pullup</option> filter <option>-vf -pullup,softskip</option>. -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="menc-feat-dvd-mpeg4-encoding-interlaced"> -<title>Encoding interlaced video</title> - -<para> -If the movie you want to encode is interlaced (NTSC video or -PAL video), you will need to choose whether you want to -deinterlace or not. -While deinterlacing will make your movie usable on progressive -scan displays such a computer monitors and projectors, it comes -at a cost: The fieldrate of 50 or 60000/1001 fields per second -is halved to 25 or 30000/1001 frames per second, and roughly half of -the information in your movie will be lost during scenes with -significant motion. -</para> - -<para> -Therefore, if you are encoding for high quality archival purposes, -it is recommended not to deinterlace. -You can always deinterlace the movie at playback time when -displaying it on progressive scan devices. -The power of currently available computers forces players to use a -deinterlacing filter, which results in a slight degradation in -image quality. -But future players will be able to mimic the interlaced display of -a TV, deinterlacing to full fieldrate and interpolating 50 or -60000/1001 entire frames per second from the interlaced video. -</para> - -<para> -Special care must be taken when working with interlaced video: -</para> - -<orderedlist> -<listitem><para> - Crop height and y-offset must be multiples of 4. -</para></listitem> -<listitem><para> - Any vertical scaling must be performed in interlaced mode. -</para></listitem> -<listitem><para> - Postprocessing and denoising filters may not work as expected - unless you take special care to operate them a field at a time, - and they may damage the video if used incorrectly. -</para></listitem> -</orderedlist> - -<para> -With these things in mind, here is our first example: -<screen> -mencoder <replaceable>capture.avi</replaceable> -mc 0 -oac lavc -ovc lavc -lavcopts \ - vcodec=mpeg2video:vbitrate=6000:ilme:ildct:acodec=mp2:abitrate=224 -</screen> -Note the <option>ilme</option> and <option>ildct</option> options. -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="menc-feat-dvd-mpeg4-av-sync"> -<title>Notes on Audio/Video synchronization</title> - -<para> -<application>MEncoder</application>'s audio/video synchronization -algorithms were designed with the intention of recovering files with -broken sync. -However, in some cases they can cause unnecessary skipping and duplication of -frames, and possibly slight A/V desync, when used with proper input -(of course, A/V sync issues apply only if you process or copy the -audio track while transcoding the video, which is strongly encouraged). -Therefore, you may have to switch to basic A/V sync with -the <option>-mc 0</option> option, or put this in your -<systemitem>~/.mplayer/mencoder</systemitem> config file, as long as -you are only working with good sources (DVD, TV capture, high quality -MPEG-4 rips, etc) and not broken ASF/RM/MOV files. -</para> - -<para> -If you want to further guard against strange frame skips and -duplication, you can use both <option>-mc 0</option> and -<option>-noskip</option>. -This will prevent <emphasis>all</emphasis> A/V sync, and copy frames -one-to-one, so you cannot use it if you will be using any filters that -unpredictably add or drop frames, or if your input file has variable -framerate! -Therefore, using <option>-noskip</option> is not in general recommended. -</para> - -<para> -The so-called "three-pass" audio encoding which -<application>MEncoder</application> supports has been reported to cause A/V -desync. -This will definitely happen if it is used in conjunction with certain -filters, therefore, it is now recommended <emphasis>not</emphasis> to -use three-pass audio mode. -This feature is only left for compatibility purposes and for expert -users who understand when it is safe to use and when it is not. -If you have never heard of three-pass mode before, forget that we -even mentioned it! -</para> - -<para> -There have also been reports of A/V desync when encoding from stdin -with <application>MEncoder</application>. -Do not do this! Always use a file or CD/DVD/etc device as input. -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="menc-feat-dvd-mpeg4-codec"> -<title>Choosing the video codec</title> - -<para> -Which video codec is best to choose depends on several factors, -like size, quality, streamability, usability and popularity, some of -which widely depend on personal taste and technical constraints. -</para> -<itemizedlist> -<listitem> - <para> - <emphasis role="bold">Compression efficiency</emphasis>: - It is quite easy to understand that most newer-generation codecs are - made to increase quality and compression. - Therefore, the authors of this guide and many other people suggest that - you cannot go wrong - <footnote id='fn-menc-feat-dvd-mpeg4-codec-cpu'><para> - Be careful, however: Decoding DVD-resolution MPEG-4 AVC videos - requires a fast machine (i.e. a Pentium 4 over 1.5GHz or a Pentium M - over 1GHz). - </para></footnote> - when choosing MPEG-4 AVC codecs like - <systemitem class="library">x264</systemitem> instead of MPEG-4 ASP codecs - such as <systemitem class="library">libavcodec</systemitem> MPEG-4 or - <systemitem class="library">Xvid</systemitem>. - (Advanced codec developers may be interested in reading Michael - Niedermayer's opinion on - "<ulink url="http://guru.multimedia.cx/?p=10">why MPEG4-ASP sucks</ulink>".) - Likewise, you should get better quality using MPEG-4 ASP than you - would with MPEG-2 codecs. - </para> - - <para> - However, newer codecs which are in heavy development can suffer from - bugs which have not yet been noticed and which can ruin an encode. - This is simply the tradeoff for using bleeding-edge technology. - </para> - - <para> - What is more, beginning to use a new codec requires that you spend some - time becoming familiar with its options, so that you know what - to adjust to achieve a desired picture quality. - </para> -</listitem> - -<listitem><para> - <emphasis role="bold">Hardware compatibility</emphasis>: - It usually takes a long time for standalone video players to begin to - include support for the latest video codecs. - As a result, most only support MPEG-1 (like VCD, XVCD and KVCD), MPEG-2 - (like DVD, SVCD and KVCD) and MPEG-4 ASP (like DivX, - <systemitem class="library">libavcodec</systemitem>'s LMP4 and - <systemitem class="library">Xvid</systemitem>) - (Beware: Usually, not all MPEG-4 ASP features are supported). - Please refer to the technical specs of your player (if they are available), - or google around for more information. -</para></listitem> - -<listitem> - <para> - <emphasis role="bold">Best quality per encoding time</emphasis>: - Codecs that have been around for some time (such as - <systemitem class="library">libavcodec</systemitem> MPEG-4 and - <systemitem class="library">Xvid</systemitem>) are usually heavily - optimized with all kinds of smart algorithms and SIMD assembly code. - That is why they tend to yield the best quality per encoding time ratio. - However, they may have some very advanced options that, if enabled, - will make the encode really slow for marginal gains. - </para> - - <para> - If you are after blazing speed you should stick around the default - settings of the video codec (although you should still try the other - options which are mentioned in other sections of this guide). - </para> - - <para> - You may also consider choosing a codec which can do multi-threaded - processing, though this is only useful for users of machines with - several CPUs. - <systemitem class="library">libavcodec</systemitem> MPEG-4 does - allow that, but speed gains are limited, and there is a slight - negative effect on picture quality. - <systemitem class="library">Xvid</systemitem>'s multi-threaded encoding, - activated by the <option>threads</option> option, can be used to - boost encoding speed — by about 40-60% in typical cases — - with little if any picture degradation. - <systemitem class="library">x264</systemitem> also allows multi-threaded - encoding, which currently speeds up encoding by 94% per CPU core while - lowering PSNR between 0.005dB and 0.01dB on a typical setup. - </para> -</listitem> - -<listitem> - <para> - <emphasis role="bold">Personal taste</emphasis>: - This is where it gets almost irrational: For the same reason that some - hung on to DivX 3 for years when newer codecs were already doing wonders, - some folks will prefer <systemitem class="library">Xvid</systemitem> - or <systemitem class="library">libavcodec</systemitem> MPEG-4 over - <systemitem class="library">x264</systemitem>. - </para> - <para> - You should make your own judgement; do not take advice from people who - swear by one codec. - Take a few sample clips from raw sources and compare different - encoding options and codecs to find one that suits you best. - The best codec is the one you master, and the one that looks - best to your eyes on your display - <footnote id='fn-menc-feat-dvd-mpeg4-codec-playback'><para> - The same encode may not look the same on someone else's monitor or - when played back by a different decoder, so future-proof your encodes by - playing them back on different setups. - </para></footnote>! - </para> -</listitem> -</itemizedlist> - -<para> -Please refer to the section -<link linkend="menc-feat-selecting-codec">selecting codecs and container formats</link> -to get a list of supported codecs. -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="menc-feat-dvd-mpeg4-audio"> -<title>Audio</title> - -<para> -Audio is a much simpler problem to solve: if you care about quality, just -leave it as is. -Even AC-3 5.1 streams are at most 448Kbit/s, and they are worth every bit. -You might be tempted to transcode the audio to high quality Vorbis, but -just because you do not have an A/V receiver for AC-3 pass-through today -does not mean you will not have one tomorrow. Future-proof your DVD rips by -preserving the AC-3 stream. -You can keep the AC-3 stream either by copying it directly into the video -stream <link linkend="menc-feat-mpeg4">during the encoding</link>. -You can also extract the AC-3 stream in order to mux it into containers such -as NUT or Matroska. -<screen> -mplayer <replaceable>source_file.vob</replaceable> -aid 129 -dumpaudio -dumpfile <replaceable>sound.ac3</replaceable> -</screen> -will dump into the file <replaceable>sound.ac3</replaceable> the -audio track number 129 from the file -<replaceable>source_file.vob</replaceable> (NB: DVD VOB files -usually use a different audio numbering, -which means that the VOB audio track 129 is the 2nd audio track of the file). -</para> - -<para> -But sometimes you truly have no choice but to further compress the -sound so that more bits can be spent on the video. -Most people choose to compress audio with either MP3 or Vorbis audio codecs. -While the latter is a very space-efficient codec, MP3 is better supported -by hardware players, although this trend is changing. -</para> - -<para> -Do <emphasis>not</emphasis> use <option>-nosound</option> when encoding -a file with audio, even if you will be encoding and muxing audio -separately later. -Though it may work in ideal cases, using <option>-nosound</option> is -likely to hide some problems in your encoding command line setting. -In other words, having a soundtrack during your encode assures you that, -provided you do not see messages such as -<quote>Too many audio packets in the buffer</quote>, you will be able -to get proper sync. -</para> - -<para> -You need to have <application>MEncoder</application> process the sound. -You can for example copy the original soundtrack during the encode with -<option>-oac copy</option> or convert it to a "light" 4 kHz mono WAV -PCM with <option>-oac pcm -channels 1 -srate 4000</option>. -Otherwise, in some cases, it will generate a video file that will not sync -with the audio. -Such cases are when the number of video frames in the source file does -not match up to the total length of audio frames or whenever there -are discontinuities/splices where there are missing or extra audio frames. -The correct way to handle this kind of problem is to insert silence or -cut audio at these points. -However <application>MPlayer</application> cannot do that, so if you -demux the AC-3 audio and encode it with a separate app (or dump it to PCM with -<application>MPlayer</application>), the splices will be left incorrect -and the only way to correct them is to drop/duplicate video frames at the -splice. -As long as <application>MEncoder</application> sees the audio when it is -encoding the video, it can do this dropping/duping (which is usually OK -since it takes place at full black/scene change), but if -<application>MEncoder</application> cannot see the audio, it will just -process all frames as-is and they will not fit the final audio stream when -you for example merge your audio and video track into a Matroska file. -</para> - -<para> -First of all, you will have to convert the DVD sound into a WAV file that the -audio codec can use as input. -For example: -<screen> -mplayer <replaceable>source_file.vob</replaceable> -ao pcm:file=<replaceable>destination_sound.wav</replaceable> \ - -vc dummy -aid 1 -vo null -</screen> -will dump the second audio track from the file -<replaceable>source_file.vob</replaceable> into the file -<replaceable>destination_sound.wav</replaceable>. -You may want to normalize the sound before encoding, as DVD audio tracks -are commonly recorded at low volumes. -You can use the tool <application>normalize</application> for instance, -which is available in most distributions. -If you are using Windows, a tool such as <application>BeSweet</application> -can do the same job. -You will compress in either Vorbis or MP3. -For example: -<screen>oggenc -q1 <replaceable>destination_sound.wav</replaceable></screen> -will encode <replaceable>destination_sound.wav</replaceable> with -the encoding quality 1, which is roughly equivalent to 80Kb/s, and -is the minimum quality at which you should encode if you care about -quality. -Please note that <application>MEncoder</application> currently cannot -mux Vorbis audio tracks -into the output file because it only supports AVI and MPEG -containers as an output, each of which may lead to audio/video -playback synchronization problems with some players when the AVI file -contain VBR audio streams such as Vorbis. -Do not worry, this document will show you how you can do that with third -party programs. -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="menc-feat-dvd-mpeg4-muxing"> -<title>Muxing</title> - -<para> -Now that you have encoded your video, you will most likely want -to mux it with one or more audio tracks into a movie container, such -as AVI, MPEG, Matroska or NUT. -<application>MEncoder</application> is currently only able to natively output -audio and video into MPEG and AVI container formats. -for example: -<screen> -mencoder -oac copy -ovc copy -o <replaceable>output_movie.avi</replaceable> \ - -audiofile <replaceable>input_audio.mp2</replaceable> <replaceable>input_video.avi</replaceable> -</screen> -This would merge the video file <replaceable>input_video.avi</replaceable> -and the audio file <replaceable>input_audio.mp2</replaceable> -into the AVI file <replaceable>output_movie.avi</replaceable>. -This command works with MPEG-1 layer I, II and III (more commonly known -as MP3) audio, WAV and a few other audio formats too. -</para> - -<para> -<application>MEncoder</application> features experimental support for -<systemitem class="library">libavformat</systemitem>, which is a -library from the FFmpeg project that supports muxing and demuxing -a variety of containers. -For example: -<screen> -mencoder -oac copy -ovc copy -o <replaceable>output_movie.asf</replaceable> -audiofile <replaceable>input_audio.mp2</replaceable> \ - <replaceable>input_video.avi</replaceable> -of lavf -lavfopts format=asf -</screen> -This will do the same thing as the previous example, except that -the output container will be ASF. -Please note that this support is highly experimental (but getting -better every day), and will only work if you compiled -<application>MPlayer</application> with the support for -<systemitem class="library">libavformat</systemitem> enabled (which -means that a pre-packaged binary version will not work in most cases). -</para> - - -<sect3 id="menc-feat-dvd-mpeg4-muxing-filter-issues"> -<title>Improving muxing and A/V sync reliability</title> - -<para> -You may experience some serious A/V sync problems while trying to mux -your video and some audio tracks, where no matter how you adjust the -audio delay, you will never get proper sync. -That may happen when you use some video filters that will drop or -duplicate some frames, like the inverse telecine filters. -It is strongly encouraged to append the <option>harddup</option> video -filter at the end of the filter chain to avoid this kind of problem. -</para> - -<para> -Without <option>harddup</option>, if <application>MEncoder</application> -wants to duplicate a frame, it relies on the muxer to put a mark on the -container so that the last frame will be displayed again to maintain -sync while writing no actual frame. -With <option>harddup</option>, <application>MEncoder</application> -will instead just push the last frame displayed again into the filter -chain. -This means that the encoder receives the <emphasis>exact</emphasis> -same frame twice, and compresses it. -This will result in a slightly bigger file, but will not cause problems -when demuxing or remuxing into other container formats. -</para> - -<para> -You may also have no choice but to use <option>harddup</option> with -container formats that are not too tightly linked with -<application>MEncoder</application> such as the ones supported through -<systemitem class="library">libavformat</systemitem>, which may not -support frame duplication at the container level. -</para> -</sect3> - - -<sect3 id="menc-feat-dvd-mpeg4-muxing-avi-limitations"> -<title>Limitations of the AVI container</title> - -<para> -Although it is the most widely-supported container format after MPEG-1, -AVI also has some major drawbacks. -Perhaps the most obvious is the overhead. -For each chunk of the AVI file, 24 bytes are wasted on headers and index. -This translates into a little over 5 MB per hour, or 1-2.5% -overhead for a 700 MB movie. This may not seem like much, but it could -mean the difference between being able to use 700 kbit/sec video or -714 kbit/sec, and every bit of quality counts. -</para> - -<para> -In addition this gross inefficiency, AVI also has the following major -limitations: -</para> - -<orderedlist> -<listitem><para> - Only fixed-fps content can be stored. This is particularly limiting - if the original material you want to encode is mixed content, for - example a mix of NTSC video and film material. - Actually there are hacks that can be used to store mixed-framerate - content in AVI, but they increase the (already huge) overhead - fivefold or more and so are not practical. -</para></listitem> -<listitem><para> - Audio in AVI files must be either constant-bitrate (CBR) or - constant-framesize (i.e. all frames decode to the same number of - samples). - Unfortunately, the most efficient codec, Vorbis, does not meet - either of these requirements. - Therefore, if you plan to store your movie in AVI, you will have to - use a less efficient codec such as MP3 or AC-3. -</para></listitem> -</orderedlist> - -<para> -Having said all that, <application>MEncoder</application> does not -currently support variable-fps output or Vorbis encoding. -Therefore, you may not see these as limitations if -<application>MEncoder</application> is the -only tool you will be using to produce your encodes. -However, it is possible to use <application>MEncoder</application> -only for video encoding, and then use external tools to encode -audio and mux it into another container format. -</para> -</sect3> - - -<sect3 id="menc-feat-dvd-mpeg4-muxing-matroska"> -<title>Muxing into the Matroska container</title> - -<para> -Matroska is a free, open standard container format, aiming -to offer a lot of advanced features, which older containers -like AVI cannot handle. -For example, Matroska supports variable bitrate audio content -(VBR), variable framerates (VFR), chapters, file attachments, -error detection code (EDC) and modern A/V Codecs like "Advanced Audio -Coding" (AAC), "Vorbis" or "MPEG-4 AVC" (H.264), next to nothing -handled by AVI. -</para> - -<para> -The tools required to create Matroska files are collectively called -<application>mkvtoolnix</application>, and are available for most -Unix platforms as well as <application>Windows</application>. -Because Matroska is an open standard you may find other -tools that suit you better, but since mkvtoolnix is the most -common, and is supported by the Matroska team itself, we will -only cover its usage. -</para> - -<para> -Probably the easiest way to get started with Matroska is to use -<application>MMG</application>, the graphical frontend shipped with -<application>mkvtoolnix</application>, and follow the -<ulink url="http://www.bunkus.org/videotools/mkvtoolnix/doc/mkvmerge-gui.html">guide to mkvmerge GUI (mmg)</ulink> -</para> - -<para> -You may also mux audio and video files using the command line: -<screen> -mkvmerge -o <replaceable>output.mkv</replaceable> <replaceable>input_video.avi</replaceable> <replaceable>input_audio1.mp3</replaceable> <replaceable>input_audio2.ac3</replaceable> -</screen> -This would merge the video file <replaceable>input_video.avi</replaceable> -and the two audio files <replaceable>input_audio1.mp3</replaceable> -and <replaceable>input_audio2.ac3</replaceable> into the Matroska -file <replaceable>output.mkv</replaceable>. -Matroska, as mentioned earlier, is able to do much more than that, like -multiple audio tracks (including fine-tuning of audio/video -synchronization), chapters, subtitles, splitting, etc... -Please refer to the documentation of those applications for -more details. -</para> -</sect3> -</sect2> -</sect1> - - -<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - - -<sect1 id="menc-feat-telecine"> -<title>How to deal with telecine and interlacing within NTSC DVDs</title> - -<sect2 id="menc-feat-telecine-intro"> -<title>Introduction</title> - -<formalpara> -<title>What is telecine?</title> -<para> -If you do not understand much of what is written in this document, read the -<ulink url="http://en.wikipedia.org/wiki/Telecine">Wikipedia entry on telecine</ulink>. -It is an understandable and reasonably comprehensive -description of what telecine is. -</para></formalpara> - -<formalpara> -<title>A note about the numbers.</title> -<para> -Many documents, including the article linked above, refer to the fields -per second value of NTSC video as 59.94 and the corresponding frames -per second values as 29.97 (for telecined and interlaced) and 23.976 -(for progressive). For simplicity, some documents even round these -numbers to 60, 30, and 24. -</para></formalpara> - -<para> -Strictly speaking, all those numbers are approximations. Black and -white NTSC video was exactly 60 fields per second, but 60000/1001 -was later chosen to accommodate color data while remaining compatible -with contemporary black and white televisions. Digital NTSC video -(such as on a DVD) is also 60000/1001 fields per second. From this, -interlaced and telecined video are derived to be 30000/1001 frames -per second; progressive video is 24000/1001 frames per second. -</para> - -<para> -Older versions of the <application>MEncoder</application> documentation -and many archived mailing list posts refer to 59.94, 29.97, and 23.976. -All <application>MEncoder</application> documentation has been updated -to use the fractional values, and you should use them too. -</para> - -<para> -<option>-ofps 23.976</option> is incorrect. -<option>-ofps 24000/1001</option> should be used instead. -</para> - -<formalpara> -<title>How telecine is used.</title> -<para> -All video intended to be displayed on an NTSC -television set must be 60000/1001 fields per second. Made-for-TV movies -and shows are often filmed directly at 60000/1001 fields per second, but -the majority of cinema is filmed at 24 or 24000/1001 frames per -second. When cinematic movie DVDs are mastered, the video is then -converted for television using a process called telecine. -</para></formalpara> - -<para> -On a DVD, the video is never actually stored as 60000/1001 fields per -second. For video that was originally 60000/1001, each pair of fields is -combined to form a frame, resulting in 30000/1001 frames per -second. Hardware DVD players then read a flag embedded in the video -stream to determine whether the odd- or even-numbered lines should -form the first field. -</para> - -<para> -Usually, 24000/1001 frames per second content stays as it is when -encoded for a DVD, and the DVD player must perform telecining -on-the-fly. Sometimes, however, the video is telecined -<emphasis>before</emphasis> being stored on the DVD; even though it -was originally 24000/1001 frames per second, it becomes 60000/1001 fields per -second. When it is stored on the DVD, pairs of fields are combined to form -30000/1001 frames per second. -</para> - -<para> -When looking at individual frames formed from 60000/1001 fields per -second video, telecined or otherwise, interlacing is clearly visible -wherever there is any motion, because one field (say, the -even-numbered lines) represents a moment in time 1/(60000/1001) -seconds later than the other. Playing interlaced video on a computer -looks ugly both because the monitor is higher resolution and because -the video is shown frame-after-frame instead of field-after-field. -</para> - -<itemizedlist> -<title>Notes:</title> -<listitem><para> - This section only applies to NTSC DVDs, and not PAL. -</para></listitem> -<listitem><para> - The example <application>MEncoder</application> lines throughout the - document are <emphasis role="bold">not</emphasis> intended for - actual use. They are simply the bare minimum required to encode the - pertaining video category. How to make good DVD rips or fine-tune - <systemitem class="library">libavcodec</systemitem> for maximal - quality is not within the scope of this section; refer to other - sections within the <link linkend="encoding-guide">MEncoder encoding - guide</link>. -</para></listitem> -<listitem><para> - There are a couple footnotes specific to this guide, linked like this: - <link linkend="menc-feat-telecine-footnotes">[1]</link> -</para></listitem> -</itemizedlist> -</sect2> - -<!-- ********** --> - -<sect2 id="menc-feat-telecine-ident"> -<title>How to tell what type of video you have</title> - -<sect3 id="menc-feat-telecine-ident-progressive"> -<title>Progressive</title> - -<para> -Progressive video was originally filmed at 24000/1001 fps, and stored -on the DVD without alteration. -</para> - -<para> -When you play a progressive DVD in <application>MPlayer</application>, -<application>MPlayer</application> will print the following line as -soon as the movie begins to play: -<screen> -demux_mpg: 24000/1001 fps progressive NTSC content detected, switching framerate. -</screen> -From this point forward, demux_mpg should never say it finds -"30000/1001 fps NTSC content." -</para> - -<para> -When you watch progressive video, you should never see any -interlacing. Beware, however, because sometimes there is a tiny bit -of telecine mixed in where you would not expect. I have encountered TV -show DVDs that have one second of telecine at every scene change, or -at seemingly random places. I once watched a DVD that had a -progressive first half, and the second half was telecined. If you -want to be <emphasis>really</emphasis> thorough, you can scan the -entire movie: -<screen>mplayer dvd://1 -nosound -vo null -benchmark</screen> -Using <option>-benchmark</option> makes -<application>MPlayer</application> play the movie as quickly as it -possibly can; still, depending on your hardware, it can take a -while. Every time demux_mpg reports a framerate change, the line -immediately above will show you the time at which the change -occurred. -</para> - -<para> -Sometimes progressive video on DVDs is referred to as -"soft-telecine" because it is intended to -be telecined by the DVD player. -</para> -</sect3> - - -<sect3 id="menc-feat-telecine-ident-telecined"> -<title>Telecined</title> - -<para> -Telecined video was originally filmed at 24000/1001, but was telecined -<emphasis>before</emphasis> it was written to the DVD. -</para> - -<para> -<application>MPlayer</application> does not (ever) report any -framerate changes when it plays telecined video. -</para> - -<para> -Watching a telecined video, you will see interlacing artifacts that -seem to "blink": they repeatedly appear and disappear. -You can look closely at this by -<orderedlist> -<listitem><screen>mplayer dvd://1</screen></listitem> -<listitem><para> - Seek to a part with motion. -</para></listitem> -<listitem><para> - Use the <keycap>.</keycap> key to step forward one frame at a time. -</para></listitem> -<listitem><para> - Look at the pattern of interlaced-looking and progressive-looking - frames. If the pattern you see is PPPII,PPPII,PPPII,... then the - video is telecined. If you see some other pattern, then the video - may have been telecined using some non-standard method; - <application>MEncoder</application> cannot losslessly convert - non-standard telecine to progressive. If you do not see any - pattern at all, then it is most likely interlaced. -</para></listitem> -</orderedlist> -</para> - -<para> -Sometimes telecined video on DVDs is referred to as -"hard-telecine". Since hard-telecine is already 60000/1001 fields -per second, the DVD player plays the video without any manipulation. -</para> - -<para> -Another way to tell if your source is telecined or not is to play -the source with the <option>-vf pullup</option> and <option>-v</option> -command line options to see how <option>pullup</option> matches frames. -If the source is telecined, you should see on the console a 3:2 pattern -with <systemitem>0+.1.+2</systemitem> and <systemitem>0++1</systemitem> -alternating. -This technique has the advantage that you do not need to watch the -source to identify it, which could be useful if you wish to automate -the encoding procedure, or to carry out said procedure remotely via -a slow connection. -</para> -</sect3> - - -<sect3 id="menc-feat-telecine-ident-interlaced"> -<title>Interlaced</title> - -<para> -Interlaced video was originally filmed at 60000/1001 fields per second, -and stored on the DVD as 30000/1001 frames per second. The interlacing effect -(often called "combing") is a result of combining pairs of -fields into frames. Each field is supposed to be 1/(60000/1001) seconds apart, -and when they are displayed simultaneously the difference is apparent. -</para> - -<para> -As with telecined video, <application>MPlayer</application> should -not ever report any framerate changes when playing interlaced content. -</para> - -<para> -When you view an interlaced video closely by frame-stepping with the -<keycap>.</keycap> key, you will see that every single frame is interlaced. -</para> -</sect3> - - -<sect3 id="menc-feat-telecine-ident-mixedpt"> -<title>Mixed progressive and telecine</title> - -<para> -All of a "mixed progressive and telecine" video was originally -24000/1001 frames per second, but some parts of it ended up being telecined. -</para> - -<para> -When <application>MPlayer</application> plays this category, it will -(often repeatedly) switch back and forth between "30000/1001 fps NTSC" -and "24000/1001 fps progressive NTSC". Watch the bottom of -<application>MPlayer</application>'s output to see these messages. -</para> - -<para> -You should check the "30000/1001 fps NTSC" sections to make sure -they are actually telecine, and not just interlaced. -</para> -</sect3> - - -<sect3 id="menc-feat-telecine-ident-mixedpi"> -<title>Mixed progressive and interlaced</title> - -<para> -In "mixed progressive and interlaced" content, progressive -and interlaced video have been spliced together. -</para> - -<para> -This category looks just like "mixed progressive and telecine", -until you examine the 30000/1001 fps sections and see that they do not have the -telecine pattern. -</para> -</sect3> -</sect2> - -<!-- ********** --> - -<sect2 id="menc-feat-telecine-encode"> -<title>How to encode each category</title> -<para> -As I mentioned in the beginning, example <application>MEncoder</application> -lines below are <emphasis role="bold">not</emphasis> meant to actually be used; -they only demonstrate the minimum parameters to properly encode each category. -</para> - - -<sect3 id="menc-feat-telecine-encode-progressive"> -<title>Progressive</title> -<para> -Progressive video requires no special filtering to encode. The only -parameter you need to be sure to use is <option>-ofps 24000/1001</option>. -Otherwise, <application>MEncoder</application> -will try to encode at 30000/1001 fps and will duplicate frames. -</para> - -<para> -<screen>mencoder dvd://1 -oac copy -ovc lavc -ofps 24000/1001</screen> -</para> - -<para> -It is often the case, however, that a video that looks progressive -actually has very short parts of telecine mixed in. Unless you are -sure, it is safest to treat the video as -<link linkend="menc-feat-telecine-encode-mixedpt">mixed progressive and telecine</link>. -The performance loss is small -<link linkend="menc-feat-telecine-footnotes">[3]</link>. -</para> -</sect3> - - -<sect3 id="menc-feat-telecine-encode-telecined"> -<title>Telecined</title> - -<para> -Telecine can be reversed to retrieve the original 24000/1001 content, -using a process called inverse-telecine. -<application>MPlayer</application> contains several filters to -accomplish this; the best filter, <option>pullup</option>, is described -in the <link linkend="menc-feat-telecine-encode-mixedpt">mixed -progressive and telecine</link> section. -</para> -</sect3> - - -<sect3 id="menc-feat-telecine-encode-interlaced"> -<title>Interlaced</title> - -<para> -For most practical cases it is not possible to retrieve a complete -progressive video from interlaced content. The only way to do so -without losing half of the vertical resolution is to double the -framerate and try to "guess" what ought to make up the -corresponding lines for each field (this has drawbacks - see method 3). -</para> - -<orderedlist> -<listitem><para> - Encode the video in interlaced form. Normally, interlacing wreaks - havoc with the encoder's ability to compress well, but - <systemitem class="library">libavcodec</systemitem> has two - parameters specifically for dealing with storing interlaced video a - bit better: <option>ildct</option> and <option>ilme</option>. Also, - using <option>mbd=2</option> is strongly recommended - <link linkend="menc-feat-telecine-footnotes">[2] </link> because it - will encode macroblocks as non-interlaced in places where there is - no motion. Note that <option>-ofps</option> is NOT needed here. - <screen>mencoder dvd://1 -oac copy -ovc lavc -lavcopts ildct:ilme:mbd=2</screen> -</para></listitem> -<listitem><para> - Use a deinterlacing filter before encoding. There are several of - these filters available to choose from, each with its own advantages - and disadvantages. Consult <option>mplayer -pphelp</option> and - <option>mplayer -vf help</option> to see what is available - (grep for "deint"), read Michael Niedermayer's - <ulink url="http://guru.multimedia.cx/deinterlacing-filters/">Deinterlacing filters comparison</ulink>, - and search the - <ulink url="http://www.mplayerhq.hu/design7/mailing_lists.html"> - MPlayer mailing lists</ulink> to find many discussions about the - various filters. - Again, the framerate is not changing, so no - <option>-ofps</option>. Also, deinterlacing should be done after - cropping <link linkend="menc-feat-telecine-footnotes">[1]</link> and - before scaling. - <screen>mencoder dvd://1 -oac copy -vf yadif -ovc lavc</screen> -</para></listitem> -<listitem><para> - Unfortunately, this option is buggy with - <application>MEncoder</application>; it ought to work well with - <application>MEncoder G2</application>, but that is not here yet. You - might experience crashes. Anyway, the purpose of <option> -vf - tfields</option> is to create a full frame out of each field, which - makes the framerate 60000/1001. The advantage of this approach is that no - data is ever lost; however, since each frame comes from only one - field, the missing lines have to be interpolated somehow. There are - no very good methods of generating the missing data, and so the - result will look a bit similar to when using some deinterlacing - filters. Generating the missing lines creates other issues, as well, - simply because the amount of data doubles. So, higher encoding - bitrates are required to maintain quality, and more CPU power is - used for both encoding and decoding. tfields has several different - options for how to create the missing lines of each frame. If you - use this method, then Reference the manual, and chose whichever - option looks best for your material. Note that when using - <option>tfields</option> you - <emphasis role="bold">have to</emphasis> specify both - <option>-fps</option> and <option>-ofps</option> to be twice the - framerate of your original source. - <screen> -mencoder dvd://1 -oac copy -vf tfields=2 -ovc lavc \ - -fps 60000/1001 -ofps 60000/1001<!-- - --></screen> -</para></listitem> -<listitem><para> - If you plan on downscaling dramatically, you can extract and encode - only one of the two fields. Of course, you will lose half the vertical - resolution, but if you plan on downscaling to at most 1/2 of the - original, the loss will not matter much. The result will be a - progressive 30000/1001 frames per second file. The procedure is to use - <option>-vf field</option>, then crop - <link linkend="menc-feat-telecine-footnotes">[1]</link> and scale - appropriately. Remember that you will have to adjust the scale to - compensate for the vertical resolution being halved. - <screen>mencoder dvd://1 -oac copy -vf field=0 -ovc lavc</screen> -</para></listitem> -</orderedlist> -</sect3> - - -<sect3 id="menc-feat-telecine-encode-mixedpt"> -<title>Mixed progressive and telecine</title> - -<para> -In order to turn mixed progressive and telecine video into entirely -progressive video, the telecined parts have to be -inverse-telecined. There are three ways to accomplish this, -described below. Note that you should -<emphasis role="bold">always</emphasis> inverse-telecine before any -rescaling; unless you really know what you are doing, -inverse-telecine before cropping, too -<link linkend="menc-feat-telecine-footnotes">[1]</link>. -<option>-ofps 24000/1001</option> is needed here because the output video -will be 24000/1001 frames per second. -</para> - -<itemizedlist> -<listitem><para> - <option>-vf pullup</option> is designed to inverse-telecine - telecined material while leaving progressive data alone. In order to - work properly, <option>pullup</option> <emphasis role="bold">must</emphasis> - be followed by the <option>softskip</option> filter or - else <application>MEncoder</application> will crash. - <option>pullup</option> is, however, the cleanest and most - accurate method available for encoding both telecine and - "mixed progressive and telecine". - <screen> -mencoder dvd://1 -oac copy -vf pullup,softskip - -ovc lavc -ofps 24000/1001<!-- - --></screen> -</para></listitem> -<listitem><para> - <option>-vf filmdint</option> is similar to - <option>-vf pullup</option>: both filters attempt to match a pair of - fields to form a complete frame. <option>filmdint</option> will - deinterlace individual fields that it cannot match, however, whereas - <option>pullup</option> will simply drop them. Also, the two filters - have separate detection code, and <option>filmdint</option> may tend to match fields a - bit less often. Which filter works better may depend on the input - video and personal taste; feel free to experiment with fine-tuning - the filters' options if you encounter problems with either one (see - the man page for details). For most well-mastered input video, - however, both filters work quite well, so either one is a safe choice - to start with. - <screen> -mencoder dvd://1 -oac copy -vf filmdint -ovc lavc -ofps 24000/1001<!-- - --></screen> -</para></listitem> -<listitem><para> - An older method - is to, rather than inverse-telecine the telecined parts, telecine - the non-telecined parts and then inverse-telecine the whole - video. Sound confusing? softpulldown is a filter that goes through - a video and makes the entire file telecined. If we follow - softpulldown with either <option>detc</option> or - <option>ivtc</option>, the final result will be entirely - progressive. <option>-ofps 24000/1001</option> is needed. - <screen> -mencoder dvd://1 -oac copy -vf softpulldown,ivtc=1 -ovc lavc -ofps 24000/1001 - </screen> -</para></listitem> - -</itemizedlist> -</sect3> - - -<sect3 id="menc-feat-telecine-encode-mixedpi"> -<title>Mixed progressive and interlaced</title> - -<para> -There are two options for dealing with this category, each of -which is a compromise. You should decide based on the -duration/location of each type. -</para> - -<itemizedlist> -<listitem> - <para> - Treat it as progressive. The interlaced parts will look interlaced, - and some of the interlaced fields will have to be dropped, resulting - in a bit of uneven jumpiness. You can use a postprocessing filter if - you want to, but it may slightly degrade the progressive parts. - </para> - - <para> - This option should definitely not be used if you want to eventually - display the video on an interlaced device (with a TV card, for - example). If you have interlaced frames in a 24000/1001 frames per - second video, they will be telecined along with the progressive - frames. Half of the interlaced "frames" will be displayed for three - fields' duration (3/(60000/1001) seconds), resulting in a flicking - "jump back in time" effect that looks quite bad. If you - even attempt this, you <emphasis role="bold">must</emphasis> use a - deinterlacing filter like <option>lb</option> or - <option>l5</option>. - </para> - - <para> - It may also be a bad idea for progressive display, too. It will drop - pairs of consecutive interlaced fields, resulting in a discontinuity - that can be more visible than with the second method, which shows - some progressive frames twice. 30000/1001 frames per second interlaced - video is already a bit choppy because it really should be shown at - 60000/1001 fields per second, so the duplicate frames do not stand out as - much. - </para> - - <para> - Either way, it is best to consider your content and how you intend to - display it. If your video is 90% progressive and you never intend to - show it on a TV, you should favor a progressive approach. If it is - only half progressive, you probably want to encode it as if it is all - interlaced. - </para> -</listitem> - -<listitem><para> - Treat it as interlaced. Some frames of the progressive parts will - need to be duplicated, resulting in uneven jumpiness. Again, - deinterlacing filters may slightly degrade the progressive parts. -</para></listitem> -</itemizedlist> -</sect3> -</sect2> - -<!-- ********** --> - -<sect2 id="menc-feat-telecine-footnotes"> -<title>Footnotes</title> - -<orderedlist> -<listitem> - <formalpara> - <title>About cropping:</title> - <para> - Video data on DVDs are stored in a format called YUV 4:2:0. In YUV - video, luma ("brightness") and chroma ("color") - are stored separately. Because the human eye is somewhat less - sensitive to color than it is to brightness, in a YUV 4:2:0 picture - there is only one chroma pixel for every four luma pixels. In a - progressive picture, each square of four luma pixels (two on each - side) has one common chroma pixel. You must crop progressive YUV - 4:2:0 to even resolutions, and use even offsets. For example, - <option>crop=716:380:2:26</option> is OK but - <option>crop=716:380:3:26 </option> is not. - </para> - </formalpara> - - <para> - When you are dealing with interlaced YUV 4:2:0, the situation is a - bit more complicated. Instead of every four luma pixels in the - <emphasis>frame</emphasis> sharing a chroma pixel, every four luma - pixels in each <emphasis> field</emphasis> share a chroma - pixel. When fields are interlaced to form a frame, each scanline is - one pixel high. Now, instead of all four luma pixels being in a - square, there are two pixels side-by-side, and the other two pixels - are side-by-side two scanlines down. The two luma pixels in the - intermediate scanline are from the other field, and so share a - different chroma pixel with two luma pixels two scanlines away. All - this confusion makes it necessary to have vertical crop dimensions - and offsets be multiples of four. Horizontal can stay even. - </para> - - <para> - For telecined video, I recommend that cropping take place after - inverse telecining. Once the video is progressive you only need to - crop by even numbers. If you really want to gain the slight speedup - that cropping first may offer, you must crop vertically by multiples - of four or else the inverse-telecine filter will not have proper data. - </para> - - <para> - For interlaced (not telecined) video, you must always crop - vertically by multiples of four unless you use <option>-vf - field</option> before cropping. - </para> -</listitem> - -<listitem><formalpara> - <title>About encoding parameters and quality:</title> - <para> - Just because I recommend <option>mbd=2</option> here does not mean it - should not be used elsewhere. Along with <option>trell</option>, - <option>mbd=2</option> is one of the two - <systemitem class="library">libavcodec</systemitem> options that - increases quality the most, and you should always use at least those - two unless the drop in encoding speed is prohibitive (e.g. realtime - encoding). There are many other options to - <systemitem class="library">libavcodec</systemitem> that increase - encoding quality (and decrease encoding speed) but that is beyond - the scope of this document. - </para> -</formalpara></listitem> - -<listitem><formalpara> - <title>About the performance of pullup:</title> - <para> - It is safe to use <option>pullup</option> (along with <option>softskip - </option>) on progressive video, and is usually a good idea unless - the source has been definitively verified to be entirely progressive. - The performance loss is small for most cases. On a bare-minimum encode, - <option>pullup</option> causes <application>MEncoder</application> to - be 50% slower. Adding sound processing and advanced <option>lavcopts - </option> overshadows that difference, bringing the performance - decrease of using <option>pullup</option> down to 2%. - </para> -</formalpara></listitem> -</orderedlist> -</sect2> -</sect1> - - -<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - - -<sect1 id="menc-feat-enc-libavcodec"> -<title>Encoding with the <systemitem class="library">libavcodec</systemitem> - codec family</title> - -<para> -<systemitem class="library">libavcodec</systemitem> -provides simple encoding to a lot of interesting video and audio formats. -You can encode to the following codecs (more or less up to date): -</para> - -<!-- ********** --> - -<sect2 id="menc-feat-enc-libavcodec-video-codecs"> -<title><systemitem class="library">libavcodec</systemitem>'s - video codecs</title> - -<para> -<informaltable frame="all"> -<tgroup cols="2"> -<thead> - <row><entry>Video codec name</entry><entry>Description</entry></row> -</thead> -<tbody> -<row> - <entry>mjpeg</entry> - <entry>Motion JPEG</entry> -</row> -<row> - <entry>ljpeg</entry> - <entry>lossless JPEG</entry> -</row> -<row> - <entry>jpegls</entry> - <entry>JPEG LS</entry> -</row> -<row> - <entry>targa</entry> - <entry>Targa image</entry> -</row> -<row> - <entry>gif</entry> - <entry>GIF image</entry> -</row> -<row> - <entry>bmp</entry> - <entry>BMP image</entry> -</row> -<row> - <entry>png</entry> - <entry>PNG image</entry> -</row> -<row> - <entry>h261</entry> - <entry>H.261</entry> -</row> -<row> - <entry>h263</entry> - <entry>H.263 </entry> -</row> -<row> - <entry>h263p</entry> - <entry>H.263+</entry> -</row> -<row> - <entry>mpeg4</entry> - <entry>ISO standard MPEG-4 (DivX, 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> -<row> - <entry>wmv1</entry> - <entry>Windows Media Video, version 1 (AKA WMV7)</entry> -</row> -<row> - <entry>wmv2</entry> - <entry>Windows Media Video, version 2 (AKA WMV8)</entry> -</row> -<row> - <entry>rv10</entry> - <entry>RealVideo 1.0</entry> -</row> -<row> - <entry>rv20</entry> - <entry>RealVideo 2.0</entry> -</row> -<row> - <entry>mpeg1video</entry> - <entry>MPEG-1 video</entry> -</row> -<row> - <entry>mpeg2video</entry> - <entry>MPEG-2 video</entry> -</row> -<row> - <entry>huffyuv</entry> - <entry>lossless compression</entry> -</row> -<row> - <entry>ffvhuff</entry> - <entry>FFmpeg modified huffyuv lossless</entry> -</row> -<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> -<row> - <entry>svq1</entry> - <entry>Sorenson video 1</entry> -</row> -<row> - <entry>flv</entry> - <entry>Sorenson H.263 used in Flash Video</entry> -</row> -<row> - <entry>flashsv</entry> - <entry>Flash Screen Video</entry> -</row> -<row> - <entry>dvvideo</entry> - <entry>Sony Digital Video</entry> -</row> -<row> - <entry>snow</entry> - <entry>FFmpeg's experimental wavelet-based codec</entry> -</row> -<row> - <entry>zmbv</entry> - <entry>Zip Motion Blocks Video</entry> -</row> -<row> - <entry>dnxhd</entry> - <entry>AVID DNxHD</entry> -</row> -</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: -<screen> -mencoder dvd://2 -o <replaceable>title2.avi</replaceable> -ovc lavc -lavcopts vcodec=mjpeg -oac copy -</screen> -</para></informalexample> -</sect2> - -<!-- ********** --> - -<sect2 id="menc-feat-enc-libavcodec-audio-codecs"> -<title><systemitem class="library">libavcodec</systemitem>'s - audio codecs</title> - -<para> -<informaltable frame="all"> -<tgroup cols="2"> -<thead> -<row><entry>Audio codec name</entry><entry>Description</entry></row> -</thead> -<tbody> -<row> - <entry>ac3</entry> - <entry>Dolby Digital (AC-3)</entry> -</row> -<row> - <entry>adpcm_*</entry> - <entry>Adaptive PCM formats - see supplementary table</entry> -</row> -<row> - <entry>flac</entry> - <entry>Free Lossless Audio Codec (FLAC)</entry> -</row> -<row> - <entry>g726</entry> - <entry>G.726 ADPCM</entry> -</row> -<row> - <entry>libfaac</entry> - <entry>Advanced Audio Coding (AAC) - using FAAC</entry> -</row> -<row> - <entry>libgsm</entry> - <entry>ETSI GSM 06.10 full rate</entry> -</row> -<row> - <entry>libgsm_ms</entry> - <entry>Microsoft GSM</entry> -</row> -<row> - <entry>libmp3lame</entry> - <entry>MPEG-1 audio layer 3 (MP3) - using LAME</entry> -</row> -<row> - <entry>mp2</entry> - <entry>MPEG-1 audio layer 2 (MP2)</entry> -</row> -<row> - <entry>pcm_*</entry> - <entry>PCM formats - see supplementary table</entry> -</row> -<row> - <entry>roq_dpcm</entry> - <entry>Id Software RoQ DPCM</entry> -</row> -<row> - <entry>sonic</entry> - <entry>experimental FFmpeg lossy codec</entry> -</row> -<row> - <entry>sonicls</entry> - <entry>experimental FFmpeg lossless codec</entry> -</row> -<row> - <entry>vorbis</entry> - <entry>Vorbis</entry> -</row> -<row> - <entry>wmav1</entry> - <entry>Windows Media Audio v1</entry> -</row> -<row> - <entry>wmav2</entry> - <entry>Windows Media Audio v2</entry> -</row> -</tbody> -</tgroup> -</informaltable> - -The first column contains the codec names that should be passed after the -<literal>acodec</literal> option, like: <option>-lavcopts acodec=ac3</option> -</para> - -<informalexample><para> -An example with AC-3 compression: -<screen> -mencoder dvd://2 -o <replaceable>title2.avi</replaceable> -oac lavc -lavcopts acodec=ac3 -ovc copy -</screen> -</para></informalexample> - -<para> -Contrary to <systemitem class="library">libavcodec</systemitem>'s video -codecs, its audio codecs do not make a wise usage of the bits they are -given as they lack some minimal psychoacoustic model (if at all) -which most other codec implementations feature. -However, note that all these audio codecs are very fast and work -out-of-the-box everywhere <application>MEncoder</application> has been -compiled with <systemitem class="library">libavcodec</systemitem> (which -is the case most of time), and do not depend on external libraries. -</para> - -<sect3 id="menc-feat-enc-libavcodec-audio-codecs-pcmadpcm"> -<title>PCM/ADPCM format supplementary table</title> - -<para> -<informaltable frame="all"> -<tgroup cols="2"> -<thead> -<row><entry>PCM/ADPCM codec name</entry><entry>Description</entry></row> -</thead> -<tbody> -<row> - <entry>pcm_s32le</entry> - <entry>signed 32-bit little-endian</entry> -</row> -<row> - <entry>pcm_s32be</entry> - <entry>signed 32-bit big-endian</entry> -</row> -<row> - <entry>pcm_u32le</entry> - <entry>unsigned 32-bit little-endian</entry> -</row> -<row> - <entry>pcm_u32be</entry> - <entry>unsigned 32-bit big-endian</entry> -</row> -<row> - <entry>pcm_s24le</entry> - <entry>signed 24-bit little-endian</entry> -</row> -<row> - <entry>pcm_s24be</entry> - <entry>signed 24-bit big-endian</entry> -</row> -<row> - <entry>pcm_u24le</entry> - <entry>unsigned 24-bit little-endian</entry> -</row> -<row> - <entry>pcm_u24be</entry> - <entry>unsigned 24-bit big-endian</entry> -</row> -<row> - <entry>pcm_s16le</entry> - <entry>signed 16-bit little-endian</entry> -</row> -<row> - <entry>pcm_s16be</entry> - <entry>signed 16-bit big-endian</entry> -</row> -<row> - <entry>pcm_u16le</entry> - <entry>unsigned 16-bit little-endian</entry> -</row> -<row> - <entry>pcm_u16be</entry> - <entry>unsigned 16-bit big-endian</entry> -</row> -<row> - <entry>pcm_s8</entry> - <entry>signed 8-bit</entry> -</row> -<row> - <entry>pcm_u8</entry> - <entry>unsigned 8-bit</entry> -</row> -<row> - <entry>pcm_alaw</entry> - <entry>G.711 A-LAW </entry> -</row> -<row> - <entry>pcm_mulaw</entry> - <entry>G.711 μ-LAW</entry> -</row> -<row> - <entry>pcm_s24daud</entry> - <entry>signed 24-bit D-Cinema Audio format</entry> -</row> -<row> - <entry>pcm_zork</entry> - <entry>Activision Zork Nemesis</entry> -</row> -<row> - <entry>adpcm_ima_qt</entry> - <entry>Apple QuickTime</entry> -</row> -<row> - <entry>adpcm_ima_wav</entry> - <entry>Microsoft/IBM WAVE</entry> -</row> -<row> - <entry>adpcm_ima_dk3</entry> - <entry>Duck DK3</entry> -</row> -<row> - <entry>adpcm_ima_dk4</entry> - <entry>Duck DK4</entry> -</row> -<row> - <entry>adpcm_ima_ws</entry> - <entry>Westwood Studios</entry> -</row> -<row> - <entry>adpcm_ima_smjpeg</entry> - <entry>SDL Motion JPEG</entry> -</row> -<row> - <entry>adpcm_ms</entry> - <entry>Microsoft</entry> -</row> -<row> - <entry>adpcm_4xm</entry> - <entry>4X Technologies</entry> -</row> -<row> - <entry>adpcm_xa</entry> - <entry>Phillips Yellow Book CD-ROM eXtended Architecture</entry> -</row> -<row> - <entry>adpcm_ea</entry> - <entry>Electronic Arts</entry> -</row> -<row> - <entry>adpcm_ct</entry> - <entry>Creative 16->4-bit</entry> -</row> -<row> - <entry>adpcm_swf</entry> - <entry>Adobe Shockwave Flash</entry> -</row> -<row> - <entry>adpcm_yamaha</entry> - <entry>Yamaha</entry> -</row> -<row> - <entry>adpcm_sbpro_4</entry> - <entry>Creative VOC SoundBlaster Pro 8->4-bit</entry> -</row> -<row> - <entry>adpcm_sbpro_3</entry> - <entry>Creative VOC SoundBlaster Pro 8->2.6-bit</entry> -</row> -<row> - <entry>adpcm_sbpro_2</entry> - <entry>Creative VOC SoundBlaster Pro 8->2-bit</entry> -</row> -<row> - <entry>adpcm_thp</entry> - <entry>Nintendo GameCube FMV THP</entry> -</row> -<row> - <entry>adpcm_adx</entry> - <entry>Sega/CRI ADX</entry> -</row> -</tbody> -</tgroup> -</informaltable> -</para> -</sect3> - -</sect2> - -<!-- ********** --> - -<sect2 id="menc-feat-dvd-mpeg4-lavc-encoding-options"> -<title>Encoding options of libavcodec</title> - -<para> -Ideally, you would probably want to be able to just tell the encoder to switch -into "high quality" mode and move on. -That would probably be nice, but unfortunately hard to implement as different -encoding options yield different quality results depending on the source -material. That is because compression depends on the visual properties of the -video in question. -For example, Anime and live action have very different properties and -thus require different options to obtain optimum encoding. -The good news is that some options should never be left out, like -<option>mbd=2</option>, <option>trell</option>, and <option>v4mv</option>. -See below for a detailed description of common encoding options. -</para> - -<itemizedlist> -<title>Options to adjust:</title> -<listitem><para> - <emphasis role="bold">vmax_b_frames</emphasis>: 1 or 2 is good, depending on - the movie. - Note that if you need to have your encode be decodable by DivX5, you - need to activate closed GOP support, using - <systemitem class="library">libavcodec</systemitem>'s <option>cgop</option> - option, but you need to deactivate scene detection, which - is not a good idea as it will hurt encode efficiency a bit. -</para></listitem> -<listitem><para> - <emphasis role="bold">vb_strategy=1</emphasis>: helps in high-motion scenes. - On some videos, vmax_b_frames may hurt quality, but vmax_b_frames=2 along - with vb_strategy=1 helps. -</para></listitem> -<listitem><para> - <emphasis role="bold">dia</emphasis>: motion search range. Bigger is better - and slower. - Negative values are a completely different scale. - Good values are -1 for a fast encode, or 2-4 for slower. -</para></listitem> -<listitem><para> - <emphasis role="bold">predia</emphasis>: motion search pre-pass. - Not as important as dia. Good values are 1 (default) to 4. Requires preme=2 - to really be useful. -</para></listitem> -<listitem><para> - <emphasis role="bold">cmp, subcmp, precmp</emphasis>: Comparison function for - motion estimation. - Experiment with values of 0 (default), 2 (hadamard), 3 (dct), and 6 (rate - distortion). - 0 is fastest, and sufficient for precmp. - For cmp and subcmp, 2 is good for Anime, and 3 is good for live action. - 6 may or may not be slightly better, but is slow. -</para></listitem> -<listitem><para> - <emphasis role="bold">last_pred</emphasis>: Number of motion predictors to - take from the previous frame. - 1-3 or so help at little speed cost. - Higher values are slow for no extra gain. -</para></listitem> -<listitem><para> - <emphasis role="bold">cbp, mv0</emphasis>: Controls the selection of - macroblocks. Small speed cost for small quality gain. -</para></listitem> -<listitem><para> - <emphasis role="bold">qprd</emphasis>: adaptive quantization based on the - macroblock's complexity. - May help or hurt depending on the video and other options. - This can cause artifacts unless you set vqmax to some reasonably small value - (6 is good, maybe as low as 4); vqmin=1 should also help. -</para></listitem> -<listitem><para> - <emphasis role="bold">qns</emphasis>: very slow, especially when combined - with qprd. - This option will make the encoder minimize noise due to compression - artifacts instead of making the encoded video strictly match the source. - Do not use this unless you have already tweaked everything else as far as it - will go and the results still are not good enough. -</para></listitem> -<listitem><para> - <emphasis role="bold">vqcomp</emphasis>: Tweak ratecontrol. - What values are good depends on the movie. - You can safely leave this alone if you want. - Reducing vqcomp puts more bits on low-complexity scenes, increasing it puts - them on high-complexity scenes (default: 0.5, range: 0-1. recommended range: - 0.5-0.7). -</para></listitem> -<listitem><para> - <emphasis role="bold">vlelim, vcelim</emphasis>: Sets the single coefficient - elimination threshold for luminance and chroma planes. - These are encoded separately in all MPEG-like algorithms. - The idea behind these options is to use some good heuristics to determine - when the change in a block is less than the threshold you specify, and in - such a case, to just encode the block as "no change". - This saves bits and perhaps speeds up encoding. vlelim=-4 and vcelim=9 - seem to be good for live movies, but seem not to help with Anime; - when encoding animation, you should probably leave them unchanged. -</para></listitem> -<listitem><para> - <emphasis role="bold">qpel</emphasis>: Quarter pixel motion estimation. - MPEG-4 uses half pixel precision for its motion search by default, - therefore this option comes with an overhead as more information will be - stored in the encoded file. - The compression gain/loss depends on the movie, but it is usually not very - effective on Anime. - qpel always incurs a significant cost in CPU decode time (+25% in - practice). -</para></listitem> -<listitem><para> - <emphasis role="bold">psnr</emphasis>: does not affect the actual encoding, - but writes a log file giving the type/size/quality of each frame, and - prints a summary of PSNR (Peak Signal to Noise Ratio) at the end. -</para></listitem> -</itemizedlist> - -<itemizedlist> -<title>Options not recommended to play with:</title> -<listitem><para> - <emphasis role="bold">vme</emphasis>: The default is best. -</para></listitem> -<listitem><para> - <emphasis role="bold">lumi_mask, dark_mask</emphasis>: Psychovisual adaptive - quantization. - You do not want to play with those options if you care about quality. - Reasonable values may be effective in your case, but be warned this is very - subjective. -</para></listitem> -<listitem><para> - <emphasis role="bold">scplx_mask</emphasis>: Tries to prevent blocky - artifacts, but postprocessing is better. -</para></listitem> -</itemizedlist> -</sect2> - -<!-- ********** --> - -<sect2 id="menc-feat-mpeg4-lavc-example-settings"> -<title>Encoding setting examples</title> - -<para> -The following settings are examples of different encoding -option combinations that affect the speed vs quality tradeoff -at the same target bitrate. -</para> - -<para> -All the encoding settings were tested on a 720x448 @30000/1001 fps -video sample, the target bitrate was 900kbps, and the machine was an -AMD-64 3400+ at 2400 MHz in 64 bits mode. -Each encoding setting features the measured encoding speed (in -frames per second) and the PSNR loss (in dB) compared to the "very -high quality" setting. -Please understand that depending on your source, your machine type -and development advancements, you may get very different results. -</para> - -<para> -<informaltable frame="all"> -<tgroup cols="4"> -<thead> -<row> - <entry>Description</entry> - <entry>Encoding options</entry> - <entry>speed (in fps)</entry> - <entry>Relative PSNR loss (in dB)</entry> -</row> -</thead> -<tbody> -<row> - <entry>Very high quality</entry> - <entry><option>vcodec=mpeg4:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:predia=2:dia=2:vmax_b_frames=2:vb_strategy=1:precmp=2:cmp=2:subcmp=2:preme=2:qns=2</option></entry> - <entry>6fps</entry> - <entry>0dB</entry> -</row> -<row> - <entry>High quality</entry> - <entry><option>vcodec=mpeg4:mbd=2:trell:v4mv:last_pred=2:dia=-1:vmax_b_frames=2:vb_strategy=1:cmp=3:subcmp=3:precmp=0:vqcomp=0.6:turbo</option></entry> - <entry>15fps</entry> - <entry>-0.5dB</entry> -</row> -<row> - <entry>Fast</entry> - <entry><option>vcodec=mpeg4:mbd=2:trell:v4mv:turbo</option></entry> - <entry>42fps</entry> - <entry>-0.74dB</entry> -</row> -<row> - <entry>Realtime</entry> - <entry><option>vcodec=mpeg4:mbd=2:turbo</option></entry> - <entry>54fps</entry> - <entry>-1.21dB</entry> -</row> -</tbody> -</tgroup> -</informaltable> -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="custommatrices"> -<title>Custom inter/intra matrices</title> - -<para> -With this feature of -<systemitem class="library">libavcodec</systemitem> -you are able to set custom inter (I-frames/keyframes) and intra -(P-frames/predicted frames) matrices. It is supported by many of the codecs: -<systemitem>mpeg1video</systemitem> and <systemitem>mpeg2video</systemitem> -are reported as working. -</para> - -<para> -A typical usage of this feature is to set the matrices preferred by the -<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> -mencoder <replaceable>input.avi</replaceable> -o <replaceable>output.avi</replaceable> -oac copy -ovc lavc \ - -lavcopts inter_matrix=...:intra_matrix=... -</screen> -</para> - -<para> -<screen> -mencoder <replaceable>input.avi</replaceable> -ovc lavc -lavcopts \ -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> -</sect2> - -<!-- ********** --> - -<sect2 id="menc-feat-dvd-mpeg4-example"> -<title>Example</title> - -<para> -So, you have just bought your shiny new copy of Harry Potter and the Chamber -of Secrets (widescreen edition, of course), and you want to rip this DVD -so that you can add it to your Home Theatre PC. This is a region 1 DVD, -so it is NTSC. The example below will still apply to PAL, except you will -omit <option>-ofps 24000/1001</option> (because the output framerate is the -same as the input framerate), and of course the crop dimensions will be -different. -</para> - -<para> -After running <option>mplayer dvd://1</option>, we follow the process -detailed in the section <link linkend="menc-feat-telecine">How to deal -with telecine and interlacing in NTSC DVDs</link> and discover that it is -24000/1001 fps progressive video, which means that we need not use an inverse -telecine filter, such as <option>pullup</option> or -<option>filmdint</option>. -</para> - -<para id="menc-feat-dvd-mpeg4-example-crop"> -Next, we want to determine the appropriate crop rectangle, so we use the -cropdetect filter: -<screen>mplayer dvd://1 -vf cropdetect</screen> -Make sure you seek to a fully filled frame (such as a bright scene, -past the opening credits and logos), and -you will see in <application>MPlayer</application>'s console output: -<screen>crop area: X: 0..719 Y: 57..419 (-vf crop=720:362:0:58)</screen> -We then play the movie back with this filter to test its correctness: -<screen>mplayer dvd://1 -vf crop=720:362:0:58</screen> -And we see that it looks perfectly fine. Next, we ensure the width and -height are a multiple of 16. The width is fine, however the height is -not. Since we did not fail 7th grade math, we know that the nearest -multiple of 16 lower than 362 is 352. -</para> - -<para> -We could just use <option>crop=720:352:0:58</option>, but it would be nice -to take a little off the top and a little off the bottom so that we -retain the center. We have shrunk the height by 10 pixels, but we do not -want to increase the y-offset by 5-pixels since that is an odd number and -will adversely affect quality. Instead, we will increase the y-offset by -4 pixels: -<screen>mplayer dvd://1 -vf crop=720:352:0:62</screen> -Another reason to shave pixels from both the top and the bottom is that we -ensure we have eliminated any half-black pixels if they exist. Note that if -your video is telecined, make sure the <option>pullup</option> filter (or -whichever inverse telecine filter you decide to use) appears in the filter -chain before you crop. If it is interlaced, deinterlace before cropping. -(If you choose to preserve the interlaced video, then make sure your -vertical crop offset is a multiple of 4.) -</para> - -<para> -If you are really concerned about losing those 10 pixels, you might -prefer instead to scale the dimensions down to the nearest multiple of 16. -The filter chain would look like: -<screen>-vf crop=720:362:0:58,scale=720:352</screen> -Scaling the video down like this will mean that some small amount of -detail is lost, though it probably will not be perceptible. Scaling up will -result in lower quality (unless you increase the bitrate). Cropping -discards those pixels altogether. It is a tradeoff that you will want to -consider for each circumstance. For example, if the DVD video was made -for television, you might want to avoid vertical scaling, since the line -sampling corresponds to the way the content was originally recorded. -</para> - -<para> -On inspection, we see that our movie has a fair bit of action and high -amounts of detail, so we pick 2400Kbit for our bitrate. -</para> - -<para> -We are now ready to do the two pass encode. Pass one: -<screen> -mencoder dvd://1 -ofps 24000/1001 -oac copy -o <replaceable>Harry_Potter_2.avi</replaceable> -ovc lavc \ - -lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:autoaspect:vpass=1 \ - -vf pullup,softskip,crop=720:352:0:62,hqdn3d=2:1:2 -</screen> -And pass two is the same, except that we specify <option>vpass=2</option>: -<screen> -mencoder dvd://1 -ofps 24000/1001 -oac copy -o <replaceable>Harry_Potter_2.avi</replaceable> -ovc lavc \ - -lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:autoaspect:vpass=2 \ - -vf pullup,softskip,crop=720:352:0:62,hqdn3d=2:1:2 -</screen> -</para> - -<para> -The options <option>v4mv:mbd=2:trell</option> will greatly increase the -quality at the expense of encoding time. There is little reason to leave -these options out when the primary goal is quality. The options -<option>cmp=3:subcmp=3</option> select a comparison function that -yields higher quality than the defaults. You might try experimenting with -this parameter (refer to the man page for the possible values) as -different functions can have a large impact on quality depending on the -source material. For example, if you find -<systemitem class="library">libavcodec</systemitem> produces too much -blocky artifacts, you could try selecting the experimental NSSE as -comparison function via <option>*cmp=10</option>. -</para> - -<para> -For this movie, the resulting AVI will be 138 minutes long and nearly -3GB. And because you said that file size does not matter, this is a -perfectly acceptable size. However, if you had wanted it smaller, you -could try a lower bitrate. Increasing bitrates have diminishing -returns, so while we might clearly see an improvement from 1800Kbit to -2000Kbit, it might not be so noticeable above 2000Kbit. Feel -free to experiment until you are happy. -</para> - -<para> -Because we passed the source video through a denoise filter, you may want -to add some of it back during playback. This, along with the -<option>spp</option> post-processing filter, drastically improves the -perception of quality and helps eliminate blocky artifacts in the video. -With <application>MPlayer</application>'s <option>autoq</option> option, -you can vary the amount of post-processing done by the spp filter -depending on available CPU. Also, at this point, you may want to apply -gamma and/or color correction to best suit your display. For example: -<screen> -mplayer <replaceable>Harry_Potter_2.avi</replaceable> -vf spp,noise=9ah:5ah,eq2=1.2 -autoq 3 -</screen> -</para> -</sect2> -</sect1> - - -<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - - -<sect1 id="menc-feat-xvid"> -<title>Encoding with the <systemitem class="library">Xvid</systemitem> - codec</title> - -<para> -<systemitem class="library">Xvid</systemitem> is a free library for -encoding MPEG-4 ASP video streams. -Before starting to encode, you need to <link linkend="xvid"> -set up <application>MEncoder</application> to support it</link>. -</para> - -<para> -This guide mainly aims at featuring the same kind of information -as x264's encoding guide. -Therefore, please begin by reading -<link linkend="menc-feat-x264-encoding-options-intro">the first part</link> -of that guide. -</para> - -<!-- ********** --> - -<sect2 id="menc-feat-xvid-intro"> -<title>What options should I use to get the best results?</title> - -<para> -Please begin by reviewing the -<systemitem class="library">Xvid</systemitem> section of -<application>MPlayer</application>'s man page. -This section is intended to be a supplement to the man page. -</para> - -<para> -The Xvid default settings are already a good tradeoff between -speed and quality, therefore you can safely stick to them if -the following section puzzles you. -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="menc-feat-xvid-encoding-options"> -<title>Encoding options of <systemitem class="library">Xvid</systemitem></title> - -<itemizedlist> -<listitem><para> - <emphasis role="bold">vhq</emphasis> - This setting affects the macroblock decision algorithm, where the - higher the setting, the wiser the decision. - The default setting may be safely used for every encode, while - higher settings always help PSNR but are significantly slower. - Please note that a better PSNR does not necessarily mean - that the picture will look better, but tells you that it is - closer to the original. - Turning it off will noticeably speed up encoding; if speed is - critical for you, the tradeoff may be worth it. -</para></listitem> -<listitem><para> - <emphasis role="bold">bvhq</emphasis> - This does the same job as vhq, but does it on B-frames. - It has a negligible impact on speed, and slightly improves quality - (around +0.1dB PSNR). -</para></listitem> -<listitem><para> - <emphasis role="bold">max_bframes</emphasis> - A higher number of consecutive allowed B-frames usually improves - compressibility, although it may also lead to more blocking artifacts. - The default setting is a good tradeoff between compressibility and - quality, but you may increase it up to 3 if you are bitrate-starved. - You may also decrease it to 1 or 0 if you are aiming at perfect - quality, though in that case you should make sure your - target bitrate is high enough to ensure that the encoder does not - have to increase quantizers to reach it. -</para></listitem> -<listitem><para> - <emphasis role="bold">bf_threshold</emphasis> - This controls the B-frame sensitivity of the encoder, where a higher - value leads to more B-frames being used (and vice versa). - This setting is to be used together with <option>max_bframes</option>; - if you are bitrate-starved, you should increase both - <option>max_bframes</option> and <option>bf_threshold</option>, - while you may increase <option>max_bframes</option> and reduce - <option>bf_threshold</option> so that the encoder may use more - B-frames in places that only <emphasis role="bold">really</emphasis> - need them. - A low number of <option>max_bframes</option> and a high value of - <option>bf_threshold</option> is probably not a wise choice as it - will force the encoder to put B-frames in places that would not - benefit from them, therefore reducing visual quality. - However, if you need to be compatible with standalone players that - only support old DivX profiles (which only supports up to 1 - consecutive B-frame), this would be your only way to - increase compressibility through using B-frames. -</para></listitem> -<listitem><para> - <emphasis role="bold">trellis</emphasis> - Optimizes the quantization process to get an optimal tradeoff - between PSNR and bitrate, which allows significant bit saving. - These bits will in return be spent elsewhere on the video, - raising overall visual quality. - You should always leave it on as its impact on quality is huge. - Even if you are looking for speed, do not disable it until you - have turned down <option>vhq</option> and all other more - CPU-hungry options to the minimum. -</para></listitem> -<listitem><para> - <emphasis role="bold">hq_ac</emphasis> - Activates a better coefficient cost estimation method, which slightly - reduces file size by around 0.15 to 0.19% (which corresponds to less - than 0.01dB PSNR increase), while having a negligible impact on speed. - It is therefore recommended to always leave it on. -</para></listitem> -<listitem><para> - <emphasis role="bold">cartoon</emphasis> - Designed to better encode cartoon content, and has no impact on - speed as it just tunes the mode decision heuristics for this type - of content. -</para></listitem> -<listitem> - <para> - <emphasis role="bold">me_quality</emphasis> - This setting is to control the precision of the motion estimation. - The higher <option>me_quality</option>, the more - precise the estimation of the original motion will be, and the - better the resulting clip will capture the original motion. - </para> - <para> - The default setting is best in all cases; - thus it is not recommended to turn it down unless you are - really looking for speed, as all the bits saved by a good motion - estimation would be spent elsewhere, raising overall quality. - Therefore, do not go any lower than 5, and even that only as a last - resort. - </para> -</listitem> -<listitem><para> - <emphasis role="bold">chroma_me</emphasis> - Improves motion estimation by also taking the chroma (color) - information into account, whereas <option>me_quality</option> - alone only uses luma (grayscale). - This slows down encoding by 5-10% but improves visual quality - quite a bit by reducing blocking effects and reduces file size by - around 1.3%. - If you are looking for speed, you should disable this option before - starting to consider reducing <option>me_quality</option>. -</para></listitem> -<listitem><para> - <emphasis role="bold">chroma_opt</emphasis> - Is intended to increase chroma image quality around pure - white/black edges, rather than improving compression. - This can help to reduce the "red stairs" effect. -</para></listitem> -<listitem><para> - <emphasis role="bold">lumi_mask</emphasis> - Tries to give less bitrate to part of the picture that the - human eye cannot see very well, which should allow the encoder - to spend the saved bits on more important parts of the picture. - The quality of the encode yielded by this option highly depends - on personal preferences and on the type and monitor settings - used to watch it (typically, it will not look as good if it is - bright or if it is a TFT monitor). -</para></listitem> -<listitem> - <para> - <emphasis role="bold">qpel</emphasis> - Raise the number of candidate motion vectors by increasing - the precision of the motion estimation from halfpel to - quarterpel. - The idea is to find better motion vectors which will in return - reduce bitrate (hence increasing quality). - However, motion vectors with quarterpel precision require a - few extra bits to code, but the candidate vectors do not always - give (much) better results. - Quite often, the codec still spends bits on the extra precision, - but little or no extra quality is gained in return. - Unfortunately, there is no way to foresee the possible gains of - <option>qpel</option>, so you need to actually encode with and - without it to know for sure. - </para> - <para> - <option>qpel</option> can be almost double encoding time, and - requires as much as 25% more processing power to decode. - It is not supported by all standalone players. - </para> -</listitem> -<listitem><para> - <emphasis role="bold">gmc</emphasis> - Tries to save bits on panning scenes by using a single motion - vector for the whole frame. - This almost always raises PSNR, but significantly slows down - encoding (as well as decoding). - Therefore, you should only use it when you have turned - <option>vhq</option> to the maximum. - <systemitem class="library">Xvid</systemitem>'s GMC is more - sophisticated than DivX's, but is only supported by few - standalone players. -</para></listitem> -</itemizedlist> -</sect2> - -<!-- ********** --> - -<sect2 id="menc-feat-xvid-encoding-profiles"> -<title>Encoding profiles</title> - -<para> -Xvid supports encoding profiles through the <option>profile</option> option, -which are used to impose restrictions on the properties of the Xvid video -stream such that it will be playable on anything which supports the -chosen profile. -The restrictions relate to resolutions, bitrates and certain MPEG-4 -features. -The following table shows what each profile supports. -</para> - -<informaltable> -<tgroup cols="16" align="center"> -<colspec colnum="1" colname="col1"/> -<colspec colnum="2" colname="col2"/> -<colspec colnum="3" colname="col3"/> -<colspec colnum="4" colname="col4"/> -<colspec colnum="5" colname="col5"/> -<colspec colnum="6" colname="col6"/> -<colspec colnum="7" colname="col7"/> -<colspec colnum="8" colname="col8"/> -<colspec colnum="9" colname="col9"/> -<colspec colnum="10" colname="col10"/> -<colspec colnum="11" colname="col11"/> -<colspec colnum="12" colname="col12"/> -<colspec colnum="13" colname="col13"/> -<colspec colnum="14" colname="col14"/> -<colspec colnum="15" colname="col15"/> -<colspec colnum="16" colname="col16"/> -<colspec colnum="17" colname="col17"/> -<spanspec spanname="spa2-5" namest="col2" nameend="col5"/> -<spanspec spanname="spa6-11" namest="col6" nameend="col11"/> -<spanspec spanname="spa12-17" namest="col12" nameend="col17"/> -<tbody> -<row> - <entry></entry> - <entry spanname="spa2-5">Simple</entry> - <entry spanname="spa6-11">Advanced Simple</entry> - <entry spanname="spa12-17">DivX</entry> -</row> -<row> - <entry>Profile name</entry> - <entry>0</entry> - <entry>1</entry> - <entry>2</entry> - <entry>3</entry> - <entry>0</entry> - <entry>1</entry> - <entry>2</entry> - <entry>3</entry> - <entry>4</entry> - <entry>5</entry> - <entry>Handheld</entry> - <entry>Portable NTSC</entry> - <entry>Portable PAL</entry> - <entry>Home Theater NTSC</entry> - <entry>Home Theater PAL</entry> - <entry>HDTV</entry> -</row> -<row> - <entry>Width [pixels]</entry> - <entry>176</entry> - <entry>176</entry> - <entry>352</entry> - <entry>352</entry> - <entry>176</entry> - <entry>176</entry> - <entry>352</entry> - <entry>352</entry> - <entry>352</entry> - <entry>720</entry> - <entry>176</entry> - <entry>352</entry> - <entry>352</entry> - <entry>720</entry> - <entry>720</entry> - <entry>1280</entry> -</row> -<row> - <entry>Height [pixels]</entry> - <entry>144</entry> - <entry>144</entry> - <entry>288</entry> - <entry>288</entry> - <entry>144</entry> - <entry>144</entry> - <entry>288</entry> - <entry>288</entry> - <entry>576</entry> - <entry>576</entry> - <entry>144</entry> - <entry>240</entry> - <entry>288</entry> - <entry>480</entry> - <entry>576</entry> - <entry>720</entry> -</row> -<row> - <entry>Frame rate [fps]</entry> - <entry>15</entry> - <entry>15</entry> - <entry>15</entry> - <entry>15</entry> - <entry>30</entry> - <entry>30</entry> - <entry>15</entry> - <entry>30</entry> - <entry>30</entry> - <entry>30</entry> - <entry>15</entry> - <entry>30</entry> - <entry>25</entry> - <entry>30</entry> - <entry>25</entry> - <entry>30</entry> -</row> -<row> - <entry>Max average bitrate [kbps]</entry> - <entry>64</entry> - <entry>64</entry> - <entry>128</entry> - <entry>384</entry> - <entry>128</entry> - <entry>128</entry> - <entry>384</entry> - <entry>768</entry> - <entry>3000</entry> - <entry>8000</entry> - <entry>537.6</entry> - <entry>4854</entry> - <entry>4854</entry> - <entry>4854</entry> - <entry>4854</entry> - <entry>9708.4</entry> -</row> -<row> - <entry>Peak average bitrate over 3 secs [kbps]</entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>800</entry> - <entry>8000</entry> - <entry>8000</entry> - <entry>8000</entry> - <entry>8000</entry> - <entry>16000</entry> -</row> -<row> - <entry>Max. B-frames</entry> - <entry>0</entry> - <entry>0</entry> - <entry>0</entry> - <entry>0</entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>0</entry> - <entry>1</entry> - <entry>1</entry> - <entry>1</entry> - <entry>1</entry> - <entry>2</entry> -</row> -<row> - <entry>MPEG quantization</entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> -</row> -<row> - <entry>Adaptive quantization</entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> -</row> -<row> - <entry>Interlaced encoding</entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> -</row> -<row> - <entry>Quarterpixel</entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> -</row> -<row> - <entry>Global motion compensation</entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> - <entry>X</entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> - <entry></entry> -</row> -</tbody> -</tgroup> -</informaltable> -</sect2> - -<!-- ********** --> - -<sect2 id="menc-feat-xvid-example-settings"> -<title>Encoding setting examples</title> - -<para> -The following settings are examples of different encoding -option combinations that affect the speed vs quality tradeoff -at the same target bitrate. -</para> - -<para> -All the encoding settings were tested on a 720x448 @30000/1001 fps -video sample, the target bitrate was 900kbps, and the machine was an -AMD-64 3400+ at 2400 MHz in 64 bits mode. -Each encoding setting features the measured encoding speed (in -frames per second) and the PSNR loss (in dB) compared to the "very -high quality" setting. -Please understand that depending on your source, your machine type -and development advancements, you may get very different results. -</para> - -<informaltable frame="all"> -<tgroup cols="4"> -<thead> -<row><entry>Description</entry><entry>Encoding options</entry><entry>speed (in fps)</entry><entry>Relative PSNR loss (in dB)</entry></row> -</thead> -<tbody> -<row> - <entry>Very high quality</entry> - <entry><option>chroma_opt:vhq=4:bvhq=1:quant_type=mpeg</option></entry> - <entry>16fps</entry> - <entry>0dB</entry> -</row> -<row> - <entry>High quality</entry> - <entry><option>vhq=2:bvhq=1:chroma_opt:quant_type=mpeg</option></entry> - <entry>18fps</entry> - <entry>-0.1dB</entry> -</row> -<row> - <entry>Fast</entry> - <entry><option>turbo:vhq=0</option></entry> - <entry>28fps</entry> - <entry>-0.69dB</entry> -</row> -<row> - <entry>Realtime</entry> - <entry><option>turbo:nochroma_me:notrellis:max_bframes=0:vhq=0</option></entry> - <entry>38fps</entry> - <entry>-1.48dB</entry> -</row> -</tbody> -</tgroup> -</informaltable> -</sect2> -</sect1> - - -<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - - -<sect1 id="menc-feat-x264"> -<title>Encoding with the - <systemitem class="library">x264</systemitem> codec</title> - -<para> -<systemitem class="library">x264</systemitem> is a free library for -encoding H.264/AVC video streams. -Before starting to encode, you need to -<link linkend="x264">set up <application>MEncoder</application> to support it</link>. -</para> - -<!-- ********** --> - -<sect2 id="menc-feat-x264-encoding-options"> -<title>Encoding options of x264</title> - -<para> -Please begin by reviewing the -<systemitem class="library">x264</systemitem> section of -<application>MPlayer</application>'s man page. -This section is intended to be a supplement to the man page. -Here you will find quick hints about which options are most -likely to interest most people. The man page is more terse, -but also more exhaustive, and it sometimes offers much better -technical detail. -</para> - - -<sect3 id="menc-feat-x264-encoding-options-intro"> -<title>Introduction</title> - -<para> -This guide considers two major categories of encoding options: -</para> - -<orderedlist> -<listitem><para> - Options which mainly trade off encoding time vs. quality -</para></listitem> -<listitem><para> - Options which may be useful for fulfilling various personal - preferences and special requirements -</para></listitem> -</orderedlist> - -<para> -Ultimately, only you can decide which options are best for your -purposes. The decision for the first class of options is the simplest: -you only have to decide whether you think the quality differences -justify the speed differences. For the second class of options, -preferences may be far more subjective, and more factors may be -involved. Note that some of the "personal preferences and special -requirements" options can still have large impacts on speed or quality, -but that is not what they are primarily useful for. A couple of the -"personal preference" options may even cause changes that look better -to some people, but look worse to others. -</para> - -<para> -Before continuing, you need to understand that this guide uses only one -quality metric: global PSNR. -For a brief explanation of what PSNR is, see -<ulink url="http://en.wikipedia.org/wiki/PSNR">the Wikipedia article on PSNR</ulink>. -Global PSNR is the last PSNR number reported when you include -the <option>psnr</option> option in <option>x264encopts</option>. -Any time you read a claim about PSNR, one of the assumptions -behind the claim is that equal bitrates are used. -</para> - -<para> -Nearly all of this guide's comments assume you are using two pass. -When comparing options, there are two major reasons for using -two pass encoding. -First, using two pass often gains around 1dB PSNR, which is a -very big difference. -Secondly, testing options by doing direct quality comparisons -with one pass encodes introduces a major confounding -factor: bitrate often varies significantly with each encode. -It is not always easy to tell whether quality changes are due -mainly to changed options, or if they mostly reflect essentially -random differences in the achieved bitrate. -</para> -</sect3> - - -<sect3 id="menc-feat-x264-encoding-options-speedvquality"> -<title>Options which primarily affect speed and quality</title> - -<itemizedlist> -<listitem> - <para> - <emphasis role="bold">subq</emphasis>: - Of the options which allow you to trade off speed for quality, - <option>subq</option> and <option>frameref</option> (see below) are usually - by far the most important. - If you are interested in tweaking either speed or quality, these - are the first options you should consider. - On the speed dimension, the <option>frameref</option> and - <option>subq</option> options interact with each other fairly - strongly. - Experience shows that, with one reference frame, - <option>subq=5</option> (the default setting) takes about 35% more time than - <option>subq=1</option>. - With 6 reference frames, the penalty grows to over 60%. - <option>subq</option>'s effect on PSNR seems fairly constant - regardless of the number of reference frames. - Typically, <option>subq=5</option> achieves 0.2-0.5 dB higher global - PSNR in comparison <option>subq=1</option>. - This is usually enough to be visible. - </para> - <para> - <option>subq=6</option> is slower and yields better quality at a reasonable - cost. - In comparison to <option>subq=5</option>, it usually gains 0.1-0.4 dB - global PSNR with speed costs varying from 25%-100%. - Unlike other levels of <option>subq</option>, the behavior of - <option>subq=6</option> does not depend much on <option>frameref</option> - and <option>me</option>. Instead, the effectiveness of <option>subq=6 - </option> depends mostly upon the number of B-frames used. In normal - usage, this means <option>subq=6</option> has a large impact on both speed - and quality in complex, high motion scenes, but it may not have much effect - in low-motion scenes. Note that it is still recommended to always set - <option>bframes</option> to something other than zero (see below). - </para> - <para> - <option>subq=7</option> is the slowest, highest quality mode. - In comparison to <option>subq=6</option>, it usually gains 0.01-0.05 dB - global PSNR with speed costs varying from 15%-33%. - Since the tradeoff encoding time vs. quality is quite low, you should - only use it if you are after every bit saving and if encoding time is - not an issue. - </para> -</listitem> -<listitem> - <para> - <emphasis role="bold">frameref</emphasis>: - <option>frameref</option> is set to 1 by default, but this - should not be taken to imply that it is reasonable to set it to 1. - Merely raising <option>frameref</option> to 2 gains around - 0.15dB PSNR with a 5-10% speed penalty; this seems like a good tradeoff. - <option>frameref=3</option> gains around 0.25dB PSNR over - <option>frameref=1</option>, which should be a visible difference. - <option>frameref=3</option> is around 15% slower than - <option>frameref=1</option>. - Unfortunately, diminishing returns set in rapidly. - <option>frameref=6</option> can be expected to gain only - 0.05-0.1 dB over <option>frameref=3</option> at an additional - 15% speed penalty. - Above <option>frameref=6</option>, the quality gains are - usually very small (although you should keep in mind throughout - this whole discussion that it can vary quite a lot depending on your source). - In a fairly typical case, <option>frameref=12</option> - will improve global PSNR by a tiny 0.02dB over - <option>frameref=6</option>, at a speed cost of 15%-20%. - At such high <option>frameref</option> values, the only really - good thing that can be said is that increasing it even further will - almost certainly never <emphasis role="bold">harm</emphasis> - PSNR, but the additional quality benefits are barely even - measurable, let alone perceptible. - </para> - <note><title>Note:</title> - <para> - Raising <option>frameref</option> to unnecessarily high values - <emphasis role="bold">can</emphasis> and - <emphasis role="bold">usually does</emphasis> - hurt coding efficiency if you turn CABAC off. - With CABAC on (the default behavior), the possibility of setting - <option>frameref</option> "too high" currently seems too remote - to even worry about, and in the future, optimizations may remove - the possibility altogether. - </para></note> - <para> - If you care about speed, a reasonable compromise is to use low - <option>subq</option> and <option>frameref</option> values on - the first pass, and then raise them on the second pass. - Typically, this has a negligible negative effect on the final - quality: You will probably lose well under 0.1dB PSNR, which - should be much too small of a difference to see. - However, different values of <option>frameref</option> can - occasionally affect frame type decision. - Most likely, these are rare outlying cases, but if you want to - be pretty sure, consider whether your video has either - fullscreen repetitive flashing patterns or very large temporary - occlusions which might force an I-frame. - Adjust the first-pass <option>frameref</option> so it is large - enough to contain the duration of the flashing cycle (or occlusion). - For example, if the scene flashes back and forth between two images - over a duration of three frames, set the first pass - <option>frameref</option> to 3 or higher. - This issue is probably extremely rare in live action video material, - but it does sometimes come up in video game captures. - </para> -</listitem> -<listitem> - <para> - <emphasis role="bold">me</emphasis>: - This option is for choosing the motion estimation search method. - Altering this option provides a straightforward quality-vs-speed - tradeoff. <option>me=dia</option> is only a few percent faster than - the default search, at a cost of under 0.1dB global PSNR. The - default setting (<option>me=hex</option>) is a reasonable tradeoff - between speed and quality. <option>me=umh</option> gains a little under - 0.1dB global PSNR, with a speed penalty that varies depending on - <option>frameref</option>. At high values of - <option>frameref</option> (e.g. 12 or so), <option>me=umh</option> - is about 40% slower than the default <option> me=hex</option>. With - <option>frameref=3</option>, the speed penalty incurred drops to - 25%-30%. - </para> - <para> - <option>me=esa</option> uses an exhaustive search that is too slow for - practical use. - </para> -</listitem> -<listitem><para> - <emphasis role="bold">partitions=all</emphasis>: - This option enables the use of 8x4, 4x8 and 4x4 subpartitions in - predicted macroblocks (in addition to the default partitions). - Enabling it results in a fairly consistent - 10%-15% loss of speed. This option is rather useless in source - containing only low motion, however in some high-motion source, - particularly source with lots of small moving objects, gains of - about 0.1dB can be expected. -</para></listitem> -<listitem> - <para> - <emphasis role="bold">bframes</emphasis>: - If you are used to encoding with other codecs, you may have found - that B-frames are not always useful. - In H.264, this has changed: there are new techniques and block - types that are possible in B-frames. - Usually, even a naive B-frame choice algorithm can have a - significant PSNR benefit. - It is interesting to note that using B-frames usually speeds up - the second pass somewhat, and may also speed up a single - pass encode if adaptive B-frame decision is turned off. - </para> - <para> - With adaptive B-frame decision turned off - (<option>x264encopts</option>'s <option>nob_adapt</option>), - the optimal value for this setting is usually no more than - <option>bframes=1</option>, or else high-motion scenes can suffer. - With adaptive B-frame decision on (the default behavior), it is - safe to use higher values; the encoder will reduce the use of - B-frames in scenes where they would hurt compression. - The encoder rarely chooses to use more than 3 or 4 B-frames; - setting this option any higher will have little effect. - </para> -</listitem> -<listitem> - <para> - <emphasis role="bold">b_adapt</emphasis>: - Note: This is on by default. - </para> - <para> - With this option enabled, the encoder will use a reasonably fast - decision process to reduce the number of B-frames used in scenes that - might not benefit from them as much. - You can use <option>b_bias</option> to tweak how B-frame-happy - the encoder is. - The speed penalty of adaptive B-frames is currently rather modest, - but so is the potential quality gain. - It usually does not hurt, however. - Note that this only affects speed and frame type decision on the - first pass. - <option>b_adapt</option> and <option>b_bias</option> have no - effect on subsequent passes. - </para> -</listitem> -<listitem><para> - <emphasis role="bold">b_pyramid</emphasis>: - You might as well enable this option if you are using >=2 B-frames; - as the man page says, you get a little quality improvement at no - speed cost. - Note that these videos cannot be read by libavcodec-based decoders - older than about March 5, 2005. -</para></listitem> -<listitem> - <para> - <emphasis role="bold">weight_b</emphasis>: - In typical cases, there is not much gain with this option. - However, in crossfades or fade-to-black scenes, weighted - prediction gives rather large bitrate savings. - In MPEG-4 ASP, a fade-to-black is usually best coded as a series - of expensive I-frames; using weighted prediction in B-frames - makes it possible to turn at least some of these into much smaller - B-frames. - Encoding time cost is minimal, as no extra decisions need to be made. - Also, contrary to what some people seem to guess, the decoder - CPU requirements are not much affected by weighted prediction, - all else being equal. - </para> - <para> - Unfortunately, the current adaptive B-frame decision algorithm - has a strong tendency to avoid B-frames during fades. - Until this changes, it may be a good idea to add - <option>nob_adapt</option> to your x264encopts, if you expect - fades to have a large effect in your particular video - clip. - </para> -</listitem> -<listitem id="menc-feat-x264-encoding-options-speedvquality-threads"> - <para> - <emphasis role="bold">threads</emphasis>: - This option allows to spawn threads to encode in parallel on multiple CPUs. - You can manually select the number of threads to be created or, better, set - <option>threads=auto</option> and let - <systemitem class="library">x264</systemitem> detect how many CPUs are - available and pick an appropriate number of threads. - If you have a multi-processor machine, you should really consider using it - as it can to increase encoding speed linearly with the number of CPU cores - (about 94% per CPU core), with very little quality reduction (about 0.005dB - for dual processor, about 0.01dB for a quad processor machine). - </para> -</listitem> -</itemizedlist> -</sect3> - - -<sect3 id="menc-feat-x264-encoding-options-misc-preferences"> -<title>Options pertaining to miscellaneous preferences</title> - -<itemizedlist> -<listitem> - <para> - <emphasis role="bold">Two pass encoding</emphasis>: - Above, it was suggested to always use two pass encoding, but there - are still reasons for not using it. For instance, if you are capturing - live TV and encoding in realtime, you are forced to use single-pass. - Also, one pass is obviously faster than two passes; if you use the - exact same set of options on both passes, two pass encoding is almost - twice as slow. - </para> - <para> - Still, there are very good reasons for using two pass encoding. For - one thing, single pass ratecontrol is not psychic, and it often makes - unreasonable choices because it cannot see the big picture. For example, - suppose you have a two minute long video consisting of two distinct - halves. The first half is a very high-motion scene lasting 60 seconds - which, in isolation, requires about 2500kbps in order to look decent. - Immediately following it is a much less demanding 60-second scene - that looks good at 300kbps. Suppose you ask for 1400kbps on the theory - that this is enough to accommodate both scenes. Single pass ratecontrol - will make a couple of "mistakes" in such a case. First of all, it - will target 1400kbps in both segments. The first segment may end up - heavily overquantized, causing it to look unacceptably and unreasonably - blocky. The second segment will be heavily underquantized; it may look - perfect, but the bitrate cost of that perfection will be completely - unreasonable. What is even harder to avoid is the problem at the - transition between the two scenes. The first seconds of the low motion - half will be hugely over-quantized, because the ratecontrol is still - expecting the kind of bitrate requirements it met in the first half - of the video. This "error period" of heavily over-quantized low motion - will look jarringly bad, and will actually use less than the 300kbps - it would have taken to make it look decent. There are ways to - mitigate the pitfalls of single-pass encoding, but they may tend to - increase bitrate misprediction. - </para> - <para> - Multipass ratecontrol can offer huge advantages over a single pass. - Using the statistics gathered from the first pass encode, the encoder - can estimate, with reasonable accuracy, the "cost" (in bits) of - encoding any given frame, at any given quantizer. This allows for - a much more rational, better planned allocation of bits between the - expensive (high-motion) and cheap (low-motion) scenes. See - <option>qcomp</option> below for some ideas on how to tweak this - allocation to your liking. - </para> - <para> - Moreover, two passes need not take twice as long as one pass. You can - tweak the options in the first pass for higher speed and lower quality. - If you choose your options well, you can get a very fast first pass. - The resulting quality in the second pass will be slightly lower because size - prediction is less accurate, but the quality difference is normally much - too small to be visible. Try, for example, adding - <option>subq=1:frameref=1</option> to the first pass - <option>x264encopts</option>. Then, on the second pass, use slower, - higher-quality options: - <option>subq=6:frameref=15:partitions=all:me=umh</option> - </para> -</listitem> -<listitem><para> - <emphasis role="bold">Three pass encoding</emphasis>? - x264 offers the ability to make an arbitrary number of consecutive - passes. If you specify <option>pass=1</option> on the first pass, - then use <option>pass=3</option> on a subsequent pass, the subsequent - pass will both read the statistics from the previous pass, and write - its own statistics. An additional pass following this one will have - a very good base from which to make highly accurate predictions of - frame sizes at a chosen quantizer. In practice, the overall quality - gain from this is usually close to zero, and quite possibly a third - pass will result in slightly worse global PSNR than the pass before - it. In typical usage, three passes help if you get either bad bitrate - prediction or bad looking scene transitions when using only two passes. - This is somewhat likely to happen on extremely short clips. There are - also a few special cases in which three (or more) passes are handy - for advanced users, but for brevity, this guide omits discussing those - special cases. -</para></listitem> -<listitem><para> - <emphasis role="bold">qcomp</emphasis>: - <option>qcomp</option> trades off the number of bits allocated - to "expensive" high-motion versus "cheap" low-motion frames. At - one extreme, <option>qcomp=0</option> aims for true constant - bitrate. Typically this would make high-motion scenes look completely - awful, while low-motion scenes would probably look absolutely - perfect, but would also use many times more bitrate than they - would need in order to look merely excellent. At the other extreme, - <option>qcomp=1</option> achieves nearly constant quantization parameter - (QP). Constant QP does not look bad, but most people think it is more - reasonable to shave some bitrate off of the extremely expensive scenes - (where the loss of quality is not as noticeable) and reallocate it to - the scenes that are easier to encode at excellent quality. - <option>qcomp</option> is set to 0.6 by default, which may be slightly - low for many peoples' taste (0.7-0.8 are also commonly used). -</para></listitem> -<listitem><para> - <emphasis role="bold">keyint</emphasis>: - <option>keyint</option> is solely for trading off file seekability against - coding efficiency. By default, <option>keyint</option> is set to 250. In - 25fps material, this guarantees the ability to seek to within 10 seconds - precision. If you think it would be important and useful to be able to - seek within 5 seconds of precision, set <option>keyint=125</option>; - this will hurt quality/bitrate slightly. If you care only about quality - and not about seekability, you can set it to much higher values - (understanding that there are diminishing returns which may become - vanishingly low, or even zero). The video stream will still have seekable - points as long as there are some scene changes. -</para></listitem> -<listitem> - <para> - <emphasis role="bold">deblock</emphasis>: - This topic is going to be a bit controversial. - </para> - <para> - H.264 defines a simple deblocking procedure on I-blocks that uses - pre-set strengths and thresholds depending on the QP of the block - in question. - By default, high QP blocks are filtered heavily, and low QP blocks - are not deblocked at all. - The pre-set strengths defined by the standard are well-chosen and - the odds are very good that they are PSNR-optimal for whatever - video you are trying to encode. - The <option>deblock</option> allow you to specify offsets to the preset - deblocking thresholds. - </para> - <para> - Many people seem to think it is a good idea to lower the deblocking - filter strength by large amounts (say, -3). - This is however almost never a good idea, and in most cases, - people who are doing this do not understand very well how - deblocking works by default. - </para> - <para> - The first and most important thing to know about the in-loop - deblocking filter is that the default thresholds are almost always - PSNR-optimal. - In the rare cases that they are not optimal, the ideal offset is - plus or minus 1. - Adjusting deblocking parameters by a larger amount is almost - guaranteed to hurt PSNR. - Strengthening the filter will smear more details; weakening the - filter will increase the appearance of blockiness. - </para> - <para> - It is definitely a bad idea to lower the deblocking thresholds if - your source is mainly low in spacial complexity (i.e., not a lot - of detail or noise). - The in-loop filter does a rather excellent job of concealing - the artifacts that occur. - If the source is high in spacial complexity, however, artifacts - are less noticeable. - This is because the ringing tends to look like detail or noise. - Human visual perception easily notices when detail is removed, - but it does not so easily notice when the noise is wrongly - represented. - When it comes to subjective quality, noise and detail are somewhat - interchangeable. - By lowering the deblocking filter strength, you are most likely - increasing error by adding ringing artifacts, but the eye does - not notice because it confuses the artifacts with detail. - </para> - <para> - This <emphasis role="bold">still</emphasis> does not justify - lowering the deblocking filter strength, however. - You can generally get better quality noise from postprocessing. - If your H.264 encodes look too blurry or smeared, try playing with - <option>-vf noise</option> when you play your encoded movie. - <option>-vf noise=8a:4a</option> should conceal most mild - artifacts. - It will almost certainly look better than the results you - would have gotten just by fiddling with the deblocking filter. - </para> -</listitem> -</itemizedlist> -</sect3> -</sect2> - -<!-- ********** --> - -<sect2 id="menc-feat-x264-example-settings"> -<title>Encoding setting examples</title> - -<para> -The following settings are examples of different encoding -option combinations that affect the speed vs quality tradeoff -at the same target bitrate. -</para> - -<para> -All the encoding settings were tested on a 720x448 @30000/1001 fps -video sample, the target bitrate was 900kbps, and the machine was an -AMD-64 3400+ at 2400 MHz in 64 bits mode. -Each encoding setting features the measured encoding speed (in -frames per second) and the PSNR loss (in dB) compared to the "very -high quality" setting. -Please understand that depending on your source, your machine type -and development advancements, you may get very different results. -</para> - -<informaltable frame="all"> -<tgroup cols="4"> -<thead> -<row> - <entry>Description</entry> - <entry>Encoding options</entry> - <entry>speed (in fps)</entry> - <entry>Relative PSNR loss (in dB)</entry> -</row> -</thead> -<tbody> -<row> - <entry>Very high quality</entry> - <entry><option>subq=6:partitions=all:8x8dct:me=umh:frameref=5:bframes=3:b_pyramid:weight_b</option></entry> - <entry>6fps</entry> - <entry>0dB</entry> -</row> -<row> - <entry>High quality</entry> - <entry><option>subq=5:8x8dct:frameref=2:bframes=3:b_pyramid:weight_b</option></entry> - <entry>13fps</entry> - <entry>-0.89dB</entry> -</row> -<row> - <entry>Fast</entry> - <entry><option>subq=4:bframes=2:b_pyramid:weight_b</option></entry> - <entry>17fps</entry> - <entry>-1.48dB</entry> -</row> -</tbody> -</tgroup> -</informaltable> -</sect2> -</sect1> - - -<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - - -<sect1 id="menc-feat-video-for-windows"> -<title> - Encoding with the <systemitem class="library">Video For Windows</systemitem> - codec family -</title> - -<para> -Video for Windows provides simple encoding by means of binary video codecs. -You can encode with the following codecs (if you have more, please tell us!) -</para> - -<para> -Note that support for this is very experimental and some codecs may not work -correctly. Some codecs will only work in certain colorspaces, try -<option>-vf format=bgr24</option> and <option>-vf format=yuy2</option> -if a codec fails or gives wrong output. -</para> - -<!-- ********** --> - -<sect2 id="menc-feat-enc-vfw-video-codecs"> -<title>Video for Windows supported codecs</title> - -<para> -<informaltable frame="all"> -<tgroup cols="4"> -<thead> -<row> - <entry>Video codec file name</entry> - <entry>Description (FourCC)</entry> - <entry>md5sum</entry> - <entry>Comment</entry> -</row> -</thead> -<tbody> -<row> - <entry>aslcodec_vfw.dll</entry> - <entry>Alparysoft lossless codec vfw (ASLC)</entry> - <entry>608af234a6ea4d90cdc7246af5f3f29a</entry> - <entry></entry> -</row> -<row> - <entry>avimszh.dll</entry> - <entry>AVImszh (MSZH)</entry> - <entry>253118fe1eedea04a95ed6e5f4c28878</entry> - <entry>needs <option>-vf format</option></entry> -</row> -<row> - <entry>avizlib.dll</entry> - <entry>AVIzlib (ZLIB)</entry> - <entry>2f1cc76bbcf6d77d40d0e23392fa8eda</entry> - <entry></entry> -</row> -<row> - <entry>divx.dll</entry> - <entry>DivX4Windows-VFW</entry> - <entry>acf35b2fc004a89c829531555d73f1e6</entry> - <entry></entry> -</row> -<row> - <entry>huffyuv.dll</entry> - <entry>HuffYUV (lossless) (HFYU)</entry> - <entry>b74695b50230be4a6ef2c4293a58ac3b</entry> - <entry></entry> -</row> -<row> - <entry>iccvid.dll</entry> - <entry>Cinepak Video (cvid)</entry> - <entry>cb3b7ee47ba7dbb3d23d34e274895133</entry> - <entry></entry> -</row> -<row> - <entry>icmw_32.dll</entry> - <entry>Motion Wavelets (MWV1)</entry> - <entry>c9618a8fc73ce219ba918e3e09e227f2</entry> - <entry></entry> -</row> -<row> - <entry>jp2avi.dll</entry> - <entry>ImagePower MJPEG2000 (IPJ2)</entry> - <entry>d860a11766da0d0ea064672c6833768b</entry> - <entry><option>-vf flip</option></entry> -</row> -<row> - <entry>m3jp2k32.dll</entry> - <entry>Morgan MJPEG2000 (MJ2C)</entry> - <entry>f3c174edcbaef7cb947d6357cdfde7ff</entry> - <entry></entry> -</row> -<row> - <entry>m3jpeg32.dll</entry> - <entry>Morgan Motion JPEG Codec (MJPEG)</entry> - <entry>1cd13fff5960aa2aae43790242c323b1</entry> - <entry></entry> -</row> -<row> - <entry>mpg4c32.dll</entry> - <entry>Microsoft MPEG-4 v1/v2</entry> - <entry>b5791ea23f33010d37ab8314681f1256</entry> - <entry></entry> -</row> -<row> - <entry>tsccvid.dll</entry> - <entry>TechSmith Camtasia Screen Codec (TSCC)</entry> - <entry>8230d8560c41d444f249802a2700d1d5</entry> - <entry>shareware error on windows</entry> -</row> -<row> - <entry>vp31vfw.dll</entry> - <entry>On2 Open Source VP3 Codec (VP31)</entry> - <entry>845f3590ea489e2e45e876ab107ee7d2</entry> - <entry></entry> -</row> -<row> - <entry>vp4vfw.dll</entry> - <entry>On2 VP4 Personal Codec (VP40)</entry> - <entry>fc5480a482ccc594c2898dcc4188b58f</entry> - <entry></entry> -</row> -<row> - <entry>vp6vfw.dll</entry> - <entry>On2 VP6 Personal Codec (VP60)</entry> - <entry>04d635a364243013898fd09484f913fb</entry> - <entry></entry> -</row> -<row> - <entry>vp7vfw.dll</entry> - <entry>On2 VP7 Personal Codec (VP70)</entry> - <entry>cb4cc3d4ea7c94a35f1d81c3d750bc8d</entry> - <entry><option>-ffourcc VP70</option></entry> -</row> -<row> - <entry>ViVD2.dll</entry> - <entry>SoftMedia ViVD V2 codec VfW (GXVE)</entry> - <entry>a7b4bf5cac630bb9262c3f80d8a773a1</entry> - <entry></entry> -</row> -<row> - <entry>msulvc06.DLL</entry> - <entry>MSU Lossless codec (MSUD)</entry> - <entry>294bf9288f2f127bb86f00bfcc9ccdda</entry> - <entry> - Decodable by <application>Window Media Player</application>, - not <application>MPlayer</application> (yet). - </entry> -</row> -<row> - <entry>camcodec.dll</entry> - <entry>CamStudio lossless video codec (CSCD)</entry> - <entry>0efe97ce08bb0e40162ab15ef3b45615</entry> - <entry>sf.net/projects/camstudio</entry> -</row> -</tbody> -</tgroup> -</informaltable> - -The first column contains the codec names that should be passed after the -<literal>codec</literal> parameter, -like: <option>-xvfwopts codec=divx.dll</option> -The FourCC code used by each codec is given in the parentheses. -</para> - -<informalexample> -<para> -An example to convert an ISO DVD trailer to a VP6 flash video file -using compdata bitrate settings: -<screen> -mencoder -dvd-device <replaceable>zeiram.iso</replaceable> dvd://7 -o <replaceable>trailer.flv</replaceable> \ --ovc vfw -xvfwopts codec=vp6vfw.dll:compdata=onepass.mcf -oac mp3lame \ --lameopts cbr:br=64 -af lavcresample=22050 -vf yadif,scale=320:240,flip \ --of lavf -</screen> -</para> -</informalexample> -</sect2> - -<sect2 id="menc-feat-video-for-windows-bitrate-settings"> -<title>Using vfw2menc to create a codec settings file.</title> - -<para> -To encode with the Video for Windows codecs, you will need to set bitrate -and other options. This is known to work on x86 on both *NIX and Windows. -</para> -<para> -First you must build the <application>vfw2menc</application> program. -It is located in the <filename class="directory">TOOLS</filename> subdirectory -of the MPlayer source tree. -To build on Linux, this can be done using <application>Wine</application>: -<screen>winegcc vfw2menc.c -o vfw2menc -lwinmm -lole32</screen> - -To build on Windows in <application>MinGW</application> or -<application>Cygwin</application> use: -<screen>gcc vfw2menc.c -o vfw2menc.exe -lwinmm -lole32</screen> - -To build on <application>MSVC</application> you will need getopt. -Getopt can be found in the original <application>vfw2menc</application> -archive available at: -The <ulink url="http://oss.netfarm.it/mplayer-win32.php">MPlayer on win32</ulink> project. -</para> -<informalexample> -<para> -Below is an example with the VP6 codec. -<screen> -vfw2menc -f VP62 -d vp6vfw.dll -s firstpass.mcf -</screen> -This will open the VP6 codec dialog window. -Repeat this step for the second pass -and use <option>-s <replaceable>secondpass.mcf</replaceable></option>. -</para> -</informalexample> -<para> -Windows users can use -<option>-xvfwopts codec=vp6vfw.dll:compdata=dialog</option> to have -the codec dialog display before encoding starts. -</para> -</sect2> -</sect1> - - -<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - - -<sect1 id="menc-feat-quicktime-7"> -<title>Using <application>MEncoder</application> to create -<application>QuickTime</application>-compatible files</title> - - -<sect2 id="menc-feat-quicktime-7-why-use-it"> -<title>Why would one want to produce <application>QuickTime</application>-compatible Files?</title> - -<para> - There are several reasons why producing - <application>QuickTime</application>-compatible files can be desirable. -</para> -<itemizedlist> -<listitem><para> - You want any computer illiterate to be able to watch your encode on - any major platform (Windows, Mac OS X, Unices …). -</para></listitem> -<listitem><para> - <application>QuickTime</application> is able to take advantage of more - hardware and software acceleration features of Mac OS X than - platform-independent players like <application>MPlayer</application> - or <application>VLC</application>. - That means that your encodes have a chance to be played smoothly by older - G4-powered machines. -</para></listitem> -<listitem><para> - <application>QuickTime</application> 7 supports the next-generation codec H.264, - which yields significantly better picture quality than previous codec - generations (MPEG-2, MPEG-4 …). -</para></listitem> -</itemizedlist> -</sect2> - -<sect2 id="menc-feat-quicktime-7-constraints"> -<title><application>QuickTime</application> 7 limitations</title> - -<para> - <application>QuickTime</application> 7 supports H.264 video and AAC audio, - but it does not support them muxed in the AVI container format. - However, you can use <application>MEncoder</application> to encode - the video and audio, and then use an external program such as - <application>mp4creator</application> (part of the - <ulink url="http://mpeg4ip.sourceforge.net/">MPEG4IP suite</ulink>) - to remux the video and audio tracks into an MP4 container. -</para> - -<para> - <application>QuickTime</application>'s support for H.264 is limited, - so you will need to drop some advanced features. - If you encode your video with features that - <application>QuickTime</application> 7 does not support, - <application>QuickTime</application>-based players will show you a pretty - white screen instead of your expected video. -</para> - -<itemizedlist> -<listitem><para> - <emphasis role="bold">B-frames</emphasis>: - <application>QuickTime</application> 7 supports a maximum of 1 B-frame, i.e. - <option>-x264encopts bframes=1</option>. This means that - <option>b_pyramid</option> and <option>weight_b</option> will have no - effect, since they require <option>bframes</option> to be greater than 1. -</para></listitem> -<listitem><para> - <emphasis role="bold">Macroblocks</emphasis>: - <application>QuickTime</application> 7 does not support 8x8 DCT macroblocks. - This option (<option>8x8dct</option>) is off by default, so just be sure - not to explicitly enable it. This also means that the <option>i8x8</option> - option will have no effect, since it requires <option>8x8dct</option>. -</para></listitem> -<listitem><para> - <emphasis role="bold">Aspect ratio</emphasis>: - <application>QuickTime</application> 7 does not support SAR (sample - aspect ratio) information in MPEG-4 files; it assumes that SAR=1. Read - <link linkend="menc-feat-quicktime-7-scale">the section on scaling</link> - for a workaround. <application>QuickTime</application> X no longer has this - limitation. -</para></listitem> -</itemizedlist> - -</sect2> - -<sect2 id="menc-feat-quicktime-7-crop"> -<title>Cropping</title> -<para> - Suppose you want to rip your freshly bought copy of "The Chronicles of - Narnia". Your DVD is region 1, - which means it is NTSC. The example below would still apply to PAL, - except you would omit <option>-ofps 24000/1001</option> and use slightly - different <option>crop</option> and <option>scale</option> dimensions. -</para> - -<para> - After running <option>mplayer dvd://1</option>, you follow the process - detailed in the section <link linkend="menc-feat-telecine">How to deal - with telecine and interlacing in NTSC DVDs</link> and discover that it is - 24000/1001 fps progressive video. This simplifies the process somewhat, - since you do not need to use an inverse telecine filter such as - <option>pullup</option> or a deinterlacing filter such as - <option>yadif</option>. -</para> - -<para> - Next, you need to crop out the black bars from the top and bottom of the - video, as detailed in <link linkend="menc-feat-dvd-mpeg4-example-crop">this</link> - previous section. -</para> - -</sect2> - -<sect2 id="menc-feat-quicktime-7-scale"> -<title>Scaling</title> - -<para> - The next step is truly heartbreaking. - <application>QuickTime</application> 7 does not support MPEG-4 videos - with a sample aspect ratio other than 1, so you will need to upscale - (which wastes a lot of disk space) or downscale (which loses some - details of the source) the video to square pixels. - Either way you do it, this is highly inefficient, but simply cannot - be avoided if you want your video to be playable by - <application>QuickTime</application> 7. - <application>MEncoder</application> can apply the appropriate upscaling - or downscaling by specifying respectively <option>-vf scale=-10:-1</option> - or <option>-vf scale=-1:-10</option>. - This will scale your video to the correct width for the cropped height, - rounded to the closest multiple of 16 for optimal compression. - Remember that if you are cropping, you should crop first, then scale: - - <screen>-vf crop=720:352:0:62,scale=-10:-1</screen> -</para> - -</sect2> - -<sect2 id="menc-feat-quicktime-7-avsync"> -<title>A/V sync</title> - -<para> - Because you will be remuxing into a different container, you should - always use the <option>harddup</option> option to ensure that duplicated - frames are actually duplicated in the video output. Without this option, - <application>MEncoder</application> will simply put a marker in the video - stream that a frame was duplicated, and rely on the client software to - show the same frame twice. Unfortunately, this "soft duplication" does - not survive remuxing, so the audio would slowly lose sync with the video. -</para> - -<para> - The final filter chain looks like this: - <screen>-vf crop=720:352:0:62,scale=-10:-1,harddup</screen> -</para> - -</sect2> - -<sect2 id="menc-feat-quicktime-7-bitrate"> -<title>Bitrate</title> - -<para> - As always, the selection of bitrate is a matter of the technical properties - of the source, as explained - <link linkend="menc-feat-dvd-mpeg4-resolution-bitrate">here</link>, as - well as a matter of taste. - This movie has a fair bit of action and lots of detail, but H.264 video - looks good at much lower bitrates than XviD or other MPEG-4 codecs. - After much experimentation, the author of this guide chose to encode - this movie at 900kbps, and thought that it looked very good. - You may decrease bitrate if you need to save more space, or increase - it if you need to improve quality. -</para> - -</sect2> - -<sect2 id="menc-feat-quicktime-7-example"> -<title>Encoding example</title> - -<para> - You are now ready to encode the video. Since you care about - quality, of course you will be doing a two-pass encode. To shave off - some encoding time, you can specify the <option>turbo</option> option - on the first pass; this reduces <option>subq</option> and - <option>frameref</option> to 1. To save some disk space, you can - use the <option>ss</option> option to strip off the first few seconds - of the video. (I found that this particular movie has 32 seconds of - credits and logos.) <option>bframes</option> can be 0 or 1. - The other options are documented in <link - linkend="menc-feat-x264-encoding-options-speedvquality">Encoding with - the <systemitem class="library">x264</systemitem> codec</link> and - the man page. - - <screen>mencoder dvd://1 -o /dev/null -ss 32 -ovc x264 \ --x264encopts pass=1:turbo:bitrate=900:bframes=1:\ -me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \ --vf crop=720:352:0:62,scale=-10:-1,harddup \ --oac faac -faacopts br=192:mpeg=4:object=2 -channels 2 -srate 48000 \ --ofps 24000/1001</screen> - - If you have a multi-processor machine, don't miss the opportunity to - dramatically speed-up encoding by enabling - <link linkend="menc-feat-x264-encoding-options-speedvquality-threads"> - <systemitem class="library">x264</systemitem>'s multi-threading mode</link> - by adding <option>threads=auto</option> to your <option>x264encopts</option> - command-line. -</para> - -<para> - The second pass is the same, except that you specify the output file - and set <option>pass=2</option>. - - <screen>mencoder dvd://1 <emphasis role="bold">-o narnia.avi</emphasis> -ss 32 -ovc x264 \ --x264encopts <emphasis role="bold">pass=2</emphasis>:turbo:bitrate=900:frameref=5:bframes=1:\ -me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \ --vf crop=720:352:0:62,scale=-10:-1,harddup \ --oac faac -faacopts br=192:mpeg=4:object=2 -channels 2 -srate 48000 \ --ofps 24000/1001</screen> -</para> - -<para> - The resulting AVI should play perfectly in - <application>MPlayer</application>, but of course - <application>QuickTime</application> can not play it because it does - not support H.264 muxed in AVI. - So the next step is to remux the video into an MP4 container. -</para> -</sect2> - -<sect2 id="menc-feat-quicktime-7-remux"> -<title>Remuxing as MP4</title> - -<para> - There are several ways to remux AVI files to MP4. You can use - <application>mp4creator</application>, which is part of the - <ulink url="http://mpeg4ip.sourceforge.net/">MPEG4IP suite</ulink>. -</para> - -<para> - First, demux the AVI into separate audio and video streams using - <application>MPlayer</application>. - - <screen>mplayer narnia.avi -dumpaudio -dumpfile narnia.aac -mplayer narnia.avi -dumpvideo -dumpfile narnia.h264</screen> - - The file names are important; <application>mp4creator</application> - requires that AAC audio streams be named <systemitem>.aac</systemitem> - and H.264 video streams be named <systemitem>.h264</systemitem>. -</para> - -<para> - Now use <application>mp4creator</application> to create a new - MP4 file out of the audio and video streams. - - <screen>mp4creator -create=narnia.aac narnia.mp4 -mp4creator -create=narnia.h264 -rate=23.976 narnia.mp4</screen> - - Unlike the encoding step, you must specify the framerate as a - decimal (such as 23.976), not a fraction (such as 24000/1001). -</para> - -<para> - This <systemitem>narnia.mp4</systemitem> file should now be playable - with any <application>QuickTime</application> 7 application, such as - <application>QuickTime Player</application> or - <application>iTunes</application>. If you are planning to view the - video in a web browser with the <application>QuickTime</application> - plugin, you should also hint the movie so that the - <application>QuickTime</application> plugin can start playing it - while it is still downloading. <application>mp4creator</application> - can create these hint tracks: - - <screen>mp4creator -hint=1 narnia.mp4 -mp4creator -hint=2 narnia.mp4 -mp4creator -optimize narnia.mp4</screen> - - You can check the final result to ensure that the hint tracks were - created successfully: - - <screen>mp4creator -list narnia.mp4</screen> - - You should see a list of tracks: 1 audio, 1 video, and 2 hint tracks. - -<screen>Track Type Info -1 audio MPEG-4 AAC LC, 8548.714 secs, 190 kbps, 48000 Hz -2 video H264 Main@5.1, 8549.132 secs, 899 kbps, 848x352 @ 23.976001 fps -3 hint Payload mpeg4-generic for track 1 -4 hint Payload H264 for track 2 -</screen> -</para> - -</sect2> - -<sect2 id="menc-feat-quicktime-7-metadata"> -<title>Adding metadata tags</title> - -<para> - If you want to add tags to your video that show up in iTunes, you can use - <ulink url="http://atomicparsley.sourceforge.net/">AtomicParsley</ulink>. - - <screen>AtomicParsley narnia.mp4 --metaEnema --title "The Chronicles of Narnia" --year 2005 --stik Movie --freefree --overWrite</screen> - - The <option>--metaEnema</option> option removes any existing metadata - (<application>mp4creator</application> inserts its name in the - "encoding tool" tag), and <option>--freefree</option> reclaims the - space from the deleted metadata. - The <option>--stik</option> option sets the type of video (such as Movie - or TV Show), which iTunes uses to group related video files. - The <option>--overWrite</option> option overwrites the original file; - without it, <application>AtomicParsley</application> creates a new - auto-named file in the same directory and leaves the original file - untouched. -</para> - -</sect2> - -</sect1> - - -<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - - -<sect1 id="menc-feat-vcd-dvd"> -<title>Using <application>MEncoder</application> - 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>AC-3,PCM</entry> - <entry>1536 kbps (max)</entry> - <entry>30000/1001, 24000/1001</entry> - <entry>4:3, 16:9 (only for 720x480)</entry> -</row> -<row> - <entry>NTSC DVD</entry> - <entry>352x240<footnote id='fn-rare-resolutions'><para> - These resolutions are rarely used for DVDs because - they are fairly low quality.</para></footnote></entry> - <entry>MPEG-1</entry> - <entry>1856 kbps</entry> - <entry>48000 Hz</entry> - <entry>AC-3,PCM</entry> - <entry>1536 kbps (max)</entry> - <entry>30000/1001, 24000/1001</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 (max)</entry> - <entry>30000/1001</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>24000/1001, 30000/1001</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,AC-3,PCM</entry> - <entry>1536 kbps (max)</entry> - <entry>25</entry> - <entry>4:3, 16:9 (only for 720x576)</entry> -</row> -<row> - <entry>PAL DVD</entry> - <entry>352x288<footnoteref linkend='fn-rare-resolutions'/></entry> - <entry>MPEG-1</entry> - <entry>1856 kbps</entry> - <entry>48000 Hz</entry> - <entry>MP2,AC-3,PCM</entry> - <entry>1536 kbps (max)</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 (max)</entry> - <entry>25</entry> - <entry>4:3</entry> -</row> -<row> - <entry>PAL VCD</entry> - <entry>352x288</entry> - <entry>MPEG-1</entry> - <entry>1152 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> -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 allowed GOP size is 18. -For 25 or 24 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 extremely 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 (with timestamps on every frame, if possible): -<screen>-of mpeg -mpegopts format=dvd:tsaf</screen> -</para> - -<para> -DVD with NTSC Pullup: -<screen>-of mpeg -mpegopts format=dvd:tsaf:telecine -ofps 24000/1001</screen> -This allows 24000/1001 fps progressive content to be encoded at 30000/1001 -fps whilst maintaining DVD-compliance. -</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-a-v-sync"> -<title>Maintaining A/V sync</title> - -<para> -In order to maintain audio/video synchronization throughout the encode, -<application>MEncoder</application> has to drop or duplicate frames. -This works rather well when muxing into an AVI file, but is almost -guaranteed to fail to maintain A/V sync with other muxers such as MPEG. -This is why it is necessary to append the -<option>harddup</option> video filter at the end of the filter chain -to avoid this kind of problem. -You can find more technical information about <option>harddup</option> -in the section -<link linkend="menc-feat-dvd-mpeg4-muxing-filter-issues">Improving muxing and A/V sync reliability</link> -or in the manual page. -</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 achieved using the <option>-srate</option> option and -the <option>-af lavcresample</option> audio filter 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> -<listitem><para> - <emphasis role="bold">vstrict</emphasis>: - <option>vstrict</option>=0 should be used to create DVDs. - Without this option, <application>MEncoder</application> creates a - stream that cannot be correctly decoded by some standalone DVD - players. -</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:vstrict=0: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 with 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:vstrict=0 -</screen> -</para> -</sect3> -</sect2> - -<!-- ********** --> - -<sect2 id="menc-feat-vcd-dvd-audio"> -<title>Encoding Audio</title> - -<para> -VCD and SVCD support 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. -VCD only supports constant bitrate audio (CBR) whereas SVCD supports -variable bitrate (VBR), too. -Be careful when using VBR because some bad standalone players might not -support it too well. -</para> - -<para> -For DVD audio, <systemitem class="library">libavcodec</systemitem>'s -AC-3 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:tsaf \ - -vf scale=720:576,harddup -srate 48000 -af lavcresample=48000 \ - -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\ -keyint=15:vstrict=0: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:tsaf \ - -vf scale=720:480,harddup -srate 48000 -af lavcresample=48000 \ - -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\ -keyint=18:vstrict=0: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 AC-3 Audio to DVD</title> - -<para> -If the source already has AC-3 audio, use -oac copy instead of re-encoding it. -<screen> -mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd:tsaf \ - -vf scale=720:576,harddup -ofps 25 \ - -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\ -keyint=15:vstrict=0:aspect=16/9 -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 AC-3 Audio to DVD</title> - -<para> -If the source already has AC-3 audio, and is NTSC @ 24000/1001 fps: -<screen> -mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd:tsaf:telecine \ - -vf scale=720:480,harddup -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:\ - vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0: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: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-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: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-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: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-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:aspect=16/9 -ofps 30000/1001 \ - -o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable> -</screen> +OUTDATED CONTENT REMOVED </para> -</sect3> -</sect2> -</sect1> </chapter> diff --git a/DOCS/xml/en/faq.xml b/DOCS/xml/en/faq.xml index ea54989b8c..13ba61c3e9 100644 --- a/DOCS/xml/en/faq.xml +++ b/DOCS/xml/en/faq.xml @@ -13,8 +13,7 @@ How do I create a proper patch for <application>MPlayer</application>? </para></question> <answer><para> -We made a <ulink url="../../tech/patches.txt">short document</ulink> -describing all the necessary details. Please follow the instructions. +OUTDATED CONTENT REMOVED </para></answer> </qandaentry> @@ -23,10 +22,7 @@ describing all the necessary details. Please follow the instructions. How do I translate <application>MPlayer</application> to a new language? </para></question> <answer><para> -Read the <ulink url="../../tech/translations.txt">translation HOWTO</ulink>, -it should explain everything. You can get further help on the -<ulink url="http://lists.mplayerhq.hu/mailman/listinfo/mplayer-translations">MPlayer-translations</ulink> -mailing list. +OUTDATED CONTENT REMOVED </para></answer> </qandaentry> @@ -35,9 +31,7 @@ mailing list. How can I support <application>MPlayer</application> development? </para></question> <answer><para> -We are more than happy to accept your hardware and software -<ulink url="http://www.mplayerhq.hu/donations.html">donations</ulink>. -They help us in continuously improving <application>MPlayer</application>. +OUTDATED CONTENT REMOVED </para></answer> </qandaentry> @@ -46,14 +40,7 @@ They help us in continuously improving <application>MPlayer</application>. How can I become an <application>MPlayer</application> developer? </para></question> <answer><para> -We always welcome coders and documenters. Read the -<ulink url="../../tech/">technical documentation</ulink> -to get a first grasp. Then you should subscribe to the -<ulink url="http://lists.mplayerhq.hu/mailman/listinfo/mplayer-dev-eng">MPlayer-dev-eng</ulink> -mailing list and start coding. If you want to help out with the documentation, -join the -<ulink url="http://lists.mplayerhq.hu/mailman/listinfo/mplayer-docs">MPlayer-docs</ulink> -mailing list. +OUTDATED CONTENT REMOVED </para></answer> </qandaentry> @@ -99,8 +86,7 @@ stable, or upgrade frequently. Are there binary (RPM/Debian) packages of <application>MPlayer</application>? </para></question> <answer><para> -See the <link linkend="debian">Debian</link> and <link linkend="rpm">RPM</link> -section for details. +OUTDATED CONTENT REMOVED </para></answer> </qandaentry> @@ -109,31 +95,7 @@ section for details. How can I build a 32 bit <application>MPlayer</application> on a 64 bit Athlon? </para></question> <answer><para> -Try the following configure options: -<screen> -./configure --target=i386-linux --cc="gcc -m32" --as="as --32" --with-extralibdir=/usr/lib -</screen> -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -Configure ends with this text, and <application>MPlayer</application> won't compile! -<screen>Your gcc does not support even i386 for '-march' and '-mcpu'</screen> -</para></question> -<answer><para> -Your gcc isn't installed correctly, check the <filename>config.log</filename> -file for details. -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -I have a Matrox G200/G400/G450/G550, how do I compile/use the -<systemitem>mga_vid</systemitem> driver? -</para></question> -<answer><para> -Read the <link linkend="mga_vid">mga_vid</link> section. +OUTDATED CONTENT REMOVED </para></answer> </qandaentry> @@ -153,52 +115,6 @@ It's called <filename>XFree86-devel*</filename> under Red Hat, </para></answer> </qandaentry> -<qandaentry> -<question><para> -Building on Mac OS 10.3 leads to several link errors. -</para></question> -<answer> -<para> -The link error you're experiencing most likely looks like this: -<screen> -ld: Undefined symbols: -_LLCStyleInfoCheckForOpenTypeTables referenced from QuartzCore expected to be defined in ApplicationServices -_LLCStyleInfoGetUserRunFeatures referenced from QuartzCore expected to be defined in ApplicationServices -</screen> -This problem is the result of Apple developers using 10.4 to compile -their software and distributing the binaries to 10.3 users via -Software Update. -The undefined symbols are present in Mac OS 10.4, -but not 10.3. -One solution can be to downgrade to QuickTime 7.0.1. -Here is a better solution. -</para> -<para> -Get an -<ulink url="http://rapidshare.de/files/20281171/CompatFrameworks.tgz.html">older copy of the frameworks</ulink>. -This will give you a compressed file that contains the QuickTime -7.0.1 Framework and a 10.3.9 QuartzCore Framework. -</para> -<para> -Uncompress the files somewhere that is not in your System folder. -(i.e. do not install these frameworks into your -<filename class="directory">/System/Library/Frameworks</filename>! -Using this older copy is only meant to get around link errors!) -<screen>gunzip < CompatFrameworks.tgz | tar xvf -</screen> -In config.mak, you should append -<systemitem>-F/path/to/where/you/extracted</systemitem> -to the <systemitem>OPTFLAGS</systemitem> variable. -If you use <application>X-Code</application>, you can just select these -frameworks instead of the system ones. -</para> -<para> -The resulting <application>MPlayer</application> binary will actually -use the framework that is installed on your system via dynamic links that -are resolved at run-time. -(You can verify this using <systemitem>otool -l</systemitem>). -</para> -</answer> -</qandaentry> </qandadiv> <!-- ********** --> @@ -211,9 +127,7 @@ are resolved at run-time. Are there any mailing lists on <application>MPlayer</application>? </para></question> <answer><para> -Yes. Look at the -<ulink url="http://www.mplayerhq.hu/design7/mailing_lists.html">mailing lists section</ulink> -of our homepage. +OUTDATED CONTENT REMOVED </para></answer> </qandaentry> @@ -223,31 +137,7 @@ I've found a nasty bug when I tried to play my favorite video! Who should I inform? </para></question> <answer><para> -Please read the <link linkend="bugreports">bug reporting guidelines</link> -and follow the instructions. -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -I get a core dump when trying to dump streams, what's wrong? -</para></question> -<answer><para> -Don't panic. Make sure you know where your towel is.</para> -<para> -Seriously, notice the smiley and start looking for files that end in -<filename>.dump</filename>. -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -When I start playing, I get this message but everything seems fine: -<screen>Linux RTC init: ioctl (rtc_pie_on): Permission denied</screen> -</para></question> -<answer><para> -You need a specially set up kernel to use the RTC timing code. -For details see the <link linkend="rtc">RTC</link> section of the documentation. +OUTDATED CONTENT REMOVED </para></answer> </qandaentry> @@ -352,8 +242,7 @@ There are error messages about file not found <filename>/usr/local/lib/codecs/</filename> ... </para></question> <answer><para> -Download and install the binary codecs from our -<ulink url="http://www.mplayerhq.hu/design7/dload.html">download page</ulink>. +OUTDATED CONTENT REMOVED </para></answer> </qandaentry> @@ -364,21 +253,8 @@ use for a particular file, e.g. <filename>movie.avi</filename>? </para></question> <answer><para> Create a file named <filename>movie.avi.conf</filename> with the file-specific -options in it and put it in <filename class="directory">~/.mplayer</filename> -or in the same directory as the file. -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -Subtitles are very nice, the most beautiful I've ever seen, but they -slow down playing! I know it's unlikely ... -</para></question> -<answer><para> -After running <filename>./configure</filename>, -edit <filename>config.h</filename> and replace -<systemitem>#undef FAST_OSD</systemitem> with -<systemitem>#define FAST_OSD</systemitem>. Then recompile. +options in it and put it in <filename class="directory">~/.mplayer</filename>. +Also see the manpage about <option>-use-filedir-conf</option>. </para></answer> </qandaentry> @@ -389,7 +265,7 @@ How can I run <application>MPlayer</application> in the background? <answer><para> Use: <screen> -mplayer <replaceable>options</replaceable> <replaceable>filename</replaceable> < /dev/null & +OUTDATED CONTENT REMOVED </screen> </para></answer> </qandaentry> @@ -424,10 +300,7 @@ system, you should remove it now. How can I get subtitles to appear on the black margins around a movie? </para></question> <answer><para> -Use the <systemitem>expand</systemitem> video filter to increase the -area onto which the movie is rendered vertically and place the movie -at the top border, for example: -<screen>mplayer -vf expand=0:-100:0:0 -slang de dvd://1</screen> +OUTDATED CONTENT REMOVED </para></answer> </qandaentry> @@ -453,15 +326,6 @@ mplayer -vo null -ao null -frames 0 -v <replaceable>filename</replaceable> | gre <qandaentry> <question><para> -I'm trying to play a random stream off the internet but it fails. -</para></question> -<answer><para> -Try playing the stream with the <option>-playlist</option> option. -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> I downloaded a movie off a P2P network and it doesn't work! </para></question> <answer><para> @@ -476,68 +340,7 @@ a friend, and he says it works, try comparing I'm having trouble getting my subtitles to display, help!! </para></question> <answer><para> -Make sure you have installed fonts properly. Run through the steps in the -<link linkend="fonts-osd">Fonts and OSD</link> part of the installation -section again. If you are using TrueType fonts, verify that you have the -<systemitem class="library">FreeType</systemitem> library installed. -Other things include checking your subtitles in a text editor or with other -players. Also try converting them to another format. -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -Why doesn't <application>MPlayer</application> work on Fedora Core? -</para></question> -<answer><para> -There is a bad interaction on Fedora between exec-shield, -prelink, and any applications which use Windows DLLs -(such as <application>MPlayer</application>). -</para> -<para> -The problem is that exec-shield randomizes the load addresses of all the -system libraries. This randomization happens at prelink time (once every -two weeks). -</para> -<para> -When <application>MPlayer</application> tries to load a Windows DLL it -wants to put it at a specific address (0x400000). If an important system -library happens to be there already, <application>MPlayer</application> -will crash. -(A typical symptom would be a segmentation fault when trying -to play Windows Media 9 files.) -</para> -<para> -If you run into this problem you have two options: -<itemizedlist> -<listitem><para> - Wait two weeks. It might start working again. -</para></listitem> -<listitem><para> - Relink all the binaries on the system with different - prelink options. Here are step by step instructions: - </para> - <procedure> - <step><para> - Edit <filename>/etc/syconfig/prelink</filename> and change - <programlisting>PRELINK_OPTS=-mR</programlisting> to - <programlisting>PRELINK_OPTS="-mR --no-exec-shield"</programlisting> - </para></step> - <step><para> - <command>touch /var/lib/misc/prelink.force</command> - </para></step> - <step><para> - <command>/etc/cron.daily/prelink</command> - (This relinks all the applications, and it takes quite a while.) - </para></step> - <step><para> - <command>execstack -s <replaceable>/path/to/</replaceable>mplayer</command> - (This turns off exec-shield for the - <application>MPlayer</application> binary.) - </para></step> - </procedure> -</listitem> -</itemizedlist> +OUTDATED CONTENT REMOVED </para></answer> </qandaentry> @@ -549,7 +352,7 @@ If you run into this problem you have two options: <answer><para> Don't use <application>MPlayer</application> on a CPU different from the one it was compiled on or recompile with runtime CPU detection -(<command>./configure --enable-runtime-cpudetection</command>). +OUTDATED CONTENT REMOVED </para></answer> </qandaentry> @@ -567,35 +370,6 @@ default YV12 (see the <link linkend="tv-input">TV</link> section). <qandaentry> <question><para> -I get very strange percentage values (way too big) -while playing files on my notebook. -</para></question> -<answer><para> -It's an effect of the power management / power saving system of your notebook -(BIOS, not kernel). Plug the external power connector in -<emphasis role="bold">before</emphasis> you power on your notebook. You can -also try whether -<ulink url="http://www.kernel.org/pub/linux/utils/kernel/cpufreq/cpufreq.html">cpufreq</ulink> -(a SpeedStep interface for Linux) helps you. -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -The audio/video gets totally out of sync when I run -<application>MPlayer</application> as -<systemitem class="username">root</systemitem> on my notebook. -It works normal when i run it as a user. -</para></question> -<answer><para> -This is again a power management effect (see above). Plug the external power -connector in <emphasis role="bold">before</emphasis> you power on your notebook -or make sure you do not use the <option>-rtc</option> option. -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> While playing a movie it suddenly gets jerky and I get the following message: <screen>Badly interleaved AVI file detected - switching to -ni mode...</screen> </para></question> @@ -662,18 +436,6 @@ Also try experimenting with the <option>-fstype</option> option. <qandaentry> <question><para> -Audio goes out of sync playing an AVI file. -</para></question> -<answer><para> -Try the <option>-bps</option> or <option>-nobps</option> option. If it does not -improve, read the -<link linkend="bugreports">bug reporting guidelines</link> -and upload the file to FTP. -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> How can I use <application>dmix</application> with <application>MPlayer</application>? </para></question> @@ -735,41 +497,6 @@ try to play a file which has 22050Hz audio. Try the <qandaentry> <question><para> -When I play this movie I get video-audio desync and/or -<application>MPlayer</application> crashes with the following message: -<screen> -Too many (945 in 8390980 bytes) video packets in the buffer! -</screen> -</para></question> -<answer><para> -This can have multiple reasons. -<itemizedlist> -<listitem><para> - Your CPU <emphasis>and/or</emphasis> video card <emphasis>and/or</emphasis> - bus is too slow. <application>MPlayer</application> displays a message if - this is the case (and the dropped frames counter goes up fast). -</para></listitem> -<listitem><para> - If it is an AVI, maybe it has bad interleaving, try the - <option>-ni</option> option to work around this. - Or it may have a bad header, in this case <option>-nobps</option> - and/or <option>-mc 0</option> can help. -</para></listitem> -<listitem><para> - Many FLV files will only play correctly with <option>-correct-pts</option>. - Unfortunately <application>MEncoder</application> does not have this option, - but you can try setting <option>-fps</option> to the correct value manually - if you know it. -</para></listitem> -<listitem><para> - Your sound driver is buggy. -</para></listitem> -</itemizedlist> -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> How can I get rid of A/V desynchronization while seeking through RealMedia streams? </para></question> @@ -872,25 +599,14 @@ mplayer dvd://1 -dvd-device <replaceable>/path/to/directory</replaceable> <qandaentry> <question><para> -If <application>MPlayer</application> is paused and I try to seek or press any -key at all, <application>MPlayer</application> ceases to be paused. -I would like to be able to seek in the paused movie. -</para></question> -<answer><para> -This is very tricky to implement without losing A/V synchronization. -All attempts have failed so far, but patches are welcome. -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> I'd like to seek +/- 1 frame instead of 10 seconds. </para></question> <answer><para> You can step forward one frame by pressing <keycap>.</keycap>. If the movie was not paused it will be paused afterwards (see the man page for details). -Stepping backwards is unlikely to be implemented anytime soon. +Stepping backwards is not currently implemented, but note that you can make +small seeks using the <option>-hr-seek</option> functionality. </para></answer> </qandaentry> </qandadiv> @@ -900,332 +616,9 @@ Stepping backwards is unlikely to be implemented anytime soon. <qandadiv id="faq-encoding"> <title>Encoding</title> -<qandaentry> -<question><para> -How can I encode? -</para></question> -<answer><para> -Read the <link linkend="mencoder"><application>MEncoder</application></link> -section. -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -How can I dump a full DVD title into a file? -</para></question> -<answer><para> -Once you have selected your title, and made sure it plays fine with -<application>MPlayer</application>, use the option <option>-dumpstream</option>. -For example: -<screen> -mplayer dvd://5 -dumpstream -dumpfile <replaceable>dvd_dump.vob</replaceable> -</screen> -will dump the 5th title of the DVD into the file -<replaceable>dvd_dump.vob</replaceable> -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -How can I create (S)VCDs automatically? -</para></question> -<answer><para> -Try the <filename>mencvcd.sh</filename> script from the -<filename class="directory">TOOLS</filename> subdirectory. -With it you can encode DVDs or other movies to VCD or SVCD format -and even burn them directly to CD. -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -How can I create (S)VCDs? -</para></question> -<answer><para> -Newer versions of <application>MEncoder</application> can directly -generate MPEG-2 files that can be used as a base to create a VCD or SVCD and -are likely to be playable out of the box on all platforms (for example, -to share a video from a digital camcorder with your computer-illiterate -friends). -Please read -<link linkend="menc-feat-vcd-dvd">Using MEncoder to create VCD/SVCD/DVD-compliant files</link> -for more details. -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -How can I join two video files? -</para></question> -<answer><para> -MPEG files can be concatenated into a single file with luck. -For AVI files, you can use <application>MEncoder</application>'s -multiple file support like this: -<screen> -mencoder -ovc copy -oac copy -o <replaceable>out.avi</replaceable> <replaceable>file1.avi</replaceable> <replaceable>file2.avi</replaceable> -</screen> -This will only work if the files are of the same resolution -and use the same codec. -You can also try -<ulink url="http://fixounet.free.fr/avidemux/">avidemux</ulink> and -<application>avimerge</application> (part of the -<ulink url="http://www.transcoding.org/">transcode</ulink> -tool set). -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -How can I fix AVI files with a broken index or bad interleaving? -</para></question> -<answer><para> -To avoid having to use <option>-idx</option> to be able to seek in -AVI files with a broken index or <option>-ni</option> to play AVI -files with bad interleaving, use the command -<screen> -mencoder <replaceable>input.avi</replaceable> -idx -ovc copy -oac copy -o <replaceable>output.avi</replaceable> -</screen> -to copy the video and audio streams into a new AVI file while -regenerating the index and correctly interleaving the data. -Of course this cannot fix possible bugs in the video and/or audio streams. -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -How can I fix the aspect ratio of an AVI file? -</para></question> -<answer><para> -You can do such a thing thanks to <application>MEncoder</application>'s -<option>-force-avi-aspect</option> option, which overrides the aspect -stored in the AVI OpenDML vprp header option. For example: -<screen> -mencoder <replaceable>input.avi</replaceable> -ovc copy -oac copy -o <replaceable>output.avi</replaceable> -force-avi-aspect 4/3 -</screen> -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -How can I backup and encode a VOB file with a broken beginning? -</para></question> -<answer><para> -The main problem when you want to encode a VOB file which is corrupted -<footnote id='fn-corrupted-files-or-copy-protection'><para> -To some extent, some forms of copy protection used in DVDs can be -assumed to be content corruption. -</para></footnote> -is that it will be hard to get an encode with perfect A/V sync. -One workaround is to just shave off the corrupted part and encode just the -clean part. -First you need to find where the clean part starts: -<screen> -mplayer <replaceable>input.vob</replaceable> -sb <replaceable>nb_of_bytes_to_skip</replaceable> -</screen> -Then you can create a new file which contains just the clean part: -<screen> -dd if=<replaceable>input.vob</replaceable> of=<replaceable>output_cut.vob</replaceable> skip=1 ibs=<replaceable>nb_of_bytes_to_skip</replaceable> -</screen> -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -I can't encode DVD subtitles into the AVI! -</para></question> -<answer><para> -You have to properly specify the <option>-sid</option> option. -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -How can I encode only selected chapters from a DVD? -</para></question> -<answer><para> -Use the <option>-chapter</option> option correctly, -like: <option>-chapter 5-7</option>. -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -I'm trying to work with 2GB+ files on a VFAT file system. Does it work? -</para></question> -<answer><para> -No, VFAT doesn't support 2GB+ files. -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -What is the meaning of the numbers on the status line -during the encoding process? -</para></question> -<answer><para> -Example: -<screen> -Pos: 264.5s 6612f ( 2%) 7.12fps Trem: 576min 2856mb A-V:0.065 [2126:192] -</screen> -<variablelist> - <varlistentry> - <term><systemitem>Pos: 264.5s</systemitem></term> - <listitem><para>time position in the encoded stream</para></listitem> -</varlistentry> -<varlistentry> - <term><systemitem>6612f</systemitem></term> - <listitem><para>number of video frames encoded</para></listitem> -</varlistentry> -<varlistentry> - <term><systemitem>( 2%)</systemitem></term> - <listitem><para>portion of the input stream encoded</para></listitem> -</varlistentry> -<varlistentry> - <term><systemitem>7.12fps</systemitem></term> - <listitem><para>encoding speed</para></listitem> -</varlistentry> -<varlistentry> - <term><systemitem>Trem: 576min</systemitem></term> - <listitem><para>estimated remaining encoding time</para></listitem> -</varlistentry> -<varlistentry> - <term><systemitem>2856mb</systemitem></term> - <listitem><para>estimated size of the final encode</para></listitem> -</varlistentry> -<varlistentry> - <term><systemitem>A-V:0.065</systemitem></term> - <listitem><para>current delay between audio and video streams</para></listitem> -</varlistentry> -<varlistentry> - <term><systemitem>[2126:192]</systemitem></term> - <listitem><para> - average video bitrate (in kb/s) and average audio bitrate (in kb/s) - </para></listitem> -</varlistentry> -</variablelist> -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -Why is the recommended bitrate printed by <application>MEncoder</application> -negative? -</para></question> -<answer><para> -Because the bitrate you encoded the audio with is too large to fit the -movie on any CD. Check if you have libmp3lame installed properly. -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -I can't encode an ASF file to AVI/MPEG-4 (DivX) because it uses 1000 fps. -</para></question> -<answer><para> -Since ASF uses variable framerate but AVI uses a fixed one, you -have to set it by hand with the <option>-ofps</option> option. -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -How can I put subtitles in the output file? -</para></question> -<answer><para> -Just pass the <option>-sub <filename></option> (or <option>-sid</option>, -respectively) option to <application>MEncoder</application>. -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -How do I encode only sound from a music video? -</para></question> -<answer><para> -It's not possible directly, but you can try this (note the -<emphasis role="bold">&</emphasis> at the end of -<command>mplayer</command> command): -<screen> -mkfifo <replaceable>encode</replaceable> -mplayer -ao pcm -aofile <replaceable>encode</replaceable> dvd://1 & -lame <replaceable>your_opts</replaceable> <replaceable>encode</replaceable> <replaceable>music.mp3</replaceable> -rm <replaceable>encode</replaceable> -</screen> -This allows you to use any encoder, not only <application>LAME</application>, -just replace <command>lame</command> with your favorite audio encoder in the -above command. -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -Why do third-party players fail to play MPEG-4 movies encoded by -<application>MEncoder</application> versions later than 1.0pre7? -</para></question> -<answer><para> -<systemitem class="library">libavcodec</systemitem>, the native MPEG-4 -encoding library usually shipped with <application>MEncoder</application>, -used to set the FourCC to 'DIVX' when encoding MPEG-4 videos -(the FourCC is an AVI tag to identify the software used to encode and -the intended software to use for decoding the video). -This led many people to think that -<systemitem class="library">libavcodec</systemitem> -was a DivX encoding library, when in fact it is a completely different -MPEG-4 encoding library which implements the MPEG-4 standard much -better than DivX does. -Therefore, the new default FourCC used by -<systemitem class="library">libavcodec</systemitem> is 'FMP4', but you -may override this behavior using <application>MEncoder</application>'s -<option>-ffourcc</option> option. -You may also change the FourCC of existing files in the same way: -<screen> -mencoder <replaceable>input.avi</replaceable> -o <replaceable>output.avi</replaceable> -ffourcc XVID -</screen> -Note that this will set the FourCC to XVID rather than DIVX. -This is recommended as DIVX FourCC means DivX4, which is a very basic -MPEG-4 codec, whereas DX50 and XVID both mean full MPEG-4 (ASP). -Therefore, if you change the FourCC to DIVX, some bad software or -hardware players may choke on some advanced features that -<systemitem class="library">libavcodec</systemitem> supports, but DivX -doesn't; on the other hand <systemitem class="library">Xvid</systemitem> -is closer to <systemitem class="library">libavcodec</systemitem> in -terms of functionality, and is supported by all decent players. -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -How can I encode an audio only file? -</para></question> -<answer><para> -Use <filename>aconvert.sh</filename> from the -<filename class="directory">TOOLS</filename> -subdirectory in the MPlayer source tree. -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -How can I play subtitles embedded in AVI? -</para></question> -<answer><para> -Use <filename>avisubdump.c</filename> from the -<filename class="directory">TOOLS</filename> subdirectory or read -<ulink url="http://xlife.zuavra.net/curse/0012/">this document about extracting/demultiplexing subtitles embedded in OpenDML AVI files</ulink>. -</para></answer> -</qandaentry> - -<qandaentry> -<question><para> -MEncoder won't... -</para></question> -<answer><para> -Have a look at the <filename class="directory">TOOLS</filename> -subdirectory for a collection of random scripts and hacks. -<filename>TOOLS/README</filename> contains documentation. -</para></answer> -</qandaentry> +<para> +OUTDATED CONTENT REMOVED +</para> </qandadiv> </qandaset> diff --git a/DOCS/xml/en/install.xml b/DOCS/xml/en/install.xml index 1ab56f1cc4..68f8020ab2 100644 --- a/DOCS/xml/en/install.xml +++ b/DOCS/xml/en/install.xml @@ -24,77 +24,9 @@ answers. <sect1 id="softreq"> <title>Software requirements</title> -<itemizedlist> -<listitem><para> - <emphasis role="bold">POSIX system</emphasis> - You need a POSIX-compatible - shell and POSIX-compatible system tools like grep, sed, awk, etc. in your - path. -</para></listitem> -<listitem><para> - <emphasis role="bold">GNU make</emphasis> 3.81 or later -</para></listitem> -<listitem><para> - <emphasis role="bold">binutils</emphasis> - GNU binutils 2.11 or later - is known to work. -</para></listitem> -<listitem><para> - <emphasis role="bold">compiler</emphasis> - We mostly use gcc, the - recommended versions on x86 are 2.95 and 3.4+. On PowerPC, use 4.x+. - icc 10.1+ is also known to work. -</para></listitem> -<listitem><para> - <emphasis role="bold">Xorg/XFree86</emphasis> - recommended version is - 4.3 or later. Make sure the - <emphasis role="bold">development packages</emphasis> are installed, - too, otherwise it won't work. - You don't absolutely need X, some video output drivers work without it. -</para></listitem> -<listitem><para> - <emphasis role="bold">FreeType</emphasis> - 2.0.9 or later is required - for the OSD and subtitles -</para></listitem> -<listitem><para> - <emphasis role="bold">ALSA</emphasis> - optional, for ALSA audio output - support. At least 0.9.0rc4 is required. -</para></listitem> -<listitem><para> - <emphasis role="bold">libjpeg</emphasis> - - required for the optional JPEG video output driver -</para></listitem> -<listitem><para> - <emphasis role="bold">libpng</emphasis> - - required for the optional PNG video output driver -</para></listitem> -<listitem><para> - <emphasis role="bold">directfb</emphasis> - optional, 0.9.22 or later - required for the directfb/dfbmga video output drivers -</para></listitem> -<listitem><para> - <emphasis role="bold">lame</emphasis> - 3.90 or later is recommended, - necessary for encoding MP3 audio with <application>MEncoder</application>. -</para></listitem> -<listitem><para> - <emphasis role="bold">zlib</emphasis> - recommended, many codecs use it. -</para></listitem> -<listitem><para> - <emphasis role="bold"><ulink url="http://www.live555.com/mplayer/">LIVE555 Streaming Media</ulink></emphasis> - - optional, needed for some RTSP/RTP streams -</para></listitem> -<listitem><para> - <emphasis role="bold">cdparanoia</emphasis> - optional, for CDDA support -</para></listitem> -<listitem><para> - <emphasis role="bold">libxmms</emphasis> - optional, for XMMS input plugin - support. At least 1.2.7 is required. -</para></listitem> -<listitem><para> - <emphasis role="bold">libsmb</emphasis> - optional, for SMB networking support -</para></listitem> -<listitem><para> - <emphasis role="bold"><ulink url="http://www.underbit.com/products/mad/">libmad</ulink></emphasis> - - optional, for fast integer-only MP3 decoding on FPU-less platforms -</para></listitem> -</itemizedlist> +<para> +OUTDATED CONTENT REMOVED +</para> </sect1> @@ -104,71 +36,8 @@ answers. <sect1 id="features"> <title>Features</title> -<itemizedlist> -<listitem><para> - If you want to install <application>MEncoder</application> (our great - all-purpose encoder), see the - <link linkend="mencoder"><application>MEncoder</application></link> section. -</para></listitem> -<listitem><para> - If you have a V4L compatible <emphasis role="bold">TV tuner</emphasis> card, - and wish to watch/grab and encode movies with - <application>MPlayer</application>, - read the <link linkend="tv-input">TV input</link> section. -</para></listitem> -<listitem><para> - If you have a V4L compatible <emphasis role="bold">radio tuner</emphasis> - card, and wish to listen and capture sound with - <application>MPlayer</application>, - read the <link linkend="radio">radio</link> section. -</para></listitem> -<listitem><para> - There is a neat <emphasis role="bold">OSD Menu</emphasis> support ready to be - used. Check the <link linkend="subosd">OSD menu</link> section. -</para></listitem> -</itemizedlist> - -<para> -Then build <application>MPlayer</application>: -<screen> -./configure -make -make install -</screen> -</para> - -<para> -At this point, <application>MPlayer</application> is ready to use. -Check if you have a <filename>codecs.conf</filename> file in your home -directory at (<filename>~/.mplayer/codecs.conf</filename>) left from old -<application>MPlayer</application> versions. If you find one, remove it. -</para> - <para> -Debian users can build a .deb package for themselves, it's very simple. -Just exec -<screen>fakeroot debian/rules binary</screen> -in <application>MPlayer</application>'s root directory. See -<link linkend="debian">Debian packaging</link> for detailed instructions. -</para> - -<para> -<emphasis role="bold">Always browse the output of</emphasis> -<filename>./configure</filename>, and the -<filename>config.log</filename> file, they contain information about -what will be built, and what will not. You may also want to view -<filename>config.h</filename> and <filename>config.mak</filename> files. -If you have some libraries installed, but not detected by -<filename>./configure</filename>, then check if you also have the proper -header files (usually the -dev packages) and their version matches. The -<filename>config.log</filename> file usually tells you what is missing. -</para> - -<para> -Though not mandatory, the fonts should be installed in order to gain OSD, -and subtitle functionality. The recommended method is installing a TTF -font file and telling <application>MPlayer</application> to use it. -See the <link linkend="subosd">Subtitles and OSD</link> section for details. +OUTDATED CONTENT REMOVED </para> </sect1> @@ -195,136 +64,9 @@ frontends page</ulink> for a list of existing GUIs. <title>Fonts and OSD</title> <para> -You need to tell <application>MPlayer</application> which font to use to -enjoy OSD and subtitles. Any TrueType font or special bitmap fonts will -work. However, TrueType fonts are recommended as they look far better, -can be properly scaled to the movie size and cope better with different -encodings. -</para> - -<!-- ********** --> - -<sect2 id="truetype-fonts"> -<title>TrueType fonts</title> - -<para> -There are two ways to get TrueType fonts to work. The first is to pass -the <option>-font</option> option to specify a TrueType font file on -the command line. This option will be a good candidate to put in your -configuration file (see the manual page for details). -The second is to create a symlink called <filename>subfont.ttf</filename> -to the font file of your choice. Either -<screen> -ln -s <replaceable>/path/to/sample_font.ttf</replaceable> ~/.mplayer/subfont.ttf -</screen> -for each user individually or a system-wide one: -<screen> -ln -s <replaceable>/path/to/sample_font.ttf</replaceable> $PREFIX/share/mplayer/subfont.ttf -</screen> -</para> - -<para> -If <application>MPlayer</application> was compiled with -<systemitem class="library">fontconfig</systemitem> support, the above methods -won't work, instead <option>-font</option> expects a -<systemitem class="library">fontconfig</systemitem> font name -and defaults to the sans-serif font. Example: -<screen> -mplayer -font <replaceable>'Bitstream Vera Sans'</replaceable> <replaceable>anime.mkv</replaceable> -</screen> -</para> - -<para> -To get a list of fonts known to -<systemitem class="library">fontconfig</systemitem>, -use <command>fc-list</command>. -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="bitmap-fonts"> -<title>bitmap fonts</title> - -<para> -If for some reason you wish or need to employ bitmap fonts, download a set -from our homepage. You can choose between various -<ulink url="http://www.mplayerhq.hu/MPlayer/releases/fonts/">ISO fonts</ulink> -and some sets of fonts -<ulink url="http://www.mplayerhq.hu/MPlayer/contrib/fonts/">contributed by users</ulink> -in various encodings. -</para> - -<para> -Uncompress the file you downloaded to -<filename class="directory">~/.mplayer</filename> or -<filename class="directory">$PREFIX/share/mplayer</filename>. -Then rename or symlink one of the extracted directories to -<filename class="directory">font</filename>, for example: -<screen> -ln -s <replaceable>~/.mplayer/arial-24</replaceable> ~/.mplayer/font -</screen> -<screen> -ln -s <replaceable>$PREFIX/share/mplayer/arial-24</replaceable> $PREFIX/share/mplayer/font -</screen> -</para> - -<para> -Fonts should have an appropriate <filename>font.desc</filename> file -which maps Unicode font positions to the actual code page of the -subtitle text. Another solution is to have UTF-8-encoded subtitles -and use the <option>-utf8</option> option or give the subtitles -file the same name as your video file with a <filename>.utf</filename> -extension and have it in the same directory as the video file. +OUTDATED CONTENT REMOVED </para> -</sect2> - -<!-- ********** --> -<sect2 id="osdmenu"> -<title>OSD menu</title> - -<para> -<application>MPlayer</application> has a completely user-definable -OSD Menu interface. -</para> - -<note><para> -the Preferences menu is currently UNIMPLEMENTED! -</para></note> - -<orderedlist> -<title>Installation</title> -<listitem><para> - compile <application>MPlayer</application> by passing the - <option>--enable-menu</option> to <filename>./configure</filename> -</para></listitem> -<listitem><para> - make sure you have an OSD font installed -</para></listitem> -<listitem><para> - copy <filename>etc/menu.conf</filename> to your - <filename class="directory">.mplayer</filename> directory -</para></listitem> -<listitem><para> - copy <filename>etc/input.conf</filename> to your - <filename class="directory">.mplayer</filename> directory, or to the - system-wide <application>MPlayer</application> config dir (default: - <filename class="directory">/usr/local/etc/mplayer</filename>) -</para></listitem> -<listitem><para> - check and edit <filename>input.conf</filename> to enable menu movement keys - (it is described there). -</para></listitem> -<listitem><para> - start <application>MPlayer</application> by the following example: - <screen>mplayer -menu <replaceable>file.avi</replaceable></screen> - </para></listitem> -<listitem><para> - push any menu key you defined -</para></listitem> -</orderedlist> -</sect2> </sect1> @@ -334,111 +76,9 @@ the Preferences menu is currently UNIMPLEMENTED! <sect1 id="codec-installation"> <title>Codec installation</title> -<!-- ********** --> - -<sect2 id="xvid"> -<title>Xvid</title> - -<para> -<ulink url="http://www.xvid.org">Xvid</ulink> is a free software MPEG-4 ASP -compliant video codec. Note that Xvid is not necessary to decode Xvid-encoded -video. <systemitem class="library">libavcodec</systemitem> is used by -default as it offers better speed. -</para> - -<procedure> -<title>Installing <systemitem class="library">Xvid</systemitem></title> <para> - Like most open source software, it is available in two flavors: - <ulink url="http://www.xvid.org/downloads.html">official releases</ulink> - and the CVS version. - The CVS version is usually stable enough to use, as most of the time it - features fixes for bugs that exist in releases. - Here is what to do to make <systemitem class="library">Xvid</systemitem> - CVS work with <application>MEncoder</application>: +OUTDATED CONTENT REMOVED </para> -<step><para> - <screen>cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid login</screen> -</para></step> -<step><para> - <screen>cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid co xvidcore</screen> -</para></step> -<step><para> - <screen>cd xvidcore/build/generic</screen> -</para></step> -<step><para> - <screen>./bootstrap.sh && ./configure</screen> - You may have to add some options (examine the output of - <command>./configure --help</command>). -</para></step> -<step><para> - <screen>make && make install</screen> -</para></step> -<step><para> - Recompile <application>MPlayer</application>. -</para></step> -</procedure> -</sect2> - -<!-- ********** --> - -<sect2 id="x264"> -<title><systemitem class="library">x264</systemitem></title> - -<para> -<ulink url="http://developers.videolan.org/x264.html"><systemitem class="library">x264</systemitem></ulink> -is a library for creating H.264 video. -<application>MPlayer</application> sources are updated whenever -an <systemitem class="library">x264</systemitem> API change -occurs, so it is always suggested to use -<application>MPlayer</application> from Subversion. -</para> - -<para> -If you have a GIT client installed, the latest x264 -sources can be gotten with this command: -<screen>git clone git://git.videolan.org/x264.git</screen> - -Then build and install in the standard way: -<screen>./configure && make && make install</screen> - -Now rerun <filename>./configure</filename> for -<application>MPlayer</application> to pick up -<systemitem class="library">x264</systemitem> support. -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="amr"> -<title>AMR</title> - -<para> -MPlayer can use the OpenCORE AMR libraries through FFmpeg. -Download the libraries for AMR-NB and AMR-WB from the -<ulink url="http://sourceforge.net/projects/opencore-amr/">opencore-amr</ulink> -project and install them according to the instructions on that page. -</para> -</sect2> - -<sect2 id="xmms"> -<title>XMMS</title> - -<para> -<application>MPlayer</application> can use <application>XMMS</application> input -plugins to play many file formats. There are plugins for SNES game tunes, SID -tunes (from Commodore 64), many Amiga formats, .xm, .it, VQF, Musepack, Bonk, -shorten and many others. You can find them at the -<ulink url="http://www.xmms.org/plugins.php?category=input">XMMS input plugin page</ulink>. -</para> - -<para> -For this feature you need to have <application>XMMS</application> and compile -<application>MPlayer</application> with -<filename>./configure --enable-xmms</filename>. -</para> -</sect2> - </sect1> @@ -449,46 +89,7 @@ For this feature you need to have <application>XMMS</application> and compile <title>RTC</title> <para> -There are three timing methods in <application>MPlayer</application>. - -<itemizedlist> -<listitem><para> - <emphasis role="bold">To use the old method</emphasis>, you don't have to do - anything. It uses <systemitem>usleep()</systemitem> to tune - A/V sync, with +/- 10ms accuracy. However sometimes the sync has to be - tuned even finer. -</para></listitem> -<listitem> - <para> - <emphasis role="bold">The new timer</emphasis> code uses the RTC (RealTime - Clock) for this task, because it has precise 1ms timers. - The <option>-rtc</option> option enables it, - but a properly set up kernel is required. - If you are running kernel 2.4.19pre8 or later you can adjust the maximum RTC - frequency for normal users through the <systemitem class="systemname">/proc - </systemitem> file system. Use one of the following two commands to - enable RTC for normal users: - <screen>echo 1024 > /proc/sys/dev/rtc/max-user-freq</screen> - <screen>sysctl dev/rtc/max-user-freq=1024</screen> - You can make this setting permanent by adding the latter to - <filename>/etc/sysctl.conf</filename>. - </para> - <para> - You can see the new timer's efficiency in the status line. - The power management functions of some notebook BIOSes with speedstep CPUs - interact badly with RTC. Audio and video may get out of sync. Plugging the - external power connector in before you power up your notebook seems to help. - In some hardware combinations (confirmed during usage of non-DMA DVD drive - on an ALi1541 board) usage of the RTC timer causes skippy playback. It's - recommended to use the third method in these cases. - </para> -</listitem> -<listitem><para> - <emphasis role="bold">The third timer code</emphasis> is turned on with the - <option>-softsleep</option> option. It has the efficiency of the RTC, but it - doesn't use RTC. On the other hand, it requires more CPU. -</para></listitem> -</itemizedlist> +OUTDATED CONTENT REMOVED </para> </sect1> diff --git a/DOCS/xml/en/mencoder.xml b/DOCS/xml/en/mencoder.xml index a91c422740..344e59c5f1 100644 --- a/DOCS/xml/en/mencoder.xml +++ b/DOCS/xml/en/mencoder.xml @@ -4,776 +4,7 @@ <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>. +OUTDATED CONTENT REMOVED </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> -<row> - <entry>mkv</entry> - <entry>Matroska open audio/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 -targeted 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> -or on Windows into <filename>NUL</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 -oac lavc \ - -ovc lavc -lavcopts aglobal=1:vglobal=1:vcodec=mpeg4:acodec=libfaac \ - -of lavf -lavfopts format=psp \ - <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 -lavcopts 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 -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 emerges. The 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 -<systemitem class="library">libavcodec</systemitem>'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> diff --git a/DOCS/xml/en/ports.xml b/DOCS/xml/en/ports.xml index e80965554f..dc66de8da7 100644 --- a/DOCS/xml/en/ports.xml +++ b/DOCS/xml/en/ports.xml @@ -4,838 +4,7 @@ <title>Ports</title> <para> -Binary packages of <application>MPlayer</application> are available from several -sources. We have a list of places to get -<ulink url="http://www.mplayerhq.hu/design7/projects.html#unofficial_packages">unofficial packages</ulink> -for various systems on our homepage. -However, <emphasis role="bold">none of these packages are supported</emphasis>. -Report problems to the authors, not to us. +OUTDATED CONTENT REMOVED </para> -<sect1 id="linux"> -<title>Linux</title> - -<!-- ********** --> - -<sect2 id="debian"> -<title>Debian packaging</title> - -<para> -To build a Debian package, run the following command in the -<application>MPlayer</application> source directory: - -<screen>fakeroot debian/rules binary</screen> - -If you want to pass custom options to configure, you can set up the -<envar>DEB_BUILD_OPTIONS</envar> environment variable. For instance, -if you want GUI and OSD menu support you would use: - -<screen>DEB_BUILD_OPTIONS="--enable-gui --enable-menu" fakeroot debian/rules binary</screen> - -You can also pass some variables to the Makefile. For example, if you want -to compile with gcc 3.4 even if it's not the default compiler: - -<screen>CC=gcc-3.4 DEB_BUILD_OPTIONS="--enable-gui" fakeroot debian/rules binary</screen> - -To clean up the source tree run the following command: - -<screen>fakeroot debian/rules clean</screen> - -As root you can then install the <filename>.deb</filename> package as usual: - -<screen>dpkg -i ../mplayer_<replaceable>version</replaceable>.deb</screen> -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="rpm"> -<title>RPM packaging</title> - -<para> -To build an RPM package, run the following command in the -<application>MPlayer</application> source directory: - -<screen>FIXME: insert proper commands here</screen> -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="arm_linux"> -<title>ARM Linux</title> - -<para> -<application>MPlayer</application> works on Linux PDAs with ARM CPU e.g. Sharp -Zaurus, Compaq Ipaq. The easiest way to obtain -<application>MPlayer</application> is to get it from one of the -<ulink url="http://www.openzaurus.org">OpenZaurus</ulink> package feeds. -If you want to compile it yourself, you should look at the -<ulink url="http://openzaurus.bkbits.net:8080/buildroot/src/packages/mplayer?nav=index.html|src/.|src/packages">mplayer</ulink> -and the -<ulink url="http://openzaurus.bkbits.net:8080/buildroot/src/packages/libavcodec?nav=index.html|src/.|src/packages">libavcodec</ulink> -directory in the OpenZaurus distribution buildroot. These always have the latest -Makefile and patches used for building a SVN <application>MPlayer</application>. -If you need a GUI frontend, you can use xmms-embedded. -</para> -</sect2> -</sect1> - - -<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - - -<sect1 id="bsd"> -<title>*BSD</title> - -<para> -<application>MPlayer</application> runs on all known BSD flavors. -There are ports/pkgsrc/fink/etc versions of <application>MPlayer</application> -available that are probably easier to use than our raw sources. -</para> - -<para> -If <application>MPlayer</application> complains about not finding -<filename>/dev/cdrom</filename> or <filename>/dev/dvd</filename>, -create an appropriate symbolic link: -<screen>ln -s /dev/<replaceable>your_cdrom_device</replaceable> /dev/cdrom</screen> -</para> - -<para> -To use Win32 DLLs with <application>MPlayer</application> you will need to -re-compile the kernel with "<envar>option USER_LDT</envar>" -(unless you run FreeBSD-CURRENT, -where this is the default). -</para> - -<!-- ********** --> - -<sect2 id="freebsd"> -<title>FreeBSD</title> - -<para> -If your CPU has SSE, recompile your kernel with -"<envar>options CPU_ENABLE_SSE</envar>" (FreeBSD-STABLE or kernel -patches required). -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="openbsd"> -<title>OpenBSD</title> - -<para> -Due to limitations in different versions of gas (relocation vs MMX), you -will need to compile in two steps: First make sure that the non-native as -is first in your <envar>$PATH</envar> and do a <command>gmake -k</command>, then -make sure that the native version is used and do <command>gmake</command>. -</para> - -<para> -As of OpenBSD 3.4 the hack above is no longer needed. -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="darwin"> -<title>Darwin</title> - -<para> -See the <link linkend="macos">Mac OS</link> section. -</para> -</sect2> -</sect1> - - -<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - - -<sect1 id="unix"> -<title>Commercial Unix</title> - -<para> -<application>MPlayer</application> has been ported to a number of commercial -Unix variants. Since the development environments on these systems tend to be -different from those found on free Unixes, you may have to make some manual -adjustments to make the build work. -</para> - -<!-- ********** --> - -<sect2 id="solaris"> -<title>Solaris</title> - -<para> -Solaris still has broken, POSIX-incompatible system tools and shell in default -locations. Until a bold step out of the computing stone age is made, you will -have to add <filename>/usr/xpg4/bin</filename> to your -<systemitem>PATH</systemitem>. -</para> - -<para> -<application>MPlayer</application> should work on Solaris 2.6 or newer. -Use the SUN audio driver with the <option>-ao sun</option> option for sound. -</para> - -<para> -On <emphasis role="bold">UltraSPARCs</emphasis>, -<application>MPlayer</application> takes advantage of their -<emphasis role="bold">VIS</emphasis> extensions -(equivalent to MMX), currently only in -<systemitem class="library">libmpeg2</systemitem>, -<systemitem class="library">libvo</systemitem> -and <systemitem class="library">libavcodec</systemitem>, but not in -<systemitem class="library">mp3lib</systemitem>. You can watch a VOB file -on a 400MHz CPU. You'll need -<ulink url="http://www.sun.com/sparc/vis/mediaLib.html"><systemitem class="library">mLib</systemitem></ulink> -installed. -</para> - -<para><emphasis role="bold">Caveat:</emphasis></para> -<itemizedlist> -<listitem><para> - <emphasis role="bold">mediaLib</emphasis> is - <emphasis role="bold">currently disabled</emphasis> by default in - <application>MPlayer</application> because of brokenness. SPARC users - who build MPlayer with mediaLib support have reported a thick, - green-tint on video encoded and decoded with libavcodec. You may enable - it if you wish with: - <screen>./configure --enable-mlib</screen> - You do this at your own risk. x86 users should - <emphasis role="bold">never</emphasis> use mediaLib, as this will - result in very poor MPlayer performance. -</para></listitem> -</itemizedlist> - -<para> -On Solaris SPARC, you need the GNU C/C++ Compiler; it does not matter if -GNU C/C++ compiler is configured with or without the GNU assembler. -</para> - -<para> -On Solaris x86, you need the GNU assembler and the GNU C/C++ compiler, -configured to use the GNU assembler! The <application>MPlayer</application> -code on the x86 platform makes heavy use of MMX, SSE and 3DNOW! instructions -that cannot be compiled using Sun's assembler -<filename>/usr/ccs/bin/as</filename>. -</para> - -<para> -The <filename>configure</filename> script tries to find out, which assembler -program is used by your "gcc" command (in case the autodetection -fails, use the -<option>--as=<replaceable>/wherever/you/have/installed/gnu-as</replaceable></option> -option to tell the <filename>configure</filename> script where it can find GNU -"as" on your system). -</para> - -<para>Solutions to common problems:</para> -<itemizedlist> -<listitem><para> - Error message from <filename>configure</filename> on a Solaris x86 system - using GCC without GNU assembler: - <screen> -% configure -... -Checking assembler (/usr/ccs/bin/as) ... , failed -Please upgrade(downgrade) binutils to 2.10.1...<!-- - --></screen> - (Solution: Install and use a gcc configured with - <option>--with-as=gas</option>) -</para> - -<para> -Typical error you get when building with a GNU C compiler that does not -use GNU as: -<screen> -% gmake -... -gcc -c -Iloader -Ilibvo -O4 -march=i686 -mcpu=i686 -pipe -ffast-math - -fomit-frame-pointer -I/usr/local/include -o mplayer.o mplayer.c -Assembler: mplayer.c -"(stdin)", line 3567 : Illegal mnemonic -"(stdin)", line 3567 : Syntax error -... more "Illegal mnemonic" and "Syntax error" errors ... -</screen> -</para> -</listitem> - -<listitem><para> - <application>MPlayer</application> may segfault when decoding - and encoding video that uses the win32codecs: - <screen> -... -Trying to force audio codec driver family acm... -Opening audio decoder: [acm] Win32/ACM decoders -sysi86(SI86DSCR): Invalid argument -Couldn't install fs segment, expect segfault - - -MPlayer interrupted by signal 11 in module: init_audio_codec -...<!-- - --></screen> - This is because of a change to sysi86() in Solaris 10 and pre-Solaris - Nevada b31 releases. This has been fixed in Solaris Nevada b32; - however, Sun has yet to backport the fix to Solaris 10. The MPlayer - Project has made Sun aware of the problem and a patch is currently in - progress for Solaris 10. More information about this bug can be found - at: - <ulink url="http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6308413"/>. -</para></listitem> - -<listitem><para> -Due to bugs in Solaris 8, -you may not be able to play DVD discs larger than 4 GB: -</para> - -<itemizedlist> -<listitem><para> - The sd(7D) driver on Solaris 8 x86 has a bug when accessing a disk block >4GB - on a device using a logical blocksize != DEV_BSIZE - (i.e. CD-ROM and DVD media). - Due to a 32Bit int overflow, a disk address modulo 4GB is accessed - (<ulink url="http://groups.yahoo.com/group/solarisonintel/message/22516"/>). - This problem does not exist in the SPARC version of Solaris 8. -</para></listitem> - -<listitem><para> - A similar bug is present in the hsfs(7FS) file system code (AKA ISO9660), - hsfs may not not support partitions/disks larger than 4GB, all data is - accessed modulo 4GB - (<ulink url="http://groups.yahoo.com/group/solarisonintel/message/22592"/>). - The hsfs problem can be fixed by installing - patch 109764-04 (SPARC) / 109765-04 (x86). -</para></listitem> -</itemizedlist> -</listitem> -</itemizedlist> -</sect2> - -<!-- ********** --> - -<sect2 id="hp-ux"> -<title>HP-UX</title> - -<para> -Joe Page hosts a detailed HP-UX <application>MPlayer</application> -<ulink url="http://users.rcn.com/joepage/mplayer_on_hpux11.htm">HOWTO</ulink> -by Martin Gansser on his homepage. With these instructions the build should -work out of the box. The following information is taken from this HOWTO. -</para> - -<para> -You need GCC 3.4.0 or later and SDL 1.2.7 or later. -HP cc will not produce a working program, prior GCC versions are buggy. -For OpenGL functionality you need to install Mesa and the gl and gl2 video -output drivers should work, speed may be very bad, depending on the CPU speed, -though. A good replacement for the rather poor native HP-UX sound system is -GNU esound. -</para> - -<para> -Create the DVD device -scan the SCSI bus with: - -<screen> -# ioscan -fn - -Class I H/W Path Driver S/W State H/W Type Description -... -ext_bus 1 8/16/5 c720 CLAIMED INTERFACE Built-in SCSI -target 3 8/16/5.2 tgt CLAIMED DEVICE -disk 4 8/16/5.<emphasis role="bold">2</emphasis>.<emphasis role="bold">0</emphasis> sdisk CLAIMED DEVICE <emphasis role="bold">PIONEER DVD-ROM DVD-305</emphasis> - /dev/dsk/c1t2d0 <emphasis role="bold">/dev/rdsk/c1t2d0</emphasis> -target 4 8/16/5.7 tgt CLAIMED DEVICE -ctl <emphasis role="bold">1</emphasis> 8/16/5.7.0 sctl CLAIMED DEVICE Initiator - /dev/rscsi/c1t7d0 /dev/rscsi/c1t7l0 /dev/scsi/c1t7l0 -... -</screen> - -The screen output shows a Pioneer DVD-ROM at SCSI address 2. -The card instance for hardware path 8/16 is 1. -</para> - -<para> -Create a link from the raw device to the DVD device. -<screen> -ln -s /dev/rdsk/c<replaceable><SCSI bus instance></replaceable>t<replaceable><SCSI target ID></replaceable>d<replaceable><LUN></replaceable> /dev/<replaceable><device></replaceable> -</screen> -Example: -<screen>ln -s /dev/rdsk/c1t2d0 /dev/dvd</screen> -</para> - -<para> -Below are solutions for some common problems: - -<itemizedlist> -<listitem> - <para> - Crash at Start with the following error message: - <screen> -/usr/lib/dld.sl: Unresolved symbol: finite (code) from /usr/local/lib/gcc-lib/hppa2.0n-hp-hpux11.00/3.2/../../../libGL.sl<!-- - --></screen> - </para> - <para> - This means that the function <systemitem>.finite().</systemitem> is not - available in the standard HP-UX math library. - Instead there is <systemitem>.isfinite().</systemitem>. - Solution: Use the latest Mesa depot file. - </para> -</listitem> - -<listitem> - <para> - Crash at playback with the following error message: - <screen> -/usr/lib/dld.sl: Unresolved symbol: sem_init (code) from /usr/local/lib/libSDL-1.2.sl.0<!-- - --></screen> - </para> - <para> - Solution: Use the extralibdir option of configure - <option>--extra-ldflags="/usr/lib -lrt"</option> - </para> -</listitem> - -<listitem> - <para> - MPlayer segfaults with a message like this: - <screen> -Pid 10166 received a SIGSEGV for stack growth failure. -Possible causes: insufficient memory or swap space, or stack size exceeded maxssiz. -Segmentation fault<!-- - --></screen> - </para> - <para> - Solution: - The HP-UX kernel has a default stack size of 8MB(?) per process.(11.0 and - newer 10.20 patches let you increase <systemitem>maxssiz</systemitem> up to - 350MB for 32-bit programs). You need to extend - <systemitem>maxssiz</systemitem> and recompile the kernel (and reboot). - You can use SAM to do this. - (While at it, check out the <systemitem>maxdsiz</systemitem> parameter for - the maximum amount of data a program can use. - It depends on your applications, if the default of 64MB is enough or not.) - </para> -</listitem> -</itemizedlist> -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="aix"> -<title>AIX</title> - -<para> -<application>MPlayer</application> builds successfully on AIX 5.1, -5.2, and 5.3, using GCC 3.3 or greater. Building -<application>MPlayer</application> on AIX 4.3.3 and below is -untested. It is highly recommended that you build -<application>MPlayer</application> using GCC 3.4 or greater, -or if you are building on POWER5, GCC 4.0 is required. -</para> - -<para> -CPU detection is still a work in progress. -The following architectures have been tested: -</para> - -<itemizedlist> - <listitem><para>604e</para></listitem> - <listitem><para>POWER3</para></listitem> - <listitem><para>POWER4</para></listitem> -</itemizedlist> - -<para> -The following architectures are untested, but should still work: -<itemizedlist> - <listitem><para>POWER</para></listitem> - <listitem><para>POWER2</para></listitem> - <listitem><para>POWER5</para></listitem> -</itemizedlist> -</para> - -<para> -Sound via the Ultimedia Services is not supported, as Ultimedia was -dropped in AIX 5.1; therefore, the only option is to use the AIX Open -Sound System (OSS) drivers from 4Front Technologies at -<ulink url="http://www.opensound.com/aix.html">http://www.opensound.com/aix.html</ulink>. -4Front Technologies freely provides OSS drivers for AIX 5.1 for -non-commercial use; however, there are currently no sound output -drivers for AIX 5.2 or 5.3. This means <emphasis role="bold">AIX 5.2 -and 5.3 are not capable of MPlayer audio output, presently.</emphasis> -</para> - -<para>Solutions to common problems:</para> - -<itemizedlist> -<listitem> -<para> - If you encounter this error message from <filename>./configure</filename>: - <screen> -$ ./configure -... -Checking for iconv program ... no -No working iconv program found, use ---charset=US-ASCII to continue anyway. -Messages in the GTK-2 interface will be broken then.<!-- - --></screen> - This is because AIX uses non-standard character set names; therefore, - converting MPlayer output to another character set is currently not - supported. The solution is to use: - <screen>$ ./configure --charset=noconv</screen> - </para> -</listitem> -</itemizedlist> -</sect2> - -<!-- ********** --> - -<sect2 id="qnx"> -<title>QNX</title> - -<para> -You'll need to download and install SDL for QNX. Then run -<application>MPlayer</application> with <option>-vo sdl:driver=photon</option> -and <option>-ao sdl:nto</option> options, it should be fast. -</para> - -<para> -The <option>-vo x11</option> output will be even slower than on Linux, -since QNX has only X <emphasis>emulation</emphasis> which is very slow. -</para> -</sect2> -</sect1> - - -<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - - -<sect1 id="windows"> -<title>Windows</title> - -<para> -Yes, <application>MPlayer</application> runs on Windows under -<ulink url="http://www.cygwin.com/"><application>Cygwin</application></ulink> -and -<ulink url="http://www.mingw.org/"><application>MinGW</application></ulink>. -It does not have an official GUI yet, but the command line version -is completely functional. You should check out the -<ulink url="http://lists.mplayerhq.hu/mailman/listinfo/mplayer-cygwin/">MPlayer-cygwin</ulink> -mailing list for help and latest information. -Official Windows binaries can be found on the -<ulink url="http://www.mplayerhq.hu/design7/dload.html">download page</ulink>. -Installer packages and simple GUI frontends are available from external -sources, we have collected then in the Windows section of our -<ulink url="http://www.mplayerhq.hu/design7/projects.html#windows">projects page</ulink>. -</para> - -<para> -If you wish to avoid using the command line, a simple trick is -to put a shortcut on your desktop that contains something like the -following in the execute section: -<screen><replaceable>c:\path\to\</replaceable>mplayer.exe %1</screen> -This will make <application>MPlayer</application> play any movie that is -dropped on the shortcut. Add <option>-fs</option> for fullscreen mode. -</para> - -<para> -Best results are achieved with the native DirectX video output driver -(<option>-vo directx</option>). Alternatives are OpenGL and SDL, but OpenGL -performance varies greatly between systems and SDL is known to -distort video or crash on some systems. If the image is -distorted, try turning off hardware acceleration with -<option>-vo directx:noaccel</option>. Download -<ulink url="http://www.mplayerhq.hu/MPlayer/contrib/win32/dx7headers.tgz">DirectX 7 header files</ulink> -to compile the DirectX video output driver. Furthermore you need to have -DirectX 7 or later installed for the DirectX video output driver to work. -</para> - -<para> -<link linkend="vidix">VIDIX</link> now works under Windows as -<option>-vo winvidix</option>, although it is still experimental -and needs a bit of manual setup. Download -<ulink url="http://www.mplayerhq.hu/MPlayer/releases/win32/dhahelperwin/dhahelper.sys">dhahelper.sys</ulink> or -<ulink url="http://www.mplayerhq.hu/MPlayer/releases/win32/dhahelperwin/withmtrr/dhahelper.sys">dhahelper.sys (with MTRR support)</ulink> -and copy it to the <filename class="directory">vidix/dhahelperwin</filename> -directory in your <application>MPlayer</application> source tree. -Open a console and type -<screen>make install-dhahelperwin</screen> -as Administrator. After that you will have to reboot. -</para> - -<para> -For best results <application>MPlayer</application> should use a -colorspace that your video card supports in hardware. Unfortunately many -Windows graphics drivers wrongly report some colorspaces as supported in -hardware. To find out which, try -<screen> -mplayer -benchmark -nosound -frames 100 -vf format=<replaceable>colorspace</replaceable> <replaceable>movie</replaceable> -</screen> -where <replaceable>colorspace</replaceable> can be any colorspace -printed by the <option>-vf format=fmt=help</option> option. If you -find a colorspace your card handles particularly bad -<option>-vf noformat=<replaceable>colorspace</replaceable></option> -will keep it from being used. Add this to your config file to permanently -keep it from being used. -</para> - -<para>There are special codec packages for Windows available on our - <ulink url="http://www.mplayerhq.hu/design7/dload.html">download page</ulink> - to allow playing formats for which there is no native support yet. - Put the codecs somewhere in your path or pass - <option>--codecsdir=<replaceable>c:/path/to/your/codecs</replaceable></option> - (alternatively - <option>--codecsdir=<replaceable>/path/to/your/codecs</replaceable></option> - only on <application>Cygwin</application>) to <filename>configure</filename>. - We have had some reports that Real DLLs need to be writable by the user - running <application>MPlayer</application>, but only on some systems (NT4). - Try making them writable if you have problems. - </para> - -<para> -You can play VCDs by playing the <filename>.DAT</filename> or -<filename>.MPG</filename> files that Windows exposes on VCDs. It works like -this (adjust for the drive letter of your CD-ROM): -<screen>mplayer <replaceable>d:/mpegav/avseq01.dat</replaceable></screen> -Alternatively, you can play a VCD track directly by using: -<screen>mplayer vcd://<replaceable><track></replaceable> -cdrom-device <replaceable>d:</replaceable> -</screen> -DVDs also work, adjust <option>-dvd-device</option> for the drive letter -of your DVD-ROM: -<screen> -mplayer dvd://<replaceable><title></replaceable> -dvd-device <replaceable>d:</replaceable> -</screen> -The <application>Cygwin</application>/<application>MinGW</application> -console is rather slow. Redirecting output or using the -<option>-quiet</option> option has been reported to improve performance on -some systems. Direct rendering (<option>-dr</option>) may also help. -If playback is jerky, try -<option>-autosync 100</option>. If some of these options help you, you -may want to put them in your config file. -</para> - -<note> -<para> -If you have a Pentium 4 and are experiencing a crash using the -RealPlayer codecs, you may need to disable hyperthreading support. -</para> -</note> - -<!-- ********** --> - -<sect2 id="cygwin"> -<title><application>Cygwin</application></title> - -<para> -You need to run <application>Cygwin</application> 1.5.0 or later in -order to compile <application>MPlayer</application>. -</para> - -<para> -DirectX header files need to be extracted to -<filename class="directory">/usr/include/</filename> or -<filename class="directory">/usr/local/include/</filename>. -</para> - -<para> -Instructions and files for making SDL run under -<application>Cygwin</application> can be found on the -<ulink url="http://www.libsdl.org/extras/win32/cygwin/">libsdl site</ulink>. -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="mingw"> -<title><application>MinGW</application></title> - -<para> -You need <application>MinGW</application> 3.1.0 or later and MSYS 1.0.9 or -later. Tell the MSYS postinstall that <application>MinGW</application> is -installed. -</para> - -<para> -Extract DirectX header files to -<filename class="directory">/mingw/include/</filename>. -</para> - -<para> -MOV compressed header support requires -<ulink url="http://www.gzip.org/zlib/">zlib</ulink>, -which <application>MinGW</application> does not provide by default. -Configure it with <option>--prefix=/mingw</option> and install -it before compiling <application>MPlayer</application>. -</para> - -<para> -Complete instructions for building <application>MPlayer</application> -and necessary libraries can be found in the -<ulink url="http://www.mplayerhq.hu/MPlayer/contrib/win32/MPlayer-MinGW-Howto.txt">MPlayer MinGW HOWTO</ulink>. -</para> -</sect2> -</sect1> - - -<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - - -<sect1 id="macos"> -<title>Mac OS</title> - -<para> -<application>MPlayer</application> does not work on Mac OS versions before -10, but should compile out-of-the-box on Mac OS X 10.2 and up. -The preferred compiler is the Apple version of -GCC 3.x or later. -You can get the basic compilation environment by installing Apple's -<ulink url="http://developer.apple.com/tools/download/">Xcode</ulink>. -If you have Mac OS X 10.3.9 or later and QuickTime 7 -you can use the <option>corevideo</option> video output driver. -</para> - -<para> -Unfortunately, this basic environment will not allow you to take advantage -of all the nice features of <application>MPlayer</application>. -For instance, in order to have OSD support compiled in, you will -need to have <systemitem class="library">fontconfig</systemitem> -and <systemitem class="library">freetype</systemitem> libraries -installed on your machine. Contrary to other Unixes such as most -Linux and BSD variants, OS X does not have a package system -that comes with the system. -</para> - -<para> -There are at least two to choose from: -<ulink url="http://fink.sourceforge.net/">Fink</ulink> and -<ulink url="http://www.macports.org/">MacPorts</ulink>. -Both of them provide about the same service (i.e. a lot of packages to -choose from, dependency resolution, the ability to simply add/update/remove -packages, etc...). -Fink offers both precompiled binary packages or building everything from -source, whereas MacPorts only offers building from source. -The author of this guide chose MacPorts for the simple fact that its basic -setup was more lightweight. -Later examples will be based on MacPorts. -</para> - -<para> -For instance, to compile <application>MPlayer</application> with OSD support: -<screen>sudo port install pkg-config</screen> -This will install <application>pkg-config</application>, which is a system for -managing library compile/link flags. -<application>MPlayer</application>'s <systemitem>configure</systemitem> script -uses it to properly detect libraries. -Then you can install <application>fontconfig</application> in a -similar way: -<screen>sudo port install fontconfig</screen> -Then you can proceed with launching <application>MPlayer</application>'s -<systemitem>configure</systemitem> script (note the -<systemitem>PKG_CONFIG_PATH</systemitem> and <systemitem>PATH</systemitem> -environment variables so that <systemitem>configure</systemitem> finds the -libraries installed with MacPorts): -<screen> -PKG_CONFIG_PATH=/opt/local/lib/pkgconfig/ PATH=$PATH:/opt/local/bin/ ./configure -</screen> -</para> - -<!-- ********** --> - -<sect2 id="osx_gui"> -<title>MPlayer OS X GUI</title> - -<para> -You can get a native GUI for <application>MPlayer</application> together with -precompiled <application>MPlayer</application> binaries for Mac OS X from the -<ulink url="http://mplayerosx.sf.net/">MPlayerOSX</ulink> project, but be -warned: that project is not active anymore. -</para> - -<para> -Fortunately, <application>MPlayerOSX</application> has been taken over -by a member of the <application>MPlayer</application> team. -Preview releases are available from our -<ulink url="http://mplayerhq.hu/dload.html">download page</ulink> -and an official release should arrive soon. -</para> - -<para> -In order to build <application>MPlayerOSX</application> from source -yourself, you need the <systemitem>mplayerosx</systemitem>, the -<systemitem>main</systemitem> and a copy of the -<systemitem>main</systemitem> SVN module named -<systemitem>main_noaltivec</systemitem>. -<systemitem>mplayerosx</systemitem> is the GUI frontend, -<systemitem>main</systemitem> is MPlayer and -<systemitem>main_noaltivec</systemitem> is MPlayer built without AltiVec -support. -</para> - -<para> -To check out SVN modules use: -<screen> -svn checkout svn://svn.mplayerhq.hu/mplayerosx/trunk/ mplayerosx -svn checkout svn://svn.mplayerhq.hu/mplayer/trunk/ main -</screen> -</para> - -<para> -In order to build <application>MPlayerOSX</application> you will need to -set up something like this: -<screen> -MPlayer_source_directory - | - |--->main (MPlayer Subversion source) - | - |--->main_noaltivec (MPlayer Subversion source configured with --disable-altivec) - | - \--->mplayerosx (MPlayer OS X Subversion source) -</screen> -You first need to build main and main_noaltivec. -</para> - -<para> -To begin with, in order to ensure maximum backwards compatibility, set an -environment variable: -<screen>export MACOSX_DEPLOYMENT_TARGET=10.3</screen> -</para> - -<para> -Then, configure: -</para> - -<para> -If you configure for a G4 or later CPU with AltiVec support, do as follows: -<screen> -./configure --disable-gl --disable-x11 -</screen> -If you configure for a G3-powered machine without AltiVec, use: -<screen> -./configure --disable-gl --disable-x11 --disable-altivec -</screen> -You may need to edit <filename>config.mak</filename> and change -<systemitem>-mcpu</systemitem> and <systemitem>-mtune</systemitem> -from <systemitem>74XX</systemitem> to <systemitem>G3</systemitem>. -</para> - -<para> -Continue with -<screen>make</screen> -then go to the mplayerosx directory and type -<screen>make dist</screen> -This will create a compressed <systemitem>.dmg</systemitem> archive -with the ready to use binary. -</para> - -<para> -You can also use the <application>Xcode</application> 2.1 project; -the old project for <application>Xcode</application> 1.x does -not work anymore. -</para> -</sect2> -</sect1> - </chapter> diff --git a/DOCS/xml/en/usage.xml b/DOCS/xml/en/usage.xml index 1ac732c832..aa59f05004 100644 --- a/DOCS/xml/en/usage.xml +++ b/DOCS/xml/en/usage.xml @@ -110,124 +110,7 @@ mplayer -abs 65536 -delay -0.4 -nobps <replaceable>~/movies/test.avi</replaceabl <title>Subtitles and OSD</title> <para> -<application>MPlayer</application> can display subtitles along with movie files. -Currently the following formats are supported: -<itemizedlist> - <listitem><para>VOBsub</para></listitem> - <listitem><para>OGM</para></listitem> - <listitem><para>CC (closed caption)</para></listitem> - <listitem><para>MicroDVD</para></listitem> - <listitem><para>SubRip</para></listitem> - <listitem><para>SubViewer</para></listitem> - <listitem><para>Sami</para></listitem> - <listitem><para>VPlayer</para></listitem> - <listitem><para>RT</para></listitem> - <listitem><para>SSA</para></listitem> - <listitem><para>PJS (Phoenix Japanimation Society)</para></listitem> - <listitem><para>MPsub</para></listitem> - <listitem><para>AQTitle</para></listitem> - <listitem><para> - <ulink url="http://unicorn.us.com/jacosub/">JACOsub</ulink> - </para></listitem> -</itemizedlist> -</para> - -<para> -<application>MPlayer</application> can dump the previously listed subtitle -formats (<emphasis role="bold">except the three first</emphasis>) into the -following destination formats, with the given options: -<itemizedlist> - <listitem><para>MPsub: <option>-dumpmpsub</option></para></listitem> - <listitem><para>SubRip: <option>-dumpsrtsub</option></para></listitem> - <listitem><para>MicroDVD: <option>-dumpmicrodvdsub</option></para></listitem> - <listitem><para>JACOsub: <option>-dumpjacosub</option></para></listitem> - <listitem><para>Sami: <option>-dumpsami</option></para></listitem> -</itemizedlist> -</para> - -<para> -<application>MEncoder</application> can dump DVD subtitles into -<link linkend="menc-feat-extractsub">VOBsub</link> format. -</para> - -<para> -The command line options differ slightly for the different formats: -</para> - -<formalpara> -<title>VOBsub subtitles</title> -<para> -VOBsub subtitles consist of a big (some megabytes) <filename>.SUB</filename> -file, and optional <filename>.IDX</filename> and/or <filename>.IFO</filename> -files. If you have files like -<filename><replaceable>sample.sub</replaceable></filename>, -<filename><replaceable>sample.ifo</replaceable></filename> (optional), -<filename><replaceable>sample.idx</replaceable></filename> - you have to pass -<application>MPlayer</application> the <option>-vobsub sample -[-vobsubid <replaceable>id</replaceable>]</option> options -(full path optional). The <option>-vobsubid</option> option is like -<option>-sid</option> for DVDs, you can choose between subtitle tracks -(languages) with it. In case that <option>-vobsubid</option> is omitted, -<application>MPlayer</application> will try to use the languages given by the -<option>-slang</option> option and fall back to the -<systemitem>langidx</systemitem> in the <filename>.IDX</filename> file to set -the subtitle language. If it fails, there will be no subtitles. -</para> -</formalpara> - -<formalpara> -<title>Other subtitles</title> -<para> -The other formats consist of a single text file containing timing, -placement and text information. Usage: If you have a file like -<filename><replaceable>sample.txt</replaceable></filename>, -you have to pass the option <option>-sub -<replaceable>sample.txt</replaceable></option> (full path optional). -</para> -</formalpara> - -<variablelist> -<title>Adjusting subtitle timing and placement:</title> -<varlistentry> - <term><option>-subdelay <replaceable>sec</replaceable></option></term> - <listitem><para> - Delays subtitles by <option><replaceable>sec</replaceable></option> seconds. - Can be negative. The value is added to movie's time position counter. - </para></listitem> -</varlistentry> -<varlistentry> - <term><option>-subfps <replaceable>RATE</replaceable></option></term> - <listitem><para> - Specify frame/sec rate of subtitle file (float number). - </para></listitem> -</varlistentry> -<varlistentry> - <term><option>-subpos <replaceable>0-100</replaceable></option></term> - <listitem><para> - Specify the position of subtitles. - </para></listitem> -</varlistentry> -</variablelist> - -<para> -If you experience a growing delay between the movie and the subtitles when -using a MicroDVD subtitle file, most likely the framerate of the movie and -the subtitle file are different. Please note that the MicroDVD subtitle -format uses absolute frame numbers for its timing, but there is no fps -information in it, and therefore the <option>-subfps</option> option should -be used with this format. If you like to solve this problem permanently, -you have to manually convert the subtitle file framerate. -<application>MPlayer</application> can do this -conversion for you: - -<screen> -mplayer -dumpmicrodvdsub -fps <replaceable>subtitles_fps</replaceable> -subfps <replaceable>avi_fps</replaceable> \ - -sub <replaceable>subtitle_filename</replaceable> <replaceable>dummy.avi</replaceable> -</screen> -</para> - -<para> -About DVD subtitles, read the <link linkend="dvd">DVD</link> section. +OUTDATED CONTENT REMOVED </para> </sect1> diff --git a/DOCS/xml/en/video.xml b/DOCS/xml/en/video.xml index ffeef6d6c6..6a39be4169 100644 --- a/DOCS/xml/en/video.xml +++ b/DOCS/xml/en/video.xml @@ -3,2307 +3,8 @@ <chapter id="video"> <title>Video output devices</title> -<sect1 id="xv"> -<title>Xv</title> - -<para> -Under XFree86 4.0.2 or newer, you can use your card's hardware YUV routines -using the XVideo extension. This is what the option -<option>-vo xv</option> uses. Also, this driver supports adjusting -brightness/contrast/hue/etc. (unless you use the old, slow DirectShow DivX -codec, which supports it everywhere), see the man page. -</para> - -<para> -In order to make this work, be sure to check the following: - -<orderedlist> -<listitem><para> - You have to use XFree86 4.0.2 or newer (former versions don't have XVideo) -</para></listitem> -<listitem><para> - Your card actually supports hardware acceleration (modern cards do) -</para></listitem> -<listitem><para> - X loads the XVideo extension, it's something like this: - <programlisting>(II) Loading extension XVideo</programlisting> - in <filename>/var/log/XFree86.0.log</filename> - <note><para> - This loads only the XFree86's extension. In a good install, this is - always loaded, and doesn't mean that the - <emphasis role="bold">card's</emphasis> XVideo support is loaded! - </para></note> -</para></listitem> -<listitem><para> - Your card has Xv support under Linux. To check, try - <command>xvinfo</command>, it is the part of the XFree86 distribution. It - should display a long text, similar to this: - <screen> -X-Video Extension version 2.2 -screen #0 - Adaptor #0: "Savage Streams Engine" - number of ports: 1 - port base: 43 - operations supported: PutImage - supported visuals: - depth 16, visualID 0x22 - depth 16, visualID 0x23 - number of attributes: 5 -(...) - Number of image formats: 7 - id: 0x32595559 (YUY2) - guid: 59555932-0000-0010-8000-00aa00389b71 - bits per pixel: 16 - number of planes: 1 - type: YUV (packed) - id: 0x32315659 (YV12) - guid: 59563132-0000-0010-8000-00aa00389b71 - bits per pixel: 12 - number of planes: 3 - type: YUV (planar) -(...etc...)<!-- ---></screen> - It must support YUY2 packed, and YV12 planar pixel formats to be usable - with <application>MPlayer</application>. -</para></listitem> -<listitem><para> - And finally, check if <application>MPlayer</application> was compiled - with 'xv' support. Do a <command>mplayer -vo help | grep xv </command>. - If 'xv' support was built a line similar to this should appear: - <screen> xv X11/Xv</screen> -</para></listitem> -</orderedlist> -</para> -</sect1> - -<!-- ********** --> - -<sect1 id="dga"> -<title>DGA</title> - -<formalpara> -<title>PREAMBLE</title> -<para> -This document tries to explain in some words what DGA is in general and -what the DGA video output driver for <application>MPlayer</application> -can do (and what it can't). -</para> -</formalpara> - -<formalpara> -<title>WHAT IS DGA</title> -<para> -<acronym>DGA</acronym> is short for <emphasis>Direct Graphics -Access</emphasis> and is a means for a program to bypass the X server and -directly modifying the framebuffer memory. Technically spoken this happens -by mapping the framebuffer memory into the memory range of your process. -This is allowed by the kernel only if you have superuser privileges. You -can get these either by logging in as <systemitem -class="username">root</systemitem> or by setting the SUID bit on the -<application>MPlayer</application> executable (<emphasis role="bold">not -recommended</emphasis>). -</para> -</formalpara> -<para> -There are two versions of DGA: DGA1 is used by XFree 3.x.x and DGA2 was -introduced with XFree 4.0.1. -</para> - -<para> -DGA1 provides only direct framebuffer access as described above. For -switching the resolution of the video signal you have to rely on the -XVidMode extension. -</para> - -<para> -DGA2 incorporates the features of XVidMode extension and also allows -switching the depth of the display. So you may, although basically -running a 32 bit depth X server, switch to a depth of 15 bits and vice -versa. -</para> - -<para> -However DGA has some drawbacks. It seems it is somewhat dependent on the -graphics chip you use and on the implementation of the X server's video -driver that controls this chip. So it does not work on every system... -</para> - -<formalpara> -<title>INSTALLING DGA SUPPORT FOR MPLAYER</title> - -<para> -First make sure X loads the DGA extension, see in -<filename>/var/log/XFree86.0.log</filename>: - -<programlisting>(II) Loading extension XFree86-DGA</programlisting> - -See, XFree86 4.0.x or greater is -<emphasis role="bold">highly recommended</emphasis>! -<application>MPlayer</application>'s DGA driver is autodetected by -<filename>./configure</filename>, or you can force it -with <option>--enable-dga</option>. -</para> -</formalpara> - -<para> -If the driver couldn't switch to a smaller resolution, experiment with -options <option>-vm</option> (only with X 3.3.x), <option>-fs</option>, -<option>-bpp</option>, <option>-zoom</option> to find a video mode that -the movie fits in. There is no converter right now :( -</para> - -<para> -Become <systemitem class="username">root</systemitem>. DGA needs root -access to be able to write directly video memory. If you want to run it as -user, then install <application>MPlayer</application> SUID root: - -<screen> -chown root <replaceable>/usr/local/bin/mplayer</replaceable> -chmod 750 <replaceable>/usr/local/bin/mplayer</replaceable> -chmod +s <replaceable>/usr/local/bin/mplayer</replaceable> -</screen> - -Now it works as a simple user, too. -</para> - -<caution> -<title>Security risk</title> -<para> -This is a <emphasis role="bold">big</emphasis> security risk! -<emphasis role="bold">Never</emphasis> do this on a server or on a computer -that can be accessed by other people because they can gain root privileges -through SUID root <application>MPlayer</application>. -</para> -</caution> - -<para> -Now use <option>-vo dga</option> option, and there you go! (hope so:) You -should also try if the <option>-vo sdl:driver=dga</option> option works for you! -It's much faster! -</para> - - -<formalpara id="dga-modelines"> -<title>RESOLUTION SWITCHING</title> - -<para> -The DGA driver allows for switching the resolution of the output signal. -This avoids the need for doing (slow) software scaling and at the same time -provides a fullscreen image. Ideally it would switch to the exact -resolution (except for honoring aspect ratio) of the video data, but the X -server only allows switching to resolutions predefined in -<filename>/etc/X11/XF86Config</filename> -(<filename>/etc/X11/XF86Config-4</filename> for XFree 4.X.X respectively). -Those are defined by so-called modelines and depend on -the capabilities of your video hardware. The X server scans this config -file on startup and disables the modelines not suitable for your hardware. -You can find out which modes survive with the X11 log file. It can be found -at: <filename>/var/log/XFree86.0.log</filename>. -</para> -</formalpara> - -<para> -These entries are known to work fine with a Riva128 chip, using the nv.o X -server driver module. -</para> - -<para><programlisting> -Section "Modes" - Identifier "Modes[0]" - Modeline "800x600" 40 800 840 968 1056 600 601 605 628 - Modeline "712x600" 35.0 712 740 850 900 400 410 412 425 - Modeline "640x480" 25.175 640 664 760 800 480 491 493 525 - Modeline "400x300" 20 400 416 480 528 300 301 303 314 Doublescan - Modeline "352x288" 25.10 352 368 416 432 288 296 290 310 - Modeline "352x240" 15.750 352 368 416 432 240 244 246 262 Doublescan - Modeline "320x240" 12.588 320 336 384 400 240 245 246 262 Doublescan -EndSection -</programlisting></para> - - -<formalpara> -<title>DGA & MPLAYER</title> -<para> -DGA is used in two places with <application>MPlayer</application>: The SDL -driver can be made to make use of it (<option>-vo sdl:driver=dga</option>) and -within the DGA driver (<option>-vo dga</option>). The above said is true -for both; in the following sections I'll explain how the DGA driver for -<application>MPlayer</application> works. -</para> -</formalpara> - - -<formalpara> -<title>FEATURES</title> - -<para> -The DGA driver is invoked by specifying <option>-vo dga</option> at the -command line. The default behavior is to switch to a resolution matching -the original resolution of the video as close as possible. It deliberately -ignores the <option>-vm</option> and <option>-fs</option> options -(enabling of video mode switching and fullscreen) - it always tries to -cover as much area of your screen as possible by switching the video mode, -thus refraining from using additional cycles of your CPU to scale the -image. If you don't like the mode it chooses you may force it to choose -the mode matching closest the resolution you specify by <option>-x</option> -and <option>-y</option>. By providing the <option>-v</option> option, the -DGA driver will print, among a lot of other things, a list of all -resolutions supported by your current <filename>XF86Config</filename> file. -Having DGA2 you may also force it to use a certain depth by using the -<option>-bpp</option> option. Valid depths are 15, 16, 24 and 32. It -depends on your hardware whether these depths are natively supported or if -a (possibly slow) conversion has to be done. -</para> -</formalpara> -<para> -If you should be lucky enough to have enough offscreen memory left to -put a whole image there, the DGA driver will use double buffering, which -results in much smoother movie playback. It will tell you whether -double buffering is enabled or not. -</para> - -<para> -Double buffering means that the next frame of your video is being drawn in -some offscreen memory while the current frame is being displayed. When the -next frame is ready, the graphics chip is just told the location in memory -of the new frame and simply fetches the data to be displayed from there. -In the meantime the other buffer in memory will be filled again with new -video data. -</para> - -<para> -Double buffering may be switched on by using the option -<option>-double</option> and may be disabled with -<option>-nodouble</option>. Current default option is to disable -double buffering. When using the DGA driver, onscreen display (OSD) only -works with double buffering enabled. However, enabling double buffering may -result in a big speed penalty (on my K6-II+ 525 it used an additional 20% -of CPU time!) depending on the implementation of DGA for your hardware. -</para> - - -<formalpara> -<title>SPEED ISSUES</title> - -<para> -Generally spoken, DGA framebuffer access should be at least as fast as -using the X11 driver with the additional benefit of getting a fullscreen -image. The percentage speed values printed by -<application>MPlayer</application> have to be interpreted with some care, -as for example, with the X11 driver they do not include the time used by -the X server needed for the actual drawing. Hook a terminal to a serial -line of your box and start <command>top</command> to see what is really -going on in your box. -</para> -</formalpara> - -<para> -Generally spoken, the speedup done by using DGA against 'normal' use of X11 -highly depends on your graphics card and how well the X server module for it -is optimized. -</para> - -<para> -If you have a slow system, better use 15 or 16 bit depth since they require -only half the memory bandwidth of a 32 bit display. -</para> - -<para> -Using a depth of 24 bit is a good idea even if your card natively just supports -32 bit depth since it transfers 25% less data compared to the 32/32 mode. -</para> - -<para> -I've seen some AVI files be played back on a Pentium MMX 266. AMD K6-2 -CPUs might work at 400 MHZ and above. -</para> - - -<formalpara> -<title>KNOWN BUGS</title> - -<para> -Well, according to some developers of XFree, DGA is quite a beast. They -tell you better not to use it. Its implementation is not always flawless -with every chipset driver for XFree out there. -</para> -</formalpara> - -<itemizedlist> -<listitem><para> - With XFree 4.0.3 and <filename>nv.o</filename> there is a bug resulting - in strange colors. -</para></listitem> -<listitem><para> - ATI driver requires to switch mode back more than once after finishing - using of DGA. -</para></listitem> -<listitem><para> - Some drivers simply fail to switch back to normal resolution (use - <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>Keypad +</keycap></keycombo> - and - <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>Keypad -</keycap></keycombo> - to switch back manually). -</para></listitem> -<listitem><para> - Some drivers simply display strange colors. -</para></listitem> -<listitem><para> - Some drivers lie about the amount of memory they map into the process's - address space, thus vo_dga won't use double buffering (SIS?). -</para></listitem> -<listitem><para> - Some drivers seem to fail to report even a single valid mode. In this - case the DGA driver will crash telling you about a nonsense mode of - 100000x100000 or something like that. -</para></listitem> -<listitem><para> - OSD only works with double buffering enabled (else it flickers). -</para></listitem> -</itemizedlist> - -</sect1> - -<!-- ********** --> - -<sect1 id="svgalib"> -<title>SVGAlib</title> - -<formalpara> -<title>INSTALLATION</title> -<para> -You'll have to install svgalib and its development package in order for -<application>MPlayer</application> build its SVGAlib driver (autodetected, -but can be forced), and don't forget to edit -<filename>/etc/vga/libvga.config</filename> to suit your card and monitor. -</para> -</formalpara> - -<note><para> -Be sure not to use the <option>-fs</option> switch, since it toggles the -usage of the software scaler, and it's slow. If you really need it, use the -<option>-sws 4</option> option which will produce bad quality, but is -somewhat faster. -</para></note> - -<formalpara> -<title>EGA (4BPP) SUPPORT</title> -<para> -SVGAlib incorporates EGAlib, and <application>MPlayer</application> has the -possibility to display any movie in 16 colors, thus usable in the following -sets: -</para> -</formalpara> - -<itemizedlist> -<listitem><para> - EGA card with EGA monitor: 320x200x4bpp, 640x200x4bpp, 640x350x4bpp -</para></listitem> -<listitem><para> - EGA card with CGA monitor: 320x200x4bpp, 640x200x4bpp -</para></listitem> -</itemizedlist> - -<para> -The bpp (bits per pixel) value must be set to 4 by hand: -<option>-bpp 4</option> -</para> - -<para> -The movie probably must be scaled down to fit in EGA mode: -<screen>-vf scale=640:350</screen> -or -<screen>-vf scale=320:200</screen> -</para> - -<para> -For that we need fast but bad quality scaling routine: -<screen>-sws 4</screen> -</para> - -<para> -Maybe automatic aspect correction has to be shut off: -<screen>-noaspect</screen> -</para> - -<note><para> -According to my experience the best image quality on -EGA screens can be achieved by decreasing the brightness a bit: -<option>-vf eq=-20:0</option>. I also needed to lower the audio -samplerate on my box, because the sound was broken on 44kHz: -<option>-srate 22050</option>. -</para></note> - -<para> -You can turn on OSD and subtitles only with the <option>expand</option> -filter, see the man page for exact parameters. -</para> -</sect1> - -<!-- ********** --> - -<sect1 id="fbdev"> -<title>Framebuffer output (FBdev)</title> - -<para> -Whether to build the FBdev target is autodetected during -<filename>./configure</filename>. Read the framebuffer documentation in -the kernel sources (<filename>Documentation/fb/*</filename>) for more -information. -</para> - -<para> -If your card doesn't support VBE 2.0 standard (older ISA/PCI cards, such as -S3 Trio64), only VBE 1.2 (or older?): Well, VESAfb is still available, but -you'll have to load SciTech Display Doctor (formerly UniVBE) before booting -Linux. Use a DOS boot disk or whatever. And don't forget to register your -UniVBE ;)) -</para> - -<para> -The FBdev output takes some additional parameters above the others: -</para> - -<variablelist> -<varlistentry> - <term><option>-fb</option></term> - <listitem><para> - specify the framebuffer device to use (default: <filename>/dev/fb0</filename>) - </para></listitem> -</varlistentry> -<varlistentry> - <term><option>-fbmode</option></term> - <listitem><para> - mode name to use (according to <filename>/etc/fb.modes</filename>) - </para></listitem> -</varlistentry> -<varlistentry> - <term><option>-fbmodeconfig</option></term> - <listitem><para> - config file of modes (default: <filename>/etc/fb.modes</filename>) - </para></listitem> -</varlistentry> -<varlistentry> - <term><option>-monitor-hfreq</option></term> - <term><option>-monitor-vfreq</option></term> - <term><option>-monitor-dotclock</option></term> - <listitem><para> - <emphasis role="bold">important</emphasis> values, see - <filename>example.conf</filename> - </para></listitem> -</varlistentry> -</variablelist> - -<para> -If you want to change to a specific mode, then use -<screen> -mplayer -vm -fbmode <replaceable>name_of_mode</replaceable> <replaceable>filename</replaceable> -</screen> -</para> - -<itemizedlist> -<listitem><para> - <option>-vm</option> alone will choose the most suitable mode from - <filename>/etc/fb.modes</filename>. Can be used together with - <option>-x</option> and <option>-y</option> options too. The - <option>-flip</option> option is supported only if the movie's pixel - format matches the video mode's pixel format. Pay attention to the bpp - value, fbdev driver tries to use the current, or if you specify the - <option>-bpp</option> option, then that. -</para></listitem> -<listitem><para> - <option>-zoom</option> option isn't supported - (use <option>-vf scale</option>). You can't use 8bpp (or less) modes. -</para></listitem> -<listitem><para> - You possibly want to turn the cursor off: - <screen>echo -e '\033[?25l'</screen> - or - <screen>setterm -cursor off</screen> - and the screen saver: - <screen>setterm -blank 0</screen> - To turn the cursor back on: - <screen>echo -e '\033[?25h'</screen> - or - <screen>setterm -cursor on</screen> -</para></listitem> -</itemizedlist> - -<note><para> -FBdev video mode changing <emphasis>does not work</emphasis> with the VESA -framebuffer, and don't ask for it, since it's not an -<application>MPlayer</application> limitation. -</para></note> -</sect1> - -<!-- ********** --> - -<sect1 id="mga_vid"> -<title>Matrox framebuffer (mga_vid)</title> - -<para> -<systemitem>mga_vid</systemitem> is a combination of a video output driver and -a Linux kernel module that utilizes the Matrox G200/G400/G450/G550 video -scaler/overlay unit to perform YUV->RGB colorspace conversion and arbitrary -video scaling. -<systemitem>mga_vid</systemitem> has hardware VSYNC support with triple -buffering. It works on both a framebuffer console and under X, but only -with Linux 2.4.x. -</para> - -<para> -For a Linux 2.6.x version of this driver check out -<ulink url="http://attila.kinali.ch/mga/"/> or have a look at the external -Subversion repository of mga_vid which can be checked out via - -<screen> -svn checkout svn://svn.mplayerhq.hu/mga_vid -</screen> -</para> - -<procedure> -<title>Installation:</title> -<step><para> - To use it, you first have to compile <filename>drivers/mga_vid.o</filename>: - <screen> -make drivers<!-- ---></screen> -</para></step> -<step><para> - Then run (as <systemitem class="username">root</systemitem>) - <screen>make install-drivers</screen> - which should install the module and create the device node for you. - Load the driver with - <screen>insmod mga_vid.o</screen> -</para></step> -<step><para> - You should verify the memory size detection using the - <command>dmesg</command> command. If it's bad, use the - <option>mga_ram_size</option> option - (<command>rmmod mga_vid</command> first), - specify card's memory size in MB: - <screen>insmod mga_vid.o mga_ram_size=16</screen> -</para></step> -<step><para> - To make it load/unload automatically when needed, first insert the - following line at the end of <filename>/etc/modules.conf</filename>: - - <programlisting>alias char-major-178 mga_vid</programlisting> -</para></step> -<step><para> - Now you have to (re)compile <application>MPlayer</application>, - <command>./configure</command> will detect - <filename>/dev/mga_vid</filename> and build the 'mga' driver. Using it - from <application>MPlayer</application> goes by <option>-vo mga</option> - if you have matroxfb console, or <option>-vo xmga</option> under XFree86 - 3.x.x or 4.x.x. -</para></step> -</procedure> - -<para> -The mga_vid driver cooperates with Xv. -</para> - -<para> -The <filename>/dev/mga_vid</filename> device file can be read for some -info, for example by -<screen>cat /dev/mga_vid</screen> -and can be written for brightness change: -<screen>echo "brightness=120" > /dev/mga_vid</screen> -</para> - -<para> -There is a test application called <command>mga_vid_test</command> in the same -directory. It should draw 256x256 images on the screen if all is working well. -</para> - -</sect1> - -<!-- ********** --> - -<sect1 id="tdfxfb" xreflabel="3Dfx YUV support (tdfxfb)"> -<title>3Dfx YUV support</title> - -<para> -This driver uses the kernel's tdfx framebuffer driver to play movies with -YUV acceleration. You'll need a kernel with tdfxfb support, and recompile -with -<screen>./configure --enable-tdfxfb</screen> -</para> -</sect1> - -<!-- ********** --> - -<sect1 id="tdfx_vid"> -<title>tdfx_vid</title> - -<para> -This is a combination of a Linux kernel module and a video output -driver, similar to <link linkend="mga_vid">mga_vid</link>. -You'll need a 2.4.x kernel with the <systemitem>agpgart</systemitem> -driver since <systemitem>tdfx_vid</systemitem> uses AGP. -Pass <option>--enable-tdfxfb</option> to <command>configure</command> -to build the video output driver and build the kernel module with -the following instructions. -</para> - -<procedure> -<title>Installing the tdfx_vid.o kernel module:</title> -<step><para> - Compile <filename>drivers/tdfx_vid.o</filename>: - <screen> -make drivers</screen> -</para></step> -<step><para> - Then run (as <systemitem class="username">root</systemitem>) - <screen>make install-drivers</screen> - which should install the module and create the device node for you. - Load the driver with - <screen>insmod tdfx_vid.o</screen> -</para></step> -<step><para> - To make it load/unload automatically when needed, first insert the - following line at the end of <filename>/etc/modules.conf</filename>: - - <programlisting>alias char-major-178 tdfx_vid</programlisting> -</para></step> -</procedure> - -<para> -There is a test application called <command>tdfx_vid_test</command> in the same -directory. It should print out some useful information if all is working well. -</para> - -</sect1> - -<!-- ********** --> - -<sect1 id="opengl"> -<title>OpenGL output</title> - -<para> -<application>MPlayer</application> supports displaying movies using OpenGL, -but if your platform/driver supports xv as should be the case on a PC with -Linux, use xv instead, OpenGL performance is considerably worse. If you -have an X11 implementation without xv support, OpenGL is a viable -alternative. -</para> - -<para> -Unfortunately not all drivers support this feature. The Utah-GLX drivers -(for XFree86 3.3.6) support it for all cards. -See <ulink url="http://utah-glx.sf.net"/> for details about how to -install it. -</para> - -<para> -XFree86(DRI) 4.0.3 or later supports OpenGL with Matrox and Radeon cards, -4.2.0 or later supports Rage128. -See <ulink url="http://dri.sf.net"/> for download and installation -instructions. -</para> - -<para> -A hint from one of our users: the GL video output can be used to get -vsynced TV output. You'll have to set an environment variable (at -least on nVidia): -</para> - -<para> -<command>export __GL_SYNC_TO_VBLANK=1</command> -</para> -</sect1> - -<!-- ********** --> - -<sect1 id="aalib"> -<title>AAlib – text mode displaying</title> - -<para> -AAlib is a library for displaying graphics in text mode, using powerful -ASCII renderer. There are <emphasis>lots</emphasis> of programs already -supporting it, like Doom, Quake, etc. <application>MPlayer</application> -contains a very usable driver for it. If <filename>./configure</filename> -detects aalib installed, the aalib libvo driver will be built. -</para> - -<para> -You can use some keys in the AA Window to change rendering options: -</para> - -<informaltable> -<tgroup cols="2"> -<thead> - <row><entry>Key</entry><entry>Action</entry></row> -</thead> -<tbody> -<row><entry><keycap>1</keycap></entry><entry> - decrease contrast -</entry></row> -<row><entry><keycap>2</keycap></entry><entry> - increase contrast -</entry></row> -<row><entry><keycap>3</keycap></entry><entry> - decrease brightness -</entry></row> -<row><entry><keycap>4</keycap></entry><entry> - increase brightness -</entry></row> -<row><entry><keycap>5</keycap></entry><entry> - switch fast rendering on/off -</entry></row> -<row><entry><keycap>6</keycap></entry><entry> - set dithering mode (none, error distribution, Floyd Steinberg) -</entry></row> -<row><entry><keycap>7</keycap></entry><entry> - invert image -</entry></row> -<row><entry><keycap>8</keycap></entry><entry> - toggles between aa and <application>MPlayer</application> control -</entry></row> -</tbody> -</tgroup> -</informaltable> - -<variablelist> -<title>The following command line options can be used:</title> -<varlistentry> - <term><option>-aaosdcolor=<replaceable>V</replaceable></option></term> - <listitem><para> - change OSD color - </para></listitem> -</varlistentry> -<varlistentry> - <term><option>-aasubcolor=<replaceable>V</replaceable></option></term> - <listitem><para> - Change subtitle color - </para><para> - where <replaceable>V</replaceable> can be: - <literal>0</literal> (normal), - <literal>1</literal> (dark), - <literal>2</literal> (bold), - <literal>3</literal> (bold font), - <literal>4</literal> (reverse), - <literal>5</literal> (special). - </para></listitem> -</varlistentry> -</variablelist> - -<variablelist> -<title>AAlib itself provides a large sum of options. Here are some -important:</title> -<varlistentry> - <term><option>-aadriver</option></term> - <listitem><para> - Set recommended aa driver (X11, curses, Linux). - </para></listitem> -</varlistentry> -<varlistentry> - <term><option>-aaextended</option></term> - <listitem><para> - Use all 256 characters. - </para></listitem> -</varlistentry> -<varlistentry> - <term><option>-aaeight</option></term> - <listitem><para> - Use eight bit ASCII. - </para></listitem> -</varlistentry> -<varlistentry> - <term><option>-aahelp</option></term> - <listitem><para> - Prints out all aalib options. - </para></listitem> -</varlistentry> -</variablelist> - -<note><para> -The rendering is very CPU intensive, especially when using AA-on-X -(using aalib on X), and it's least CPU intensive on standard, -non-framebuffer console. Use SVGATextMode to set up a big textmode, -then enjoy! (secondary head Hercules cards rock :)) (but IMHO you -can use <option>-vf 1bpp</option> option to get graphics on hgafb:) -</para></note> - -<para> -Use the <option>-framedrop</option> option if your computer isn't fast -enough to render all frames! -</para> - -<para> -Playing on terminal you'll get better speed and quality using the Linux -driver, not curses (<option>-aadriver linux</option>). But therefore you -need write access on -<filename>/dev/vcsa<replaceable><terminal></replaceable></filename>! -That isn't autodetected by aalib, but vo_aa tries to find the best mode. -See <ulink url="http://aa-project.sf.net/tune"/> for further -tuning issues. -</para> -</sect1> - -<!-- ********** --> - -<sect1 id="caca"> -<title> -<systemitem class="library">libcaca</systemitem> – Color ASCII Art library -</title> - -<para> -The <ulink url="http://sam.zoy.org/projects/libcaca/"><systemitem class="library">libcaca</systemitem></ulink> -library is a graphics library that outputs text instead of pixels, so that it -can work on older video cards or text terminals. It is not unlike the famous -<systemitem class="library">AAlib</systemitem> library. -<systemitem class="library">libcaca</systemitem> needs a terminal to work, thus -it should work on all Unix systems (including Mac OS X) using either the -<systemitem class="library">slang</systemitem> library or the -<systemitem class="library">ncurses</systemitem> library, on DOS using the -<systemitem class="library">conio.h</systemitem> library, and on Windows systems -using either <systemitem class="library">slang</systemitem> or -<systemitem class="library">ncurses</systemitem> (through Cygwin emulation) or -<systemitem class="library">conio.h</systemitem>. If -<filename>./configure</filename> -detects <systemitem class="library">libcaca</systemitem>, the caca libvo driver -will be built. -</para> - -<itemizedlist> -<title>The differences with <systemitem class="library">AAlib</systemitem> are - the following:</title> -<listitem><para> - 16 available colors for character output (256 color pairs) -</para></listitem> -<listitem><para> - color image dithering -</para></listitem> -</itemizedlist> - -<itemizedlist> -<title>But <systemitem class="library">libcaca</systemitem> also has the - following limitations:</title> -<listitem><para> - no support for brightness, contrast, gamma -</para></listitem> -</itemizedlist> - -<para> -You can use some keys in the caca window to change rendering options: -</para> - -<informaltable> -<tgroup cols="2"> -<thead> - <row><entry>Key</entry><entry>Action</entry></row> -</thead> -<tbody> -<row><entry><keycap>d</keycap></entry><entry> - Toggle <systemitem class="library">libcaca</systemitem> dithering methods. -</entry></row> -<row><entry><keycap>a</keycap></entry><entry> - Toggle <systemitem class="library">libcaca</systemitem> antialiasing. -</entry></row> -<row><entry><keycap>b</keycap></entry><entry> - Toggle <systemitem class="library">libcaca</systemitem> background. -</entry></row> -</tbody> -</tgroup> -</informaltable> - -<variablelist> -<title><systemitem class="library">libcaca</systemitem> will also look for - certain environment variables:</title> -<varlistentry> - <term><option>CACA_DRIVER</option></term> - <listitem><para> - Set recommended caca driver. e.g. ncurses, slang, x11. - </para></listitem> -</varlistentry> -<varlistentry> - <term><option>CACA_GEOMETRY (X11 only)</option></term> - <listitem><para> - Specifies the number of rows and columns. e.g. 128x50. - </para></listitem> -</varlistentry> -<varlistentry> - <term><option>CACA_FONT (X11 only)</option></term> - <listitem><para> - Specifies the font to use. e.g. fixed, nexus. - </para></listitem> -</varlistentry> -</variablelist> - -<para> -Use the <option>-framedrop</option> option if your computer is not fast -enough to render all frames. -</para> - -</sect1> - -<!-- ********** --> - -<sect1 id="vesa"> -<title>VESA - output to VESA BIOS</title> - -<para> -This driver was designed and introduced as a <emphasis role="bold">generic -driver</emphasis> for any video card which has VESA VBE 2.0 compatible -BIOS. Another advantage of this driver is that it tries to force TV output -on. -<citetitle>VESA BIOS EXTENSION (VBE) Version 3.0 Date: September 16, -1998</citetitle> (Page 70) says: -</para> - -<blockquote> -<formalpara><title>Dual-Controller Designs</title> -<para> -VBE 3.0 supports the dual-controller design by assuming that since both -controllers are typically provided by the same OEM, under control of a -single BIOS ROM on the same graphics card, it is possible to hide the fact -that two controllers are indeed present from the application. This has the -limitation of preventing simultaneous use of the independent controllers, -but allows applications released before VBE 3.0 to operate normally. The -VBE Function 00h (Return Controller Information) returns the combined -information of both controllers, including the combined list of available -modes. When the application selects a mode, the appropriate controller is -activated. Each of the remaining VBE functions then operates on the active -controller. -</para> -</formalpara> -</blockquote> - -<para> -So you have chances to get working TV-out by using this driver. -(I guess that TV-out frequently is standalone head or standalone output -at least.) -</para> - -<itemizedlist spacing="compact"> -<title>ADVANTAGES</title> -<listitem><para> - You have chances to watch movies <emphasis role="bold">if Linux even doesn't - know</emphasis> your video hardware. -</para></listitem> -<listitem><para> - You don't need to have installed any graphics' related things on your - Linux (like X11 (AKA XFree86), fbdev and so on). This driver can be run - from <emphasis role="bold">text-mode</emphasis>. -</para></listitem> -<listitem><para> - You have chances to get <emphasis role="bold">working TV-out</emphasis>. - (It's known at least for ATI's cards). -</para></listitem> -<listitem><para> - This driver calls <function>int 10h</function> handler thus it's not - an emulator - it calls <emphasis role="bold">real</emphasis> things of - <emphasis>real</emphasis> BIOS in <emphasis>real-mode</emphasis> - (actually in vm86 mode). -</para></listitem> -<listitem><para> - You can use VIDIX with it, thus getting accelerated video display - <emphasis role="bold">and</emphasis> TV output at the same time! - (Recommended for ATI cards.) - </para></listitem> -<listitem><para> - If you have VESA VBE 3.0+, and you had specified - <option>monitor-hfreq, monitor-vfreq, monitor-dotclock</option> somewhere - (config file, or command line) you will get the highest possible refresh rate. - (Using General Timing Formula). To enable this feature you have to specify - <emphasis role="bold">all</emphasis> your monitor options. -</para></listitem> -</itemizedlist> - -<itemizedlist spacing="compact"> -<title>DISADVANTAGES</title> -<listitem><para> - It works only on <emphasis role="bold">x86 systems</emphasis>. -</para></listitem> -<listitem><para> - It can be used only by <systemitem class="username">root</systemitem>. -</para></listitem> -<listitem><para> - Currently it's available only for <emphasis role="bold">Linux</emphasis>. -</para></listitem> -</itemizedlist> - -<variablelist> -<title>COMMAND LINE OPTIONS AVAILABLE FOR VESA</title> -<varlistentry> - <term><option>-vo vesa:<replaceable>opts</replaceable></option></term> - <listitem><para> - currently recognized: <literal>dga</literal> to force dga mode and - <literal>nodga</literal> to disable dga mode. In dga mode you can enable - double buffering via the <option>-double</option> option. Note: you may omit - these parameters to enable <emphasis role="bold">autodetection</emphasis> of - dga mode. - </para></listitem> -</varlistentry> -</variablelist> - -<itemizedlist spacing="compact"> -<title>KNOWN PROBLEMS AND WORKAROUNDS</title> -<listitem><para> - If you have installed <emphasis role="bold">NLS</emphasis> font on your - Linux box and run VESA driver from text-mode then after terminating - <application>MPlayer</application> you will have - <emphasis role="bold">ROM font</emphasis> loaded instead of national. - You can load national font again by using <command>setsysfont</command> - utility from the Mandrake/Mandriva distribution for example. - (<emphasis role="bold">Hint</emphasis>: The same utility is used for - localization of fbdev). -</para></listitem> -<listitem><para> - Some <emphasis role="bold">Linux graphics drivers</emphasis> don't update - active <emphasis role="bold">BIOS mode</emphasis> in DOS memory. - So if you have such problem - always use VESA driver only from - <emphasis role="bold">text-mode</emphasis>. Otherwise text-mode (#03) will - be activated anyway and you will need restart your computer. -</para></listitem> -<listitem><para> - Often after terminating VESA driver you get - <emphasis role="bold">black</emphasis> screen. To return your screen to - original state - simply switch to other console (by pressing - <keycombo><keycap>Alt</keycap><keycap>F<x></keycap></keycombo>) - then switch to your previous console by the same way. -</para></listitem> -<listitem><para> - To get <emphasis role="bold">working TV-out</emphasis> you need have plugged - TV-connector in before booting your PC since video BIOS initializes - itself only once during POST procedure. -</para></listitem> -</itemizedlist> -</sect1> - -<!-- ********** --> - -<sect1 id="x11"> -<title>X11</title> - -<para> -Avoid if possible. Outputs to X11 (uses shared memory extension), with no -hardware acceleration at all. Supports (MMX/3DNow/SSE accelerated, but -still slow) software scaling, use the options <option>-fs -zoom</option>. -Most cards have hardware scaling support, use the <option>-vo xv</option> -output for them, or <option>-vo xmga</option> for Matrox cards. -</para> - -<para> -The problem is that most cards' driver doesn't support hardware -acceleration on the second head/TV. In those cases, you see green/blue -colored window instead of the movie. This is where this driver comes in -handy, but you need powerful CPU to use software scaling. Don't use the SDL -driver's software output+scaler, it has worse image quality! -</para> - -<para> -Software scaling is very slow, you better try changing video modes instead. -It's very simple. See the <link linkend="dga-modelines">DGA section's -modelines</link>, and insert them into your <filename>XF86Config</filename>. - -<itemizedlist spacing="compact"> -<listitem><para> - If you have XFree86 4.x.x: use the <option>-vm</option> option. It will - change to a resolution your movie fits in. If it doesn't: -</para></listitem> -<listitem><para> - With XFree86 3.x.x: you have to cycle through available resolutions - with the - <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>Keypad +</keycap></keycombo> - and - <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>Keypad -</keycap></keycombo> - keys. -</para></listitem> -</itemizedlist> -</para> - -<para> -If you can't find the modes you inserted, browse XFree86's output. Some -drivers can't use low pixelclocks that are needed for low resolution -video modes. -</para> -</sect1> - -<!-- ********** --> - -<sect1 id="vidix"> -<title>VIDIX</title> - -<formalpara><title>PREAMBLE</title> -<para> -<acronym>VIDIX</acronym> is the abbreviation for -<emphasis role="bold">VID</emphasis>eo -<emphasis role="bold">I</emphasis>nterface -for *ni<emphasis role="bold">X</emphasis>. -VIDIX was designed and introduced as an interface for fast user-space drivers -providing such video performance as mga_vid does for Matrox cards. It's also -very portable. -</para> -</formalpara> - -<para> -This interface was designed as an attempt to fit existing video -acceleration interfaces (known as mga_vid, rage128_vid, radeon_vid, -pm3_vid) into a fixed scheme. It provides a high level interface to chips -which are known as BES (BackEnd scalers) or OV (Video Overlays). It doesn't -provide low level interface to things which are known as graphics servers. -(I don't want to compete with X11 team in graphics mode switching). I.e. -main goal of this interface is to maximize the speed of video playback. -</para> - -<itemizedlist spacing="compact"> -<title>USAGE</title> -<listitem><para> - You can use standalone video output driver: <option>-vo xvidix</option>. - This driver was developed as X11's front end to VIDIX technology. It - requires X server and can work only under X server. Note that, as it directly - accesses the hardware and circumvents the X driver, pixmaps cached in the - graphics card's memory may be corrupted. You can prevent this by limiting - the amount of video memory used by X with the XF86Config option "VideoRam" - in the device section. You should set this to the amount of memory installed - on your card minus 4MB. If you have less than 8MB of video ram, you can use - the option "XaaNoPixmapCache" in the screen section instead. -</para></listitem> -<listitem> - <para> - There is a console VIDIX driver: <option>-vo cvidix</option>. - This requires a working and initialized framebuffer for most cards (or else - you'll just mess up the screen), and you'll have a similar effect as with - <option>-vo mga</option> or <option>-vo fbdev</option>. nVidia cards however - are able to output truly graphical video on a real text console. See the - <link linkend="vidix-nvidia">nvidia_vid</link> section for more information. - To get rid of text on the borders and the blinking cursor, try something like - </para> - - <screen>setterm -cursor off > /dev/tty9</screen> - - <para> - (assuming <systemitem>tty9</systemitem> is unused so far) and then - switch to <systemitem>tty9</systemitem>. - On the other hand, <option>-colorkey 0</option> should give you a video - running in the "background", though this depends on the colorkey - functionality to work right. - </para> -</listitem> -<listitem><para> - You can use VIDIX subdevice which was applied to several video output - drivers, such as: <option>-vo vesa:vidix</option> - (<emphasis role="bold">Linux only</emphasis>) and - <option>-vo fbdev:vidix</option>. -</para></listitem> -</itemizedlist> - -<para> -Indeed it doesn't matter which video output driver is used with -<emphasis role="bold">VIDIX</emphasis>. -</para> - -<itemizedlist spacing="compact"> -<title>REQUIREMENTS</title> -<listitem><para> - Video card should be in graphics mode (except nVidia cards with the - <option>-vo cvidix</option> output driver). -</para></listitem> -<listitem><para> - <application>MPlayer</application>'s video output driver should know - active video mode and be able to tell to VIDIX subdevice some video - characteristics of server. -</para></listitem> -</itemizedlist> - -<formalpara><title>USAGE METHODS</title> -<para> -When VIDIX is used as <emphasis role="bold">subdevice</emphasis> (<option>-vo -vesa:vidix</option>) then video mode configuration is performed by video -output device (<emphasis role="bold">vo_server</emphasis> in short). Therefore you can -pass into command line of <application>MPlayer</application> the same keys -as for vo_server. In addition it understands <option>-double</option> key -as globally visible parameter. (I recommend using this key with VIDIX at -least for ATI's card). As for <option>-vo xvidix</option>, currently it -recognizes the following options: <option>-fs -zoom -x -y -double</option>. -</para> -</formalpara> - -<para> -Also you can specify VIDIX's driver directly as third subargument in -command line: -<screen> -mplayer -vo xvidix:mga_vid.so -fs -zoom -double <replaceable>file.avi</replaceable> -</screen> -or -<screen> -mplayer -vo vesa:vidix:radeon_vid.so -fs -zoom -double -bpp 32 <replaceable>file.avi</replaceable> -</screen> -But it's dangerous, and you shouldn't do that. In this case given driver -will be forced and result is unpredictable (it may -<emphasis role="bold">freeze</emphasis> your computer). You should do that -ONLY if you are absolutely sure it will work, and -<application>MPlayer</application> doesn't do it automatically. Please tell -about it to the developers. The right way is to use VIDIX without arguments -to enable driver autodetection. -</para> - - -<sect2 id="svgalib_helper"> -<title>svgalib_helper</title> - -<para> -Since VIDIX requires direct hardware access you can either run it as root -or set the SUID bit on the <application>MPlayer</application> binary -(<emphasis role="bold">Warning: This is a security risk!</emphasis>). -Alternatively, you can use a special kernel module, like this: -</para> - -<procedure> -<step><para> - Download the - <ulink url="http://www.arava.co.il/matan/svgalib/">development version</ulink> - of svgalib (1.9.x). -</para></step> -<step><para> - Compile the module in the - <filename class="directory">svgalib_helper</filename> directory (it can be - found inside the - <filename class="directory">svgalib-1.9.17/kernel/</filename> directory if - you've downloaded the source from the svgalib site) and insmod it. -</para></step> -<step><para> - To create the necessary devices in the - <filename class="directory">/dev</filename> directory, do a - <screen>make device</screen> in the - <filename class="directory">svgalib_helper</filename> dir, as root. -</para></step> -<step><para> - Then run <filename>configure</filename> again and pass the parameter - <option>--enable-svgalib_helper</option> as well as - <option>--extra-cflags=<replaceable>/path/to/svgalib_helper/sources/</replaceable>kernel/svgalib_helper</option>, - where <replaceable>/path/to/svgalib_helper/sources/</replaceable> has to be - adjusted to wherever you extracted svgalib_helper sources. -</para></step> -<step><para> - Recompile. -</para></step> -</procedure> -</sect2> - - -<sect2 id="vidix-ati"> -<title>ATI cards</title> - <para> -Currently most ATI cards are supported natively, from Mach64 to the -newest Radeons. -</para> - -<para> -There are two compiled binaries: <filename>radeon_vid</filename> for Radeon and -<filename>rage128_vid</filename> for Rage 128 cards. You may force one or let -the VIDIX system autoprobe all available drivers. -</para> -</sect2> - - -<sect2 id="vidix-mga"> -<title>Matrox cards</title> - -<para> -Matrox G200, G400, G450 and G550 have been reported to work. -</para> - -<para> -The driver supports video equalizers and should be nearly as fast as the -<link linkend="mga_vid">Matrox framebuffer</link> -</para> -</sect2> - - -<sect2 id="vidix-trident"> -<title>Trident cards</title> - -<para> -There is a driver available for the Trident Cyberblade/i1 chipset, which -can be found on VIA Epia motherboards. -</para> - -<para> -The driver was written and is maintained by -<ulink url="http://www.blackfiveservices.co.uk/EPIAVidix.shtml">Alastair M. Robinson</ulink>. -</para> -</sect2> - - -<sect2 id="vidix-3dlabs"> -<title>3DLabs cards</title> - -<para> -Although there is a driver for the 3DLabs GLINT R3 and Permedia3 chips, no one -has tested it, so reports are welcome. -</para> -</sect2> - - -<sect2 id="vidix-nvidia"> -<title>nVidia cards</title> - -<para> -An unique feature of the nvidia_vid driver is its ability to display video on -<emphasis role="bold">plain, pure, text-only console</emphasis> - with no -framebuffer or X magic whatsoever. For this purpose, we'll have to use the -<option>cvidix</option> video output, as the following example shows: -<screen>mplayer -vo cvidix <replaceable>example.avi</replaceable></screen> -</para> -</sect2> - - -<sect2 id="vidix-sis"> -<title>SiS cards</title> - -<para> -This is very experimental code, just like nvidia_vid. -</para> - -<para> -It's been tested on SiS 650/651/740 (the most common chipsets used in the -SiS versions of the "Shuttle XPC" barebones boxes out there) -</para> - -<para> -Reports awaited! -</para> -</sect2> -</sect1> - -<!-- ********** --> - -<sect1 id="directfb"> -<title>DirectFB</title> - -<blockquote><para> -"DirectFB is a graphics library which was designed with embedded systems -in mind. It offers maximum hardware accelerated performance at a minimum -of resource usage and overhead." - quoted from -<ulink url="http://www.directfb.org"/> -</para></blockquote> - -<para>I'll exclude DirectFB features from this section.</para> - -<para> -Though <application>MPlayer</application> is not supported as a "video -provider" in DirectFB, this output driver will enable video playback -through DirectFB. It will - of course - be accelerated, on my Matrox G400 -DirectFB's speed was the same as XVideo. -</para> - -<para> -Always try to use the newest version of DirectFB. You can use DirectFB options -on the command line, using the <option>-dfbopts</option> option. Layer -selection can be done by the subdevice method, e.g.: -<option>-vo directfb:2</option> (layer -1 is default: autodetect) -</para> -</sect1> - -<!-- ********** --> - -<sect1 id="dfbmga"> -<title>DirectFB/Matrox (dfbmga)</title> - -<para> -Please read the <link linkend="directfb">main DirectFB</link> section for -general information. -</para> - -<para> -This video output driver will enable CRTC2 (on the second head) on Matrox -G400/G450/G550 cards, displaying video -<emphasis role="bold">independent</emphasis> of the first head. -</para> - -<para> -Ville Syrjala's has a -<ulink url="http://www.sci.fi/~syrjala/directfb/Matrox_TV-out_README.txt">README</ulink> -and a -<ulink url="http://www.sci.fi/~syrjala/directfb/matrox-tv-out-howto">HOWTO</ulink> -on his homepage that explain how to make DirectFB TV output run on Matrox cards. -</para> - -<note><para> -the first DirectFB version with which we could get this working was -0.9.17 (it's buggy, needs that <systemitem>surfacemanager</systemitem> -patch from the URL above). Porting the CRTC2 code to -<link linkend="mga_vid">mga_vid</link> has been planned for years, -<ulink url="../../tech/patches.txt">patches</ulink> are welcome. -</para></note> -</sect1> - - -<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - - -<sect1 id="mpeg_decoders"> -<title>MPEG decoders</title> - -<sect2 id="dvb"> -<title>DVB output and input</title> - -<para> -<application>MPlayer</application> supports cards with the Siemens DVB chipset -from vendors like Siemens, Technotrend, Galaxis or Hauppauge. The latest DVB -drivers are available from the -<ulink url="http://www.linuxtv.org">Linux TV site</ulink>. -If you want to do software transcoding you should have at least a 1GHz CPU. -</para> - -<para> -Configure should detect your DVB card. If it did not, force detection with -<screen>./configure --enable-dvb</screen> -Then compile and install as usual.</para> - -<formalpara><title>USAGE</title> -<para> -Hardware decoding of streams containing MPEG-1/2 video and/or MPEG audio can be done with this -command: -<screen> -mplayer -ao mpegpes -vo mpegpes <replaceable>file.mpg|vob</replaceable> -</screen> -</para> -</formalpara> - -<para> -Decoding of any other type of video stream requires transcoding to MPEG-1, thus it's slow -and may not be worth the trouble, especially if your computer is slow. -It can be achieved using a command like this: -<screen> -mplayer -ao mpegpes -vo mpegpes <replaceable>yourfile.ext</replaceable> -mplayer -ao mpegpes -vo mpegpes -vf expand <replaceable>yourfile.ext</replaceable> -</screen></para> - -<para> -Note that DVB cards only support heights 288 and 576 for PAL or 240 and 480 for -NTSC. You <emphasis role="bold">must</emphasis> rescale for other heights by -adding <option>scale=width:height</option> with the width and height you want -to the <option>-vf</option> option. DVB cards accept various widths, like 720, -704, 640, 512, 480, 352 etc. and do hardware scaling in horizontal direction, -so you do not need to scale horizontally in most cases. -For a 512x384 (aspect 4:3) MPEG-4 (DivX) try: -<screen>mplayer -ao mpegpes -vo mpegpes -vf scale=512:576</screen> -</para> - -<para> -If you have a widescreen movie and you do not want to scale it to full height, -you can use the <option>expand=w:h</option> filter to add black bands. To view a -640x384 MPEG-4 (DivX), try: -<screen> -mplayer -ao mpegpes -vo mpegpes -vf expand=640:576 <replaceable>file.avi</replaceable> -</screen> -</para> - -<para> -If your CPU is too slow for a full size 720x576 MPEG-4 (DivX), try downscaling: -<screen> -mplayer -ao mpegpes -vo mpegpes -vf scale=352:576 <replaceable>file.avi</replaceable> -</screen> -</para> - -<para>If speed does not improve, try vertical downscaling, too: -<screen> -mplayer -ao mpegpes -vo mpegpes -vf scale=352:288 <replaceable>file.avi</replaceable> -</screen> -</para> - -<para> -For OSD and subtitles use the OSD feature of the expand filter. So, instead of -<option>expand=w:h</option> or <option>expand=w:h:x:y</option>, use -<option>expand=w:h:x:y:1</option> (the 5th parameter <option>:1</option> -at the end will enable OSD rendering). You may want to move the image up a bit -to get a bigger black zone for subtitles. You may also want to move subtitles -up, if they are outside your TV screen, use the -<option>-subpos <0-100></option> -option to adjust this (<option>-subpos 80</option> is a good choice). -</para> - -<para> -In order to play non-25fps movies on a PAL TV or with a slow CPU, add the -<option>-framedrop</option> option. -</para> - -<para> -To keep the aspect ratio of MPEG-4 (DivX) files and get the optimal scaling -parameters (hardware horizontal scaling and software vertical scaling -while keeping the right aspect ratio), use the new dvbscale filter: -<screen> -for a 4:3 TV: -vf dvbscale,scale=-1:0,expand=-1:576:-1:-1:1 -for a 16:9 TV: -vf dvbscale=1024,scale=-1:0,expand=-1:576:-1:-1:1 -</screen> -</para> - -<formalpara><title>Digital TV (DVB input module)</title> -<para>You can use your DVB card for watching Digital TV.</para> -</formalpara> - -<para> -You should have the programs <command>scan</command> and -<command>szap/tzap/czap/azap</command> installed; they are all included in -the drivers package. -</para> - -<para> -Verify that your drivers are working properly with a program such as -<ulink url="http://sf.net/projects/dvbtools/"><command>dvbstream</command></ulink> -(that is the base of the DVB input module). -</para> - -<para> -Now you should compile a <filename>~/.mplayer/channels.conf</filename> -file, with the syntax accepted by <command>szap/tzap/czap/azap</command>, or -have <command>scan</command> compile it for you. -</para> - -<para> -If you have more than one card type (e.g. Satellite, Terrestrial, Cable and ATSC) -you can save your channels files as -<filename>~/.mplayer/channels.conf.sat</filename>, -<filename>~/.mplayer/channels.conf.ter</filename>, -<filename>~/.mplayer/channels.conf.cbl</filename>, -and <filename>~/.mplayer/channels.conf.atsc</filename>, -respectively, so as to implicitly hint <application>MPlayer</application> -to use these files rather than <filename>~/.mplayer/channels.conf</filename>, -and you only need to specify which card to use. -</para> - -<para> -Make sure that you have <emphasis>only</emphasis> Free to Air -channels in your <filename>channels.conf</filename> file, or -<application>MPlayer</application> will wait for an unencrypted transmission. -</para> - -<para> -In your audio and video fields you can use an extended syntax: -<option>...:pid[+pid]:...</option> (for a maximum of 6 pids each); -in this case <application>MPlayer</application> will include in the -stream all the indicated pids, plus pid 0 (that contains the PAT). -You should always include in each row the PMT and PCR pids for the -corresponding channel (if you know them). -You can also specify 8192, this will select all pids on this frequency -and you can then switch between the programs with TAB. -This might need more bandwidth, though cheap cards always transfer all -channels at least to the kernel so it does not make much of a difference -for these. -Other possible uses are: televideo pid, second audio track, etc. -</para> - -<para> -If <application>MPlayer</application> complains frequently about -<screen>Too many video/audio packets in the buffer</screen> or -if you notice a growing desynchronization between audio and -video verify the presence of the PCR pid in your stream -(needed to comply with the buffering model of the transmitter) -and/or try to use the libavformat MPEG-TS demuxer by adding -<option>-demuxer lavf -lavfdopts probesize=128</option> -to your command line. -</para> - -<para> -To show the first of the channels present in your list, run -<screen>mplayer dvb://</screen> -</para> - -<para> -If you want to watch a specific channel, such as R1, run -<screen>mplayer dvb://<replaceable>R1</replaceable></screen> -</para> - -<para> -If you have more than one card you also need to specify the number of the card -where the channel is visible (e.g. 2) with the syntax: -<screen>mplayer dvb://<replaceable>2@R1</replaceable></screen> -</para> - -<para> -To change channels press the <keycap>h</keycap> (next) and -<keycap>k</keycap> (previous) keys, or use the -<link linkend="osdmenu">OSD menu</link>. -</para> - -<para> -To temporarily disable the audio or the video stream copy the -following to <filename>~/.mplayer/input.conf</filename>: -<screen> -% set_property switch_video -2 -& step_property switch_video -? set_property switch_audio -2 -^ step_property switch_audio -</screen> -(Overriding the action keys as preferred.) When pressing the key -corresponding to switch_x -2 the associated stream will be closed; -when pressing the key corresponding to step_x the stream will be reopened. -Notice that this switching mechanism will not work as expected when there -are multiple audio and video streams in the multiplex. -</para> - -<para> -During playback (not during recording), in order to prevent stuttering -and error messages such as 'Your system is too slow' it is advisable to add -<screen> --mc 10 -speed 0.97 -af scaletempo -</screen> -to your command line, adjusting the scaletempo parameters as preferred. -</para> - -<para> -If your <filename>~/.mplayer/menu.conf</filename> contains a -<literal><dvbsel></literal> entry, such as the one in the example -file <filename>etc/dvb-menu.conf</filename> (that you can use to overwrite -<filename>~/.mplayer/menu.conf</filename>), the main menu will show a -sub-menu entry that will permit you to choose one of the channels present -in your <filename>channels.conf</filename>, possibly preceded by a menu -with the list of cards available if more than one is usable by -<application>MPlayer</application>. -</para> - -<para> -If you want to save a program to disk you can use -<screen> -mplayer -dumpfile <replaceable>r1.ts</replaceable> -dumpstream dvb://<replaceable>R1</replaceable> -</screen> -</para> - -<para> -If you want to record it in a different format (re-encoding it) instead -you can run a command such as -<screen> -mencoder -o <replaceable>r1.avi</replaceable> -ovc xvid -xvidencopts bitrate=800 \ - -oac mp3lame -lameopts cbr:br=128 -pp=ci dvb://<replaceable>R1</replaceable> -</screen> -</para> - -<para> -Read the man page for a list of options that you can pass to the -DVB input module. -</para> - -<formalpara><title>FUTURE</title> -<para> -If you have questions or want to hear feature announcements and take part in -discussions on this subject, join our -<ulink url="http://lists.mplayerhq.hu/mailman/listinfo/mplayer-dvb">MPlayer-DVB</ulink> -mailing list. Please remember that the list language is English. -</para> -</formalpara> - -<para> -In the future you may expect the ability to display OSD and subtitles using -the native OSD feature of DVB cards. -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="dxr2"> -<title>DXR2</title> - -<para> -<application>MPlayer</application> supports hardware accelerated playback -with the Creative DXR2 card. -</para> - -<para> -First of all you will need properly installed DXR2 drivers. You can find -the drivers and installation instructions at the -<ulink url="http://dxr2.sf.net/">DXR2 Resource Center</ulink> site. -</para> - -<variablelist><title>USAGE</title> -<varlistentry> - <term><option>-vo dxr2</option></term> - <listitem><para>Enable TV output.</para></listitem> -</varlistentry> -<varlistentry> - <term><option>-vo dxr2:x11</option> or <option>-vo dxr2:xv</option></term> - <listitem><para>Enable Overlay output in X11.</para></listitem> -</varlistentry> -<varlistentry> - <term><option>-dxr2 <option1:option2:...></option></term> - <listitem><para> - This option is used to control the DXR2 driver. - </para></listitem> -</varlistentry> -</variablelist> - -<para> -The overlay chipset used on the DXR2 is of pretty bad quality but the -default settings should work for everybody. The OSD may be usable with the -overlay (not on TV) by drawing it in the colorkey. With the default colorkey -settings you may get variable results, usually you will see the colorkey -around the characters or some other funny effect. But if you properly adjust -the colorkey settings you should be able to get acceptable results. -</para> - -<para>Please see the man page for available options.</para> -</sect2> - -<!-- ********** --> - -<sect2 id="dxr3"> -<title>DXR3/Hollywood+</title> - -<para> -<application>MPlayer</application> supports hardware accelerated playback -with the Creative DXR3 and Sigma Designs Hollywood Plus cards. These cards -both use the em8300 MPEG decoder chip from Sigma Designs. -</para> - -<para> -First of all you will need properly installed DXR3/H+ drivers, version 0.12.0 -or later. You can find the drivers and installation instructions at the -<ulink url="http://dxr3.sf.net/">DXR3 & Hollywood Plus for Linux</ulink> -site. <filename>configure</filename> should detect your card automatically, -compilation should go without problems. -</para> - -<!-- FIXME: find a more clear presentation --> -<variablelist> -<title>USAGE</title> -<varlistentry> -<term><option>-vo dxr3:prebuf:sync:norm=x:<replaceable>device</replaceable></option></term> -<listitem><para> -<option>overlay</option> activates the overlay instead of TV-out. It requires -that you have a properly configured overlay setup to work right. The easiest -way to configure the overlay is to first run autocal. Then run mplayer with -dxr3 output and without overlay turned on, run dxr3view. In dxr3view you can -tweak the overlay settings and see the effects in realtime, perhaps this feature -will be supported by the <application>MPlayer</application> GUI in the future. -When overlay is properly set up you will no longer need to use dxr3view. -<option>prebuf</option> turns on prebuffering. Prebuffering is a feature of the -em8300 chip that enables it to hold more than one frame of video at a time. -This means that when you are running with prebuffering -<application>MPlayer</application> will try to keep the video buffer filled -with data at all times. -If you are on a slow machine <application>MPlayer</application> will probably -use close to, or precisely 100% of CPU. -This is especially common if you play pure MPEG streams -(like DVDs, SVCDs a.s.o.) since <application>MPlayer</application> will not have -to reencode it to MPEG it will fill the buffer very fast. -With prebuffering video playback is <emphasis role="bold">much</emphasis> -less sensitive to other programs hogging the CPU, it will not drop frames unless -applications hog the CPU for a long time. -When running without prebuffering the em8300 is much more sensitive to CPU load, -so it is highly suggested that you turn on <application>MPlayer</application>'s -<option>-framedrop</option> option to avoid further loss of sync. -<option>sync</option> will turn on the new sync-engine. This is currently an -experimental feature. With the sync feature turned on the em8300's internal -clock will be monitored at all times, if it starts to deviate from -<application>MPlayer</application>'s clock it will be reset causing the em8300 -to drop any frames that are lagging behind. -<option>norm=x</option> will set the TV norm of the DXR3 card without the need -for external tools like em8300setup. Valid norms are 5 = NTSC, 4 = PAL-60, -3 = PAL. Special norms are 2 (auto-adjust using PAL/PAL-60) and 1 (auto-adjust -using PAL/NTSC) because they decide which norm to use by looking at the frame -rate of the movie. norm = 0 (default) does not change the current norm. -<option><replaceable>device</replaceable></option> = device number to use if -you have more than one em8300 card. Any of these options may be left out. -<option>:prebuf:sync</option> seems to work great when playing MPEG-4 (DivX) -movies. People have reported problems using the prebuf option when playing -MPEG-1/2 files. -You might want to try running without any options first, if you have sync -problems, or DVD subtitle problems, give <option>:sync</option> a try. -</para></listitem> -</varlistentry> - -<varlistentry> - <term><option>-ao oss:/dev/em8300_ma-<replaceable>X</replaceable></option></term> - <listitem><para> - For audio output, where <replaceable>X</replaceable> is the device number - (0 if one card). - </para></listitem> -</varlistentry> - -<varlistentry> - <term><option>-af resample=<replaceable>xxxxx</replaceable></option></term> - <listitem><para> - The em8300 cannot play back samplerates lower than 44100Hz. If the sample - rate is below 44100Hz select either 44100Hz or 48000Hz depending on which - one matches closest. I.e. if the movie uses 22050Hz use 44100Hz as - 44100 / 2 = 22050, if it is 24000Hz use 48000Hz as 48000 / 2 = 24000 - and so on. - This does not work with digital audio output (<option>-ac hwac3</option>). - </para></listitem> -</varlistentry> - -<varlistentry> - <term><option>-vf lavc</option></term> - <listitem><para> - To watch non-MPEG content on the em8300 (i.e. MPEG-4 (DivX) or RealVideo) - you have to specify an MPEG-1 video filter such as - <systemitem class="library">libavcodec</systemitem> (lavc). - See the man page for further info about <option>-vf lavc</option>. - Currently there is no way of setting the fps of the em8300 which means that - it is fixed to 30000/1001 fps. - Because of this it is highly recommended that you use - <option>-vf lavc=<replaceable>quality</replaceable>:25</option> - especially if you are using prebuffering. Then why 25 and not 30000/1001? - Well, the thing is that when you use 30000/1001 the picture becomes a bit - jumpy. - The reason for this is unknown to us. - If you set it to somewhere between 25 and 27 the picture becomes stable. - For now all we can do is accept this for a fact. - </para></listitem> -</varlistentry> - -<varlistentry> - <term><option>-vf expand=-1:-1:-1:-1:1</option></term> - <listitem><para> - Although the DXR3 driver can put some OSD onto the MPEG-1/2/4 video, it has - much lower quality than <application>MPlayer</application>'s traditional OSD, - and has several refresh problems as well. The command line above will firstly - convert the input video to MPEG-4 (this is mandatory, sorry), then apply an - expand filter which won't expand anything (-1: default), but apply the normal - OSD onto the picture (that's what the "1" at the end does). - </para></listitem> -</varlistentry> - -<varlistentry> - <term><option>-ac hwac3</option></term> - <listitem><para> - The em8300 supports playing back AC-3 audio (surround sound) through the - digital audio output of the card. See the <option>-ao oss</option> option - above, it must be used to specify the DXR3's output instead of a sound card. - </para></listitem> -</varlistentry> -</variablelist> -</sect2> -</sect1> - - -<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - - -<sect1 id="zr"> -<title>Zr</title> - -<para> -This is a display-driver (<option>-vo zr</option>) for a number of MJPEG -capture/playback cards (tested for DC10+ and Buz, and it should work for the -LML33, the DC10). The driver works by encoding the frame to JPEG and then -sending it to the card. For the JPEG encoding -<systemitem class="library">libavcodec</systemitem> -is used, and required. With the special <emphasis>cinerama</emphasis> mode, -you can watch movies in true wide screen provided that you have two beamers -and two MJPEG cards. Depending on resolution and quality settings, this driver -may require a lot of CPU power, remember to specify <option>-framedrop</option> -if your machine is too slow. Note: My AMD K6-2 350MHz is (with -<option>-framedrop</option>) quite adequate for watching VCD sized material and -downscaled movies. -</para> - -<para> -This driver talks to the kernel driver available at -<ulink url="http://mjpeg.sf.net"/>, so -you must get it working first. The presence of an MJPEG card is autodetected by -the <filename>configure</filename> script, if autodetection fails, force -detection with -<screen>./configure --enable-zr</screen> -</para> - -<para> -The output can be controlled by several options, a long description of the -options can be found in the man page, a short list of options can be viewed -by running -<screen>mplayer -zrhelp</screen> -</para> - -<para> -Things like scaling and the OSD (on screen display) are not handled by -this driver but can be done using the video filters. For example, suppose -that you have a movie with a resolution of 512x272 and you want to view it -fullscreen on your DC10+. There are three main possibilities, you may scale -the movie to a width of 768, 384 or 192. For performance and quality reasons, -I would choose to scale the movie to 384x204 using the fast bilinear software -scaler. The command line is -<screen> -mplayer -vo zr -sws 0 -vf scale=384:204 <replaceable>movie.avi</replaceable> -</screen> -</para> - -<para> -Cropping can be done by the <option>crop</option> filter and by this -driver itself. Suppose that a movie is too wide for display on your Buz and -that you want to use <option>-zrcrop</option> to make the movie less wide, -then you would issue the following command -<screen> -mplayer -vo zr -zrcrop 720x320+80+0 <replaceable>benhur.avi</replaceable> -</screen> -</para> - -<para> -if you want to use the <option>crop</option> filter, you would do -<screen> -mplayer -vo zr -vf crop=720:320:80:0 <replaceable>benhur.avi</replaceable> -</screen> -</para> - -<para> -Extra occurrences of <option>-zrcrop</option> invoke -<emphasis>cinerama</emphasis> mode, i.e. you can distribute the movie over -several TVs or beamers to create a larger screen. -Suppose you have two beamers. The left one is connected to your -Buz at <filename>/dev/video1</filename> and the right one is connected to -your DC10+ at <filename>/dev/video0</filename>. The movie has a resolution -of 704x288. Suppose also that you want the right beamer in black and white and -that the left beamer should have JPEG frames at quality 10, then you would -issue the following command -<screen> -mplayer -vo zr -zrdev /dev/video0 -zrcrop 352x288+352+0 -zrxdoff 0 -zrbw \ - -zrcrop 352x288+0+0 -zrdev /dev/video1 -zrquality 10 \ - <replaceable>movie.avi</replaceable> -</screen> -</para> - -<para> -You see that the options appearing before the second <option>-zrcrop</option> -only apply to the DC10+ and that the options after the second -<option>-zrcrop</option> apply to the Buz. The maximum number of MJPEG cards -participating in <emphasis>cinerama</emphasis> is four, so you can build a -2x2 vidiwall. -</para> - -<para> -Finally an important remark: Do not start or stop XawTV on the playback device -during playback, it will crash your computer. It is, however, fine to -<emphasis role="bold">FIRST</emphasis> start XawTV, -<emphasis role="bold">THEN</emphasis> start <application>MPlayer</application>, -wait for <application>MPlayer</application> -to finish and <emphasis role="bold">THEN</emphasis> stop XawTV. -</para> -</sect1> - -<!-- ********** --> - -<sect1 id="blinkenlights"> -<title>Blinkenlights</title> - -<para> -This driver is capable of playback using the Blinkenlights UDP protocol. If you -don't know what <ulink url="http://www.blinkenlights.de/">Blinkenlights</ulink> -or its successor -<ulink url="http://www.blinkenlights.de/arcade/">Arcade</ulink> -are, find it out. Although this is most probably the least used video output -driver, without a doubt it is the coolest <application>MPlayer</application> -has to offer. Just watch some of the -<ulink url="http://www.blinkenlights.de/video.en.html">Blinkenlights documentation videos</ulink>. -On the Arcade video you can see the Blinkenlights output driver in -action at 00:07:50. -</para> -</sect1> - - -<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - - -<sect1 id="tvout"> -<title>TV-out support</title> - -<sect2 id="tvout-mga-g400"> -<title>Matrox G400 cards</title> - -<para> -Under Linux you have two methods to get G400 TV out working: -</para> - -<important> -<para> -for Matrox G450/G550 TV-out instructions, please see the next section! -</para> -</important> - -<variablelist> -<varlistentry> - <term>XFree86</term> - <listitem> - <para> - Using the driver and the HAL module, available from the <ulink - url="http://www.matrox.com">Matrox site</ulink>. This will give you X - on the TV. - </para> - <para> - <emphasis role="bold">This method doesn't give you accelerated playback</emphasis> - as under Windows! The second head has only YUV framebuffer, the - <emphasis>BES</emphasis> (Back End Scaler, the YUV scaler on - G200/G400/G450/G550 cards) doesn't work on it! The windows driver somehow - workarounds this, probably by using the 3D engine to zoom, and the YUV - framebuffer to display the zoomed image. If you really want to use X, use - the <option>-vo x11 -fs -zoom</option> options, but it will be - <emphasis role="bold">SLOW</emphasis>, and has - <emphasis role="bold">Macrovision</emphasis> copy protection enabled - (you can "workaround" Macrovision using this - <ulink url="http://avifile.sf.net/mgamacro.pl">Perl script</ulink>). - </para> - </listitem> -</varlistentry> -<varlistentry> - <term>Framebuffer</term> - <listitem> - <para> - Using the <emphasis role="bold">matroxfb modules</emphasis> in the 2.4 - kernels. 2.2 kernels don't have the TV-out feature in them, thus unusable - for this. You have to enable ALL matroxfb-specific features during - compilation (except MultiHead), and compile them into - <emphasis role="bold">modules</emphasis>! - You'll also need to enable I2C and put the tools - <application>matroxset</application>, <application>fbset</application> - and <application>con2fb</application> in your path. - </para> - - <procedure> - <step><para> - Then load the <systemitem>matroxfb_Ti3026, matroxfb_maven, i2c-matroxfb, - matroxfb_crtc2</systemitem> modules into your kernel. Your text-mode - console will enter into framebuffer mode (no way back!). - </para></step> - <step><para> - Next, set up your monitor and TV to your liking using the above tools. - </para></step> - <step><para> - Yoh. Next task is to make the cursor on tty1 (or whatever) to - disappear, and turn off screen blanking. Execute the following - commands: - - <screen> -echo -e '\033[?25l' -setterm -blank 0<!-- - --></screen> - or - <screen> -setterm -cursor off -setterm -blank 0<!-- - --></screen> - - You possibly want to put the above into a script, and also clear the - screen. To turn the cursor back: - <screen>echo -e '\033[?25h'</screen> or - <screen>setterm -cursor on</screen> - </para></step> - <step><para> - Yeah kewl. Start movie playing with - <screen> -mplayer -vo mga -fs -screenw 640 -screenh 512 <replaceable>filename</replaceable><!-- - --></screen> - - (If you use X, now change to matroxfb with for example - <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F1</keycap></keycombo>.) - Change <literal>640</literal> and <literal>512</literal> if you set - the resolution to other... - </para></step> - <step><para> - <emphasis role="bold">Enjoy the ultra-fast ultra-featured Matrox TV - output (better than Xv)!</emphasis> - </para></step> - </procedure> - </listitem> -</varlistentry> -</variablelist> -</sect2> - -<!-- ********** --> - -<sect2 id="tv-out_matrox_g450"> -<title>Matrox G450/G550 cards</title> - -<para> -TV output support for these cards has only been recently introduced, and is -not yet in the mainstream kernel. -Currently the <emphasis role="bold">mga_vid</emphasis> module can't be used -AFAIK, because the G450/G550 driver works only in one configuration: the first -CRTC chip (with much more features) on the first display (on monitor), -and the second CRTC (no <emphasis role="bold">BES</emphasis> - for -explanation on BES, please see the G400 section above) on TV. So you can only -use <application>MPlayer</application>'s <emphasis>fbdev</emphasis> output -driver at the present. -</para> - -<para> -The first CRTC can't be routed to the second head currently. The author of the -kernel matroxfb driver - Petr Vandrovec - will maybe make support for this, by -displaying the first CRTC's output onto both of the heads at once, as currently -recommended for G400, see the section above. -</para> - -<para> -The necessary kernel patch and the detailed HOWTO is downloadable from -<ulink url="http://www.bglug.ca/matrox_tvout/"/> -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="tv-out_matrox_cable"> -<title>Building a Matrox TV-out cable</title> -<para> -No one takes any responsibility, nor guarantee for any damage caused -by this documentation. -</para> - -<formalpara><title>Cable for G400</title> -<para> -The CRTC2 connector's fourth pin is the composite video signal. The -ground are the sixth, seventh and eighth pins. (info contributed -from Balázs Rácz) -</para> -</formalpara> - -<formalpara><title>Cable for G450</title> -<para> -The CRTC2 connector's first pin is the composite video signal. The -ground are the fifth, sixth, seventh, and fifteenth (5, 6, 7, 15) -pins. (info contributed from Balázs Kerekes) -</para> -</formalpara> -</sect2> - -<!-- ********** --> - -<sect2 id="tvout-ati"> -<title>ATI cards</title> - -<formalpara><title>PREAMBLE</title> -<para> -Currently ATI doesn't want to support any of its TV-out chips under Linux, -because of their licensed Macrovision technology. -</para> -</formalpara> - -<itemizedlist> -<title>ATI CARDS TV-OUT STATUS ON LINUX</title> -<listitem><para> - <emphasis role="bold">ATI Mach64</emphasis>: - supported by <ulink url="http://gatos.sf.net">GATOS</ulink>. -</para></listitem> -<listitem><para> - <emphasis role="bold">ASIC Radeon VIVO</emphasis>: - supported by <ulink url="http://gatos.sf.net">GATOS</ulink>. -</para></listitem> -<listitem><para> - <emphasis role="bold">Radeon</emphasis> and <emphasis role="bold">Rage128</emphasis>: - supported by <application>MPlayer</application>! - Check <link linkend="vesa">VESA driver</link> and - <link linkend="vidix">VIDIX</link> sections. -</para></listitem> -<listitem><para> - <emphasis role="bold">Rage Mobility P/M, Radeon, Rage 128, Mobility M3/M4</emphasis>: - supported by - <ulink url="http://www.stud.uni-hamburg.de/users/lennart/projects/atitvout/">atitvout</ulink>. -</para></listitem> -</itemizedlist> - -<para> -On other cards, just use the <link linkend="vesa">VESA</link> driver, -without VIDIX. Powerful CPU is needed, though. -</para> - -<para> -Only thing you need to do - <emphasis role="bold">Have the TV connector -plugged in before booting your PC</emphasis> since video BIOS initializes -itself only once during POST procedure. -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="tvout-nvidia"> -<title>nVidia</title> - -<para> -First, you MUST download the closed-source drivers from -<ulink url="http://nvidia.com"/>. -I will not describe the installation and configuration process because it does -not cover the scope of this documentation. -</para> - -<para> -After XFree86, XVideo, and 3D acceleration is properly working, edit your -card's Device section in the <filename>XF86Config</filename> file, according -to the following example (adapt for your card/TV): - -<programlisting> -Section "Device" - Identifier "GeForce" - VendorName "ASUS" - BoardName "nVidia GeForce2/MX 400" - Driver "nvidia" - #Option "NvAGP" "1" - Option "NoLogo" - Option "CursorShadow" "on" - - Option "TwinView" - Option "TwinViewOrientation" "Clone" - Option "MetaModes" "1024x768,640x480" - Option "ConnectedMonitor" "CRT, TV" - Option "TVStandard" "PAL-B" - Option "TVOutFormat" "Composite" -EndSection -</programlisting> -</para> - -<para> -Of course the important thing is the TwinView part. -</para> -</sect2> - -<!-- ********** --> - -<sect2 id="tvout-neomagic"> -<title>NeoMagic</title> - -<para> -The NeoMagic chip is found in a variety of laptops, some of them are equipped -with a simple analog TV encoder, some have a more advanced one. -<itemizedlist> -<listitem><para> - <emphasis role="bold">Analog encoder chip</emphasis>: - It has been reported that reliable TV out can be obtained by using - <option>-vo fbdev</option> or <option>-vo fbdev2</option>. - You need to have vesafb compiled in your kernel and pass - the following parameters on the kernel command line: - <option>append="video=vesafb:ywrap,mtrr" vga=791</option>. - You should start <application>X</application>, then switch to console mode - with e.g. - <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F1</keycap></keycombo>. - If you fail to start <application>X</application> before running - <application>MPlayer</application> from the console, the video - becomes slow and choppy (explanations are welcome). - Login to your console, then initiate the following command: - - <screen>clear; mplayer -vo fbdev -zoom -cache 8192 dvd://</screen> - - Now you should see the movie running in console mode filling up about - half your laptop's LCD screen. To switch to TV hit - <keycombo><keycap>Fn</keycap><keycap>F5</keycap></keycombo> three times. - Tested on a Tecra 8000, 2.6.15 kernel with vesafb, ALSA v1.0.10. -</para></listitem> -<listitem> - <para> - <emphasis role="bold">Chrontel 70xx encoder chip</emphasis>: - Found in IBM Thinkpad 390E and possibly other Thinkpads or notebooks. - </para><para> - You must use <option>-vo vesa:neotv_pal</option> for PAL or - <option>-vo vesa:neotv_ntsc</option> for NTSC. - It will provide TV output function in the following 16 bpp and 8 bpp modes: - </para> - <itemizedlist> - <listitem><para>NTSC 320x240, 640x480 and maybe 800x600 too.</para></listitem> - <listitem><para>PAL 320x240, 400x300, 640x480, 800x600.</para></listitem> - </itemizedlist> - <para>Mode 512x384 is not supported in BIOS. You must scale the image - to a different resolution to activate TV out. If you can see an image on the - screen in 640x480 or in 800x600 but not in 320x240 or other smaller - resolution you need to replace two tables in <filename>vbelib.c</filename>. - See the vbeSetTV function for details. Please contact the author in this case. - </para> - <para> - Known issues: VESA-only, no other controls such as brightness, contrast, - blacklevel, flickfilter are implemented. - </para> -</listitem> -</itemizedlist> +OUTDATED CONTENT REMOVED </para> -</sect2> -</sect1> </chapter> |