Mercurial > mplayer.hg
changeset 16391:7a5d36c0633b
MPlayer advanced audio usage guide by Corey Hickey < bugfood-ml AH fatooh POUM org>
(please make sure the doc builds fine)
Original thread:
Date: Sep 4, 2005 1:26 AM
Subject: [MPlayer-DOCS] [PATCH] mplayer advanced audio usage guide
author | gpoirier |
---|---|
date | Sun, 04 Sep 2005 22:29:36 +0000 |
parents | 1a0c19af8c7f |
children | cdd649f1de0b |
files | AUTHORS ChangeLog DOCS/xml/en/usage.xml |
diffstat | 3 files changed, 637 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/AUTHORS Sun Sep 04 21:48:51 2005 +0000 +++ b/AUTHORS Sun Sep 04 22:29:36 2005 +0000 @@ -331,6 +331,7 @@ Hickey, Corey <bugfood-ml@fatooh.org> * telecine/interlacing HOWTO for the MEncoder documentation + * advanced audio usage guide for the MPlayer documentation Hidvégi, Zoltán (Zoli) <mplayer@hzoli.com> * filmdint video filter
--- a/ChangeLog Sun Sep 04 21:48:51 2005 +0000 +++ b/ChangeLog Sun Sep 04 22:29:36 2005 +0000 @@ -8,6 +8,7 @@ which is to be merged into the existing guide * encoding tips for x264 and XviD * how to set up MEncoder for x264 support + * new advanced audio usage guide * Hungarian XML documentation translation finished * Czech documentation translation finished * Italian man page synced
--- a/DOCS/xml/en/usage.xml Sun Sep 04 21:48:51 2005 +0000 +++ b/DOCS/xml/en/usage.xml Sun Sep 04 22:29:36 2005 +0000 @@ -400,4 +400,639 @@ </sect1> + +<sect1 id="advaudio" xreflabel="Advanced Audio"> +<title>Advanced Audio</title> + +<sect2 id="advaudio-surround"> +<title>Surround/Multichannel Playback</title> + +<sect3 id="advaudio-surround-DVD"> +<title>DVDs</title> +<para> +Most DVDs and many other files include surround sound. +<application>MPlayer</application> supports surround playback but does not +enable it by default because stereo equipment is by far more common. To play a +file that has more than two channels of audio use <option>-channels</option>. +For example, to play a DVD with 5.1 audio: + +<screen>mplayer dvd://1 -channels 6</screen> + +Note that despite the name "5.1" there are actually six discrete channels. +If you have surround sound equipment it is safe to put the +<option>channels</option> option in your <application>MPlayer</application> +configuration file <filename>~/.mplayer/config</filename>. For example, to make +quadraphonic playback the default, add this line: + +<programlisting>channels=4</programlisting> + +<application>MPlayer</application> will then output audio in four channels when +all four channels are available. +</para> +</sect3> + + +<sect3 id="advaudio-surround-stereoinfour"> +<title>Playing Stereo Files to Four Speakers</title> + +<para> +<application>MPlayer</application> does not duplicate any channels by default, +and neither do most audio drivers. If you want to do that manually: + +<screen>mplayer <replaceable>filename</replaceable> -af channels=2:2:0:1:0:0</screen> + +See the section on +<link linkend="advaudio-channels-copying">channel copying</link> for an +explanation. +</para> + +</sect3> + + +<sect3 id="advaudio-surround-passthrough"> +<title>AC3/DTS Passthrough</title> + +<para> +DVDs usually have surround audio encoded in AC3 (Dolby Digital) or DTS +(Digital Theater System) format. Some modern audio equipment is capable of +decoding these formats internally. <application>MPlayer</application> can be +configured to relay the audio data without decoding it. This will only work if +you have a S/PDIF (Sony/Philips Digital Interface) jack in your sound card. +</para> + +<para> +If your audio equipment can decode both AC3 and DTS, you can safely enable +passthrough for both formats. Otherwise, enable passthrough for only the format +your equipment supports. +</para> + +<itemizedlist> +<title>To enable passthrough on the command line:</title> +<listitem><para> +For AC3 only, use <option>-ac hwac3</option> +</para></listitem> +<listitem><para> +For DTS only, use <option>-ac hwdts</option> +</para></listitem> +<listitem><para> +For both AC3 and DTS, use <option>-afm hwac3</option> +</para></listitem> +</itemizedlist> + +<itemizedlist> +<title>To enable passthrough in the <application>MPlayer</application> +configuration file: </title> +<listitem><para> +For AC3 only, use <option>ac=hwac3,</option> +</para></listitem> +<listitem><para> +For DTS only, use <option>ac=hwdts,</option> +</para></listitem> +<listitem><para> +For both AC3 and DTS, use <option>-afm hwac3</option> +</para></listitem> +</itemizedlist> + +<para> +Note that there is a comma ("<keycap>,</keycap>") at the end of +<option>ac=hwac3,</option> and <option>ac=hwdts,</option>. This will make +<application>MPlayer</application> fall back to the codecs it normally uses when +playing a file that doesn't have AC3 or DTS audio. <option>afm=hwac3</option> +does not need a comma; <application>MPlayer</application> will fall back anyway +when an audio family is specified. +</para> + +</sect3> + + +<sect3 id="advaudio-surround-matrix"> +<title>Matrix-encoded Audio</title> + +<para> +***TODO*** +This section has not be written yet as we would need some matrix-encoded +samples to test with. +I someone has such files, or would know how to handle them in detail, +please contact us though the mailling list adding [matrix-encoded samples] +to the subject of your mail. +If no such file can be found, this section will just be dropped. +</para> + +<para> +Good links: +<itemizedlist> +<listitem><para> +<ulink url="http://electronics.howstuffworks.com/surround-sound5.htm">http://electronics.howstuffworks.com/surround-sound5.htm</ulink> +</para></listitem> +<listitem><para> +<ulink url="http://www.extremetech.com/article2/0,1697,1016875,00.asp">http://www.extremetech.com/article2/0,1697,1016875,00.asp</ulink> +</para></listitem> +</itemizedlist> +</para> + +</sect3> + + +<sect3 id="advaudio-surround-hrtf"> +<title>Surround Emulation in Headphones</title> + +<para> +<application>MPlayer</application> includes an HRTF (Head Related Transfer +Function) filter based on an MIT project wherein measurements were taken from +microphones mounted on a dummy human head. See the +<ulink url="http://sound.media.mit.edu/KEMAR.html">project page</ulink> for more +information. +</para> + +<para> +Although it is not possible to exactly imitate a surround system, +<application>MPlayer</application>'s HRTF filter does provide more spatially +immersive audio in 2-channel headphones. Regular downmixing simply combines all +the channels into two; besides combining the channels, <option>hrtf</option> +generates subtle echoes, increases the stereo separation slightly, and alters +the volume of some frequencies. Whether HRTF sounds better may be dependant on +the source audio and a matter of personal taste, but it is definitely worth +trying out. +</para> + +<para> +To play a DVD with HRTF: + +<screen>mplayer dvd://1 -channels 6 -af hrtf</screen> + +</para> + +<para> +<option>hrtf</option> only works well with 5 or 6 channels. Also, +<option>hrtf</option> requires 48 kHz audio. DVD audio is already 48 kHz, but if +you have a file with a different sampling rate that you want to play using +<option>hrtf</option> you must resample it: + +<screen>mplayer <replaceable>filename</replaceable> -channels 6 -af resample=48000,hrtf</screen> + +</para> + +</sect3> + + +<sect3 id="advaudio-surround-troubleshooting"> +<title>Troubleshooting</title> + +<para> +If you don't hear any sound out of your surround channels, check your mixer +settings with a mixer program such as <application>alsamixer</application>; +audio outputs are often muted and set to zero volume by default. +</para> + +</sect3> + +</sect2> + + +<sect2 id="advaudio-channels"> +<title>Channel Manipulation</title> + +<sect3 id="advaudio-channels-general"> +<title>General Information</title> + +<para> +Unfortunately, there is no standard for how channels are ordered. The orders +listed below are those of AC3 and are fairly typical; try them and see if your +source matches. Channels are numbered starting with 0. + +<orderedlist spacing="compact"> +<title>Mono</title> +<listitem override="0"><simpara>center</simpara></listitem> +</orderedlist> + +<orderedlist spacing="compact"> +<title>Stereo</title> +<listitem override="0"><simpara>left</simpara></listitem> +<listitem><simpara>right</simpara></listitem> +</orderedlist> + +<orderedlist spacing="compact"> +<title>Quadraphonic</title> +<listitem override="0"><simpara>left front</simpara></listitem> +<listitem><simpara>right front</simpara></listitem> +<listitem><simpara>left rear</simpara></listitem> +<listitem><simpara>right rear</simpara></listitem> +</orderedlist> + +<orderedlist spacing="compact"> +<title>Surround 4.0</title> +<listitem override="0"><simpara>left front</simpara></listitem> +<listitem><simpara>right front</simpara></listitem> +<listitem><simpara>center rear</simpara></listitem> +<listitem><simpara>center front</simpara></listitem> +</orderedlist> + +<orderedlist spacing="compact"> +<title>Surround 5.0</title> +<listitem override="0"><simpara>left front</simpara></listitem> +<listitem><simpara>right front</simpara></listitem> +<listitem><simpara>left rear</simpara></listitem> +<listitem><simpara>right rear</simpara></listitem> +<listitem><simpara>center front</simpara></listitem> +</orderedlist> + +<orderedlist spacing="compact"> +<title>Surround 5.1</title> +<listitem override="0"><simpara>left front</simpara></listitem> +<listitem><simpara>right front</simpara></listitem> +<listitem><simpara>left rear</simpara></listitem> +<listitem><simpara>right rear</simpara></listitem> +<listitem><simpara>center front</simpara></listitem> +<listitem><simpara>subwoofer</simpara></listitem> +</orderedlist> + +</para> + +<para> +The <option>-channels</option> option is used to request the number of +channels from the audio decoder. Some audio codecs use the number of specified +channels to decide if downmixing the source is necessary. Note that this does +not always affect the number of output channels. For example, using +<option>-channels 4</option> to play a stereo MP3 file will still result in +2-channel output since the MP3 codec will not produce the extra channels. +</para> + +<para> +The <option>channels</option> audio filter can be used to create or remove +channels and is useful for controlling the number of channels sent to the sound +card. See the following sections for more information on channel manipulation. +</para> + +</sect3> + + +<sect3 id="advaudio-channels-mono"> +<title>Playing Mono in Two Speakers</title> + +<para> +Mono sounds a lot better when played through two speakers -- especially when +using headphones. Audio files that truly have 1 channel are automatically played +in two speakers; unfortunately, most files with mono sound are actually encoded +as stereo with one channel silent. The easiest and most foolproof way to make +both speakers output the same audio is with the <option>extrastereo</option> +filter: + +<screen>mplayer <replaceable>filename</replaceable> -af extrastereo=0</screen> + +</para> + +<para> +This averages both channels, resulting in both channels being half as loud as +the original. The next sections have examples of other ways to do this without a +volume decrease, but they are more complex and require different options +depending on which channel to keep. If you really need to maintain the volume, +it may be easier to experiment with the <option>volume</option> filter and find +the right value. For example: + +<screen>mplayer <replaceable>filename</replaceable> -af extrastereo=0,volume=5</screen> + +</para> + +</sect3> + + +<sect3 id="advaudio-channels-copying"> +<title>Channel Copying/Moving</title> + +<para> +The <option>channels</option> filter can move any or all channels. Setting up all +the suboptions to channels can be complicated and takes a little care. + +<orderedlist spacing="compact"> +<listitem><para> +Decide how many output channels you need. This is the first suboption. +</para></listitem> +<listitem><para> +Count how many channel moves you will do. This is the second suboption. Each +channel can be moved to several different channels at the same time, but keep in +mind that when a channel is moved (even if to only one destination) the source +channel will be empty unless another channel is moved into it. To copy a +channel, keeping the source the same, simply move the channel into both the +destination and the source. For example: +<programlisting> +channel 2 --> channel 3 +channel 2 --> channel 2 +</programlisting> +</para></listitem> +<listitem><para> +Write out the channel copies as pairs of suboptions. Note that the first channel +is 0, the second is 1, etc. The order of these suboptions does not matter as +long as they are properly grouped into +<replaceable>source:destination</replaceable> pairs. +</para></listitem> +</orderedlist> + +</para> + + +<bridgehead>Example: one channel in two speakers</bridgehead> + +<para> +Here's an example of another way to play one channel in both speakers. Suppose +for this example that the left channel should be played and the right channel +discarded. Following the steps above: +<orderedlist> +<listitem><para> +In order to provide an output channel for each of the two speakers, the first +suboption must be "2". +</para></listitem> +<listitem><para> +The left channel needs to be moved to the right channel, and also must be moved +to itself so it won't be empty. This is a total of two moves, making the second +suboption "2" as well. +</para></listitem> +<listitem><para> +To move the left channel (channel 0) into the right channel (channel 1), the +suboption pair is "0:1". To move the left channel into itself is "0:0". +</para></listitem> +</orderedlist> +Putting that all together gives: + +<screen>mplayer <replaceable>filename</replaceable> -af channels=2:2:0:1:0:0</screen> +</para> + +<para> +The advantage this example has over <option>extrastereo</option> is that the +volume of each output channel is the same as the input channel. The disadvantage +is that the suboptions must be changed to "2:2:1:0:1:1" when the desired audio +is in the right channel. Also, it's more difficult to remember and type. +</para> + +<bridgehead>Example: left channel in two speakers shortcut</bridgehead> + +<para> +There is actually a much easier way to use the <option>channels</option> filter +for playing the left channel in both speakers: + +<screen>mplayer <replaceable>filename</replaceable> -af channels=1</screen> + +The second channel is discarded and, with no further suboptions, the single +remaining channel is left alone. Sound card drivers automatically play +single-channel audio in both speakers. This only works when the desired channel +is on the left. +</para> + +<bridgehead>Example: duplicate front channels to the rear</bridgehead> +<para> +Another common operation is to duplicate the front channels and play them back +on the rear speakers of a quadraphonic setup. +<orderedlist> +<listitem><para> +There should be four output channels. The first suboption is "4". +</para></listitem> +<listitem><para> +Each of the two front channels needs to be moved to the corresponding rear +channel and also to itself. This is four moves, so the second suboption is "4". +</para></listitem> +<listitem><para> +The left front (channel 0) needs to moved to the left rear (channel 2): "0:2". +The left front also needs to be moved to itself: "0:0". The right front (channel +1) is moved to the right rear (channel 3): "1:3", and also to itself: "1:1". +</para></listitem> +</orderedlist> +Combine all the suboptions to get: + +<screen>mplayer <replaceable>filename</replaceable> -af channels=4:4:0:2:0:0:1:3:1:1</screen> + +</para> + +</sect3> + + +<sect3 id="advaudio-channels-mixing"> +<title>Channel Mixing</title> + +<para> +The <option>pan</option> filter can mix channels in user-specified proportions. +This allows for everything the <option>channels</option> filter can do and +more. Unfortunately, the suboptions are much more complicated. +<orderedlist> +<listitem><para> +Decide how many channels to work with. You may need to specify this with +<option>-channels</option> and/or <option>-af channels</option>. Later examples +will show when to use which. +</para></listitem> +<listitem><para> +Decide how many channels to feed into <option>pan</option> (further decoded +channels are discarded). This is the first suboption, and it also controls how +many channels are output. +</para></listitem> +<listitem><para> +The remaining suboptions specify how much of each channel gets mixed into each +other channel. This is the complicated part. To break the task down, split the +suboptions into several sets, one set for each output channel. Each suboption +within a set corresponds to an input channel. The number you specify will be the +percentage of the input channel that gets mixed into the output channel. +</para> +<para> +<option>pan</option> accepts values from 0 to 512, yielding 0% to 51200% of the +original volume. Be careful when using values greater than 1. Not only can this +give you very high volume, but if you exceed the sample range of your sound card +you may hear painful pops and clicks. If you want you can follow +<option>pan</option> with <option>,volume</option> to enable clipping, but it's +best to keep the values of <option>pan</option> low enough that clipping is not +necessary. +</para></listitem> +</orderedlist> +</para> + +<bridgehead>Example: one channel in two speakers</bridgehead> + +<para> +Here is yet another example for playing the left channel in two speakers. Follow +the steps above: +<orderedlist> +<listitem><para> +The number of output channels is 2. Since this is the same as the number of +channels in the input file, neither <option>-channels</option> nor +<option>-af channels</option> needs to be specified. +</para></listitem> +<listitem><para> +<option>pan</option> should receive and output two channels, so the first +suboption is "2". +</para></listitem> +<listitem><para> +Since we have two output channels, there will be two sets of suboptions. Since +there are also two input channels, there will be two suboptions per set. The +left channel should consist of 100% of itself and 0% of the right channel. So, +the first set of suboptions is "1:0". The right channel should be 100% of the +left channel and 0% of itself. This is "1:0" as well. +</para></listitem> +</orderedlist> +Putting those options together gives: + +<screen>mplayer <replaceable>filename</replaceable> -af pan=2:1:0:1:0</screen> + +If the right channel is desired instead of the left, the suboptions to +<option>pan</option> will be "2:0:1:0:1". +</para> + + +<bridgehead>Example: left channel in two speakers shortcut</bridgehead> + +<para> +As with <option>channels</option>, there is a shortcut that only works with the +left channel: + +<screen>mplayer <replaceable>filename</replaceable> -af pan=1:1</screen> + +Since <option>pan</option> has only one channel of input (the other channel is +discarded), there is only one set with one suboption, which specifies that the +only channel gets 100% of itself. +</para> + +<bridgehead>Example: downmixing 6-channel PCM</bridgehead> +<para> +<application>MPlayer</application>'s decoder for 6-channel PCM is not capable of +downmixing. Here's a way to downmix PCM using <option>pan</option>: +<orderedlist> +<listitem><para> +The number of output channels is 2. Since <option>pan</option> will be handling +6 channels, it may be necessary to put <option>,channels=2</option> after pan to +get rid of the extra channels. If your sound card is capable of 6-channel +playback you can skip this, as the discarded channels will be empty by then anyway. +</para></listitem> +<listitem><para> +<option>Pan</option> must receive all six channels to downmix, so the first +suboption is "6". +</para></listitem> +<listitem><para> +With six input channels there will be six suboptions per set. Fortunately, +since we only care about the output of the first two channels, we only need to +make two sets; the remaining four sets can be omitted. Beware that not all +multichannel audio files have the same channel order! This example +demonstrates downmixing a file with the same channels as AC3 5.1: +<programlisting> +0 - front left +1 - front right +2 - rear left +3 - rear right +4 - center front +5 - subwoofer +</programlisting> +The first set of suboptions lists the percentages of the original volume, in +order, at which each channel listed above should be mixed into the front left +channel: "1:0:1:0:0.5:1". For the front right channel, this is "0:1:0:1:0.5:1". +</para></listitem> +</orderedlist> +Put all that together, for: + +<screen>mplayer <replaceable>6-channel.wav</replaceable> -af pan=6:1:0:1:0:0.5:1:0:1:0:1:0.5:1,channels=2</screen> + +The percentages listed above are only a rough example. Feel free to tweak them. +</para> + +<bridgehead>Example: Playing 5.1 audio on big speakers without a subwoofer</bridgehead> + +<para> +If you have a huge pair of front speakers you may not want to waste any money on +buying a subwoofer for a complete 5.1 sound system. If you use +<option>-channels 5</option> to request that liba52 decode 5.1 audio in 5.0, +the subwoofer channel is simply discarded. If you want to distribute the +subwoofer channel yourself you need to downmix manually with +<option>pan</option>: + +<orderedlist> +<listitem><para> +Since <option>pan</option> needs to examine all six channels, specify +<option>-channels 6</option> so liba52 decodes them all. +</para></listitem> +<listitem><para> +<option>pan</option> needs all the channels, so the first suboption is 6 as +well. +</para></listitem> +<listitem><para> +Since the subwoofer channel is the last of six, we can specify five sets of +suboptions and omit the set belonging to the subwoofer channel. Each of those +five sets needs six suboptions so the list will get pretty long. + <itemizedlist spacing="compact"> + <listitem><simpara> + The left front channel should have itself and half the subwoofer channel: + "1:0:0:0:0:0.5" + </simpara></listitem> + <listitem><simpara> + The right front channel should have itself and half the subwoofer channel: + "0:1:0:0:0:0.5" + </simpara></listitem> + <listitem><simpara> + The left rear channel stays the same: + "0:0:1:0:0:0" + </simpara></listitem> + <listitem><simpara> + The right rear channel stays the same: + "0:0:0:1:0:0" + </simpara></listitem> + <listitem><simpara> + The center front channel stays the same: + "0:0:0:0:1:0" + </simpara></listitem> + <listitem><simpara> + The subwoofer channel is left out and it will be silent. + </simpara></listitem> + </itemizedlist> +</para></listitem> +</orderedlist> +Combine all those options to get: + +<screen>mplayer <replaceable>dvd://1</replaceable> -channels 6 -af pan=6:1:0:0:0:0:0.5:0:1:0:0:0:0.5:0:0:1:0:0:0:0:0:0:1:0:0:0:0:0:0:1:0</screen> + +</para> + +</sect3> + +</sect2> + + +<sect2 id="advaudio-volume"> +<title>Software Volume Adjustment</title> + +<para> +Some audio tracks are too quiet to be heard comfortably without amplification. +This becomes a problem when your audio equipment cannot amplify the signal for +you. The <option>-softvol</option> option directs +<application>MPlayer</application> to use an internal mixer. You can then use +the volume adjustment keys (by default <keycap>9</keycap> and +<keycap>0</keycap>) to reach much higher volume levels. Note that this does not +bypass your sound card's mixer; <application>MPlayer</application> only +amplifies the signal before sending it to your sound card. + +The following example is a good start: + +<screen>mplayer <replaceable>quiet-file</replaceable> -softvol -softvol-max 300</screen> + +The <option>-softvol-max</option> option specifies the maximum percentage of the +original volume. For example, <option>-softvol-max 200</option> would allow the +file to be played up to twice as loud. It is safe to specify a large value with +<option>-softvol-max</option>; the higher volume will not be used until you +use the volume adjustment keys. The only disadvantage of a large value is that, +since <application>MPlayer</application> adjusts volume by percentage of the +maximum, you will not have as precise control when using the volume adjustment +keys. +</para> + +<para> +The <option>-softvol</option> option works by controlling the +<option>volume</option> audio filter. If you want to play a file at a certain +volume from the beginning you can specify <option>volume</option> manually: + +<screen>mplayer <replaceable>quiet-file</replaceable> -af volume=10</screen> + +This will play the file with a ten decibel gain. Be careful when using the +<option>volume</option> filter - you could easily hurt your ears if you use +too high a value. Start low and work your way up gradually until you get a feel +for how much adjustment is required. Also, if you specify excessively high +values <option>volume</option> may need to clip the signal to avoid sending your +sound card data that is outside the allowable range. You will hear distortion +when this happens. +</para> + +</sect2> + +</sect1> + </chapter>