Multimedia Dynamite

What should the Linux movie player of your dreams do?
It should play any movie/video that you throw at it. No
questions asked—just play. It should allow seeking
and volume control with the keyboard and mouse. It should
work with an infrared remote controller and also play
television. It should play DVDs and VCDs too.
MPlayer can do all of this and much, much more.

MPlayer also is an award-winning, mature, open-source program that still
is actively in development. Perhaps one day in the not-too-distant
future,
support for DVD menus, color subtitles, picture in picture video,
MIDI and audio effects plugins like the ones for SoX
will be added.

MPlayer is admirably stable for the job it does. However, it does
crash under certain circumstances, such as with certain video drivers.

It is a mature application that has no parallel. MEncoder, its companion
video encoder program, does a much better job than FFMPEG
in transcoding videos, although it is a bit difficult to use and learn.

Now, let's take a look at MPlayer's magic. The following command plays
a stream URL after resampling it to 48,000Hz and combining channels
into left-right stereo:

You can open the stream file from another terminal window with this command:

$ mplayer stream.aac

Then what happens?
The first instance of MPlayer continues to dump the network stream to a
file and the second plays it for you—time-shifted Internet radio.
Cool, eh?

Most of the switches are not necessary to accomplish this, but they show
MPlayer's ability to use the Linux command line so elegantly.
The -softvol and -softvol-max switches invoke the software volume
control feature of MPlayer. It reduces the signal-to-noise ratio, but
it can amplify the signal to very high levels.

The volnorm=2:0.5 filter invokes the volume normalization audio
filter. The first argument, 2, specifies that several samples are to be
used to smooth the volume variations. The 0.5 sets the maximum amplitude
to which you want the volume normalized.
As you can see, MPlayer provides a high level of customization.

The other options on the command line should not be difficult to decipher.

Playlists

The following is a command similar to the first one above. In this case, however,
you specify a playlist URL. Unlike the above command, this one may
not work for you, depending on whether the file happens to be
available from the SHOUTcast site when you try it:

The following variant shuffles the list and plays songs in random
order without repeating songs:

$ mplayer -shuffle -playlist ~/playlist.txt

Naturally, MPlayer is a media player. You don't have to limit yourself
to audio files. You could add any MPlayer-playable media file into the
mix, including videos, movies, television, radio and, of course, Internet
streams.

In addition to this simple line-based playlist format, MPlayer also has
excellent support for ASX, M3U and other popular playlist formats.

Special Effects

There is good support for audio effects, and the karaoke effect
especially gets
interesting with certain songs. It is not perfect, but you can attenuate
the voice in a song a great deal. Use the following command to activate
karaoke mode:

$ mplayer -af karaoke song.mp3

MPlayer also has a ten-octave band equalizer. The following command
ignores
the middle frequency bands and amplifies the frequencies around 31.25Hz by 7dB, 62.5Hz by 8dB, 125Hz by 5dB and all of the frequencies
around 4, 8 and 16Hz are attenuated by 2dB:

$ mplayer -af equalizer=7:8:5:0:0:0:-2:-2:-2 video.mpg

The following command gives a live effect to playback. Try it with songs
that sound monotonous:

$ mplayer -af extrastereo song.mp3

You can issue a command like the following to play the third song
five times:

$ mplayer song1.mp3 song2.ogg file.wav -loop 5

If you want to repeat the whole list five times, type the
following instead:

$ mplayer { song1.mp3 song2.ogg file.wav } -loop 5

You also can use -loop 0 to play something over and over again.

Additionally, there are many audio effect plugins designed especially for
multichannel and 3-D audio. If you want some really advanced audio
effects, try the SoX Swiss Army knife. It is another
command-line application that excels in professional audio effects.

You can specify multiple audio filters on the command line and they are
applied one after another in a chain.

Figure 1. MPlayer Audio/Video Filter Chaining

What if you like a certain audio filter chain and you want to save the
resulting audio to a file? The following command saves the output
of filtering to the file named filtered.wav rather than playing it:

The lavcresample filter resamples the frequency of audio.ogg to 48,000Hz.

The pan filter is a very powerful and sophisticated filter. It mixes the
input audio channels into the specified output channels in various amplitudes.

In this example, we use the -channels switch to specify four input
channels. The first argument to pan is 2 to specify two output channels.
In the first pair of arguments after that, the 1:0 specifies the amplitude of
the first input channel that is fed into the two output channels. It goes
into the left channel with an amplification factor of 1. The second
input channel goes into the right channel with an amplification factor
of 0.3 (0:0.3), and the third input channel is divided
equally into both output channels (0.5:0.5). The fourth channel goes
into the right channel with an amplification factor of 12.