MPlayer/Usage

From Gentoo Linux Wiki

Jump to: navigation, search

Contents

[edit] Command-Line Arguments

MPlayer has a lot of options for playback. See man mplayer if you're ambitious.

Tip: If you have Konqueror installed, you can read the manpage in the browser by opening the URL man:/mplayer

As a general rule, the order of the arguments you pass to mplayer won't matter. If you've seen some examples before, you can switch around the options in any order, and things will work fine.

So, something like this:

mplayer dvd://5 -chapter 12 -ao oss -vo svga

would be the same as this:

mplayer -chapter 12 -vo svga dvd://5 -ao oss

The examples included in this guide will try to display them in a logical and consistent presentation so you can more easily distinguish which options are being passed.

[edit] Configuration Files

MPlayer stores per-user config files in the ~/.mplayer directory and system settings in /etc/mplayer.conf. For mplayer, you want to modify the file ~/.mplayer/config.

Arguments that you would normally pass with mplayer would be put in the config file in format argument=option,option. If an argument has suboptions, each one is separated with a colon.

For example, if we always wanted to use these playback options:

mplayer dvd:// -vo xv -ao alsa -channels 4 -alang=en,es

this is what your ~/.mplayer/config would include:

File: ~/.mplayer/config
vo=xv
ao=alsa
channels=4
alang=en,es

and you would then get the same result when running this command:

mplayer dvd://

[edit] Watching Videos

Once you have MPlayer installed, you're ready to watch something! All you will need to do is run mplayer, and then the file you want to watch.

mplayer movie.avi

[edit] Keyboard Navigation

For those of you who don't like looking through MAN pages, here are some of the keys to control playback:

  • <- and -> seeks backward/forward 10 seconds
  • up and down seeks backward/forward 1 minute
  • pgup and pgdown seeks backward/forward 10 minutes
  • < and > backward and forward in playlist
  • p or spacebar pause / unpause
  • q or ESC stop playing and quit
  • / and * or 9 and 0 to decrease/increase volume
  • m mutes sound
  • # cycles through available audio tracks
  • f toggles fullscreen (see also -fs)
  • T toggles stay-on-top (see also -ontop)
  • b and j toggles through available subtitles

[edit] General Playback Options

Once again, these are only a few of the many options available that most people might be looking for. See the MAN page for more details. Almost all of these descriptions are taken straight from the man.

  • -quiet to display less console output
  • -v or -verbose to display more console output
  • -loop <number> loops movie playback <number> times. 0 means forever.
  • -playlist <filename> plays a filelist. May be required for some streaming video.
  • -cache <kBytes> sets "how much memory (in kBytes) to use when precaching a file or URL. Especially useful on slow media."
  • -cache-min <percentage> - "Playback will start when the cache has been filled up to <percentage> of the total."
  • -channels <number> changes the number of playback channels. See the man for a lengthier explanation on how this one works.
    • 2 - stereo (default)
    • 4 - surround
    • 6 - full 5.1
  • -forceidx - "Force index rebuilding. Useful for files with broken index (A/V desync, etc). This will enable seeking in files where seeking was not possible."
  • -srate <Hz> - "Selects the output sample rate to be used (of course sound cards have limits on this)."
  • -ss <time> - "Seek to given time position." In other words, starts playback at the specified time index.

Seeks to 56 seconds:

mplayer movie.avi -ss 56

seeks to 1 hour 10 minutes:

mplayer movie.avi -ss 01:10:00

[edit] Video Out Drivers

MPlayer has a lot of video out options. This will cover some of the more basic ones.

First of all, when you installed mplayer, there are a number of video output drivers you can use. You can see your list of possibilities by running:

mplayer -vo help

For example, if you compiled it with X in your USE flags, then you will see x11 in the list.

In each option below, if you want to use that video-out option, use -vo on the command line, or add vo=<value> to your config file.

Here is a short explanation on some of the video output options.

  • x11 is the most basic of video out options for display on X11 displays (your window manager). From the man page, "Shared memory video output driver without hardware acceleration that works whenever X11 is present."
  • xv is the next step up if did want to use hardware acceleration, and your video card supports it, and you installed mplayer with the xv USE flag. "If you cannot use a hardware specific driver, this is probably the best option." If unsure, use this option as your default.
  • xvmc can be very fast with nvidia closed source drivers. to get this to work you might need to make /etc/X11/XvMCConfig. I needed to add /usr/lib/libXvMCNVIDIA.so to my XvMCConfig, and you should install mplayer with the xvmc USE flag. If it is not working also try to pass -vc ffmpeg12mc (eg mplayer -vo xvmc -vc ffmpeg12mc dvd://1)
  • sdl goes through the libsdl layer. SDL stands for Simple Directmedia Layer and is actually just a wrapper library that will use probably your best options anyway, assuming you installed the SDL libraries with the correct USE flags. You can always use this one if you want, and let SDL decide on the best output device to use for you.

See the man page for more options specific to using SDL.

  • gl and gl2 use the OpenGL video output driver. "Intended to work even with the most simple OpenGL implementations." see the man for more options specific to this driver.
  • There are also a few framebuffer output devices: fbcon for using /dev/fb0, vesa for any VESA VBA 2.0 compatible card, svga for using the svga library, and directfb for using DirectFB.
  • If you don't want to output any video at all (for whatever reason), just use the null driver.
  • aa and caca for ASCII art and color ASCII, respectively, which actually look pretty good sometimes.

There are still a few more drivers, but most desktop users will want to use one of the above.

[edit] Video Out Options

Along with a wide selection of output drivers, MPlayer also offers you lots of ways to tweak the visual experience as well. Here are a few of the more common options available. Please note that some of these are only available while using certain video output drivers. See the man page for details.

  • -display <name> (X11 only)

"Specify the hostname and display number of the X server you want to display on." The default will, of course, use the display you are already in.

  • -fs enables fullscreen playback.
  • -ontop keeps MPlayer playback on top of other windows.

"Supported by video output drivers which use X11, except SDL, as well as directx and gl2."

  • -panscan <0.0-1.0> for pan and scan playback.

"Enables pan-and-scan functionality (cropping the sides of e.g. a 16:9 movie to make it fit a 4:3 display without black bands). The range controls how much of the image is cropped. Only works with the xv, xmga, mga, gl, quartz and xvidix video output drivers."

  • -rootwin plays the movie in the desktop background.

"Desktop background images may cover the movie window, though. Only works with the x11, xv, xmga, xvidix, quartz and directx video output drivers."

  • -stop-xscreensaver (X11 only)

"Turns off xscreensaver at startup and turns it on again on exit."

If you want to add any of these options to your ~/.mplayer/config just add =1 to the option:

File: ~/.mplayer/config
stop-xscreensaver=1

[edit] Watching DVDs

If you installed MPlayer with support for DVD playback, then you have a few more options.

First, playing a DVD:

mplayer dvd://

MPlayer will look for the longest title on the DVD and playback that file. In most cases the longest title will be the actual movie (on a DVD movie), and it will show that video.

If you want to play a different title other than the default one, you can specify it as a number after the dvd:// option. This example will play title three:

mplayer dvd://3

Most DVDs that are movies will also be split up into chapters. You can specify a chapter for playback by passing the -chapter argument. This example will play the default title, and the second chapter:

mplayer dvd:// -chapter 2

If You have got image of DVD ( in .mdf or .iso file ), You can also watch it without burning. Just mount it ( using -o loop ) and then:

mplayer -dvd-device /mnt/iso_image dvd://

[edit] DVD Audio Languages

A lot of movie DVDs these days come with more than one audio track in different languages.

MPlayer will (usually) default to first audio language track (I think), but if you need to change it, you can use the -alang argument along with the language code.

This example will always play the English audio track:

mplayer dvd:// -alang en

This example plays the Spanish audio track:

mplayer dvd:// -alang es

You can also pass more than one language with the argument, so if the first is not available, it will fall back to the second, and then the next available:

mplayer dvd:// -alang hu,en,es

For more information about languages, see Demuxer/Stream Options in the man page.

[edit] DVD Surround Sound

As you are probably aware, a lot of DVDs have their audio stream in surround sound stereo, or more than two channels. By default, MPlayer will downplay all the extra channels to stereo (two channel). This can be changed by using the -channels argument.

This example is the same as the default -- play a DVD in 2-channel stereo mode:

mplayer dvd:// -channels 2

For surround sound, change the number to four:

mplayer dvd:// -channels 4

For full 5.1 surround sound, change the number to six:

mplayer dvd:// -channels 6

To emulate surround sound in headphones (or stereo speakers):

mplayer dvd:// -channels 6 -af resample=48000,hrtf

For more information about how MPlayer handles channels, see Demuxer/Stream Options in the man page.

For help with sending the audio stream straight to your receiver, see Dolby Digital and DTS.

[edit] Regional Support

If you get errors like this when watching DVDs:

libdvdread: Invalid IFO for title 2 (VTS_02_0.IFO).
Cannot open the IFO file for DVD title 2.

then you can install regionset:

emerge -av regionset

Run it and follow the prompts to set your player's region code correctly (note there is a hardware limitation on your drive how many times you can change the region code, just running regionset will show you this information):

Code: regionset
regionset version 0.1 -- reads/sets region code on DVD drives
Current Region Code settings:
RPC Phase: II
type: NONE
vendor resets available: 4
user controlled changes resets available: 5
drive plays discs from region(s):, mask=0xFF
Would you like to change the region setting of your drive? [y/n]:y
Enter the new region number for your drive [1..8]:2
New mask: 0xFFFFFFFD, correct? [y/n]:y
Region code set successfully!

See this for more information.

[edit] Watching Movies on a Widescreen Monitor

DVDs usually come in either 720x480 (ratio 3:2 or 1.5) for NTSC, and 720x576 (ratio 4:3 or 1.25) for PAL, but when watching DVDs that come in widescreen on a widescreen monitor, some of the picture space is taken up by black bars on the top and bottom, and these need to be removed to get the correct aspect ratio.

First, we must detect the amount of the movie we need to crop. This can be done quite simply with mplayer:

mplayer -vf cropdetect dvd://

This command produces a great amount of output, such as

Code: mplayer -vf cropdetect dvd://
crop area: X: 176..548  Y: 74..362  (-vf crop=368:288:178:74)% 2 0 69%
crop area: X: 136..587  Y: 74..371  (-vf crop=448:288:138:80)% 2 0 68%
...
crop area: X: 0..719  Y: 74..501  (-vf crop=720:416:0:80) 0.7% 2 0 66%
crop area: X: 0..719  Y: 74..501  (-vf crop=720:416:0:80) 0.7% 2 0 66%
crop area: X: 0..719  Y: 74..501  (-vf crop=720:416:0:80) 0.7% 2 0 66%

Let the movie run for some time, until the values does not change anymore, and use the value in the parenthesis:

mplayer -vf crop=720:416:0:80 dvd://

This crops the movie, but as the aspect-ratio of the DVD isn't set yet, it doesn't fully work yet. We are able to set the aspect-ratio like this:

mplayer -stop-xscreensaver -vf crop=720:416:0:80 -aspect 4:3 dvd://

There you have it. To fully enjoy widescreen, remember to set monitor-aspect as well. It can be set through commandline ("-monitoraspect=16:10", for example), or through the mplayer config files, either /etc/mplayer.conf or ~/.mplayer/config (monitoraspect = "16:10"). The latter overrides the system default, and the commandline overrides them both.

See this for more information.

For random letterboxed or underscanned files that are not stored on a DVD there is a script under development named fsmplayer available from http://lists.mplayerhq.hu/pipermail/mplayer-users/2006-July/061326.html which automates the task of detecting and issuing the correct cropping command line, and can handle various uncommon cases such as white letterbox bars, files where the "black" level is more like dark gray, and files that have intros and trailers at diferent aspect ratios compared to the main video. This script is intended to be a suitable replacement for invoking mplayer directly, except for dvd and streaming playback (although those features are under consideration).

[edit] Misc. Tips and Tricks

[edit] Get File Details

Use midentify to see some details about your media file.

midentify movie.avi

For some more generic info, you can also run:

file movie.avi

[edit] Turning off Annoyances

[edit] KDE3 Screensaver

The KDE3 Screensaver is not turned off by passing -stop-xscreensaver to MPlayer, the player tells you that it cannot disable it. However, this is remedied with a simple DCOP call:

dcop kdesktop KScreensaverIface enable false

Replace false with true to turn it on again. The list of available screensaver DCOP calls can be retrieved by removing the final two arguments.

[edit] DPMS

If you have DPMS turned on, it may also start in the middle of watching, this is turned off by:

xset -dpms

and pass +dpms instead to turn it back on. For more information on DPMS refer here.

[edit] Automate The Process

This is fairly annoying to have to do everytime before starting MPlayer, so automate the process, put this in your .bashrc or something else sourced at startup:

File: ~/.bashrc
#mplayer wrapper to turn off KDE Screensaver and DPMS
#requires xset

function mplayerwrap {
	dcop kdesktop KScreensaverIface enable false
	xset -dpms
	mplayer "$@"
	xset +dpms
	dcop kdesktop KScreensaverIface enable true
}

#make wrapper execute by default
alias mplayer="mplayerwrap"

This should make the KDE Screensaver and DPMS turn off while watching a movie, and turn back on later.

[edit] Using mplayer in slave mode

From mplayer documentation: "The slave mode allows you to build simple frontends to MPlayer. When run with the -slave option MPlayer will read commands separated by a newline (\n) from stdin. The commands are documented in the slave.txt file."

You can also see the commands by running 'mplayer -input cmdlist'.

There are two ways to run MPlayer in slave mode: directly, or using a fifo.

The first method, you would run mplayer normally, but supress all output. MPlayer will listen for slave commands that you type in.

Code: sample slave commands
$ mplayer -slave -really-quiet
pause
get_time_pos
quit

Or, MPlayer can read commands separated by a newline (\n) from stdin using a named pipe (fifo). We need to create the fifo first:

Code: creating mplayer fifo
# mkfifo /home/dom/.mplayer/pipe

Let start mplayer in slave mode:

Code: starting mplayer in slave mode
# mplayer -slave -idle -input file=/home/dom/.mplayer/pipe

This tells mplayer to read commands from the pipe and not to quit when it doesn't have anything to play. So it will just sit around and wait for commands. Another way to do the same:

Code: starting mplayer in slave mode
# mplayer -ao jack, -menu -fs -fixed-vo -slave -idle -input file=/home/$[USERDIR]/.mplayer/pipe

This tell mplayer to do the same as before, but to test if JACK is running, use it if found for the sound output, try the other sound servers if not found. It will also start in full screen, use a fixed video system for multiples files (one (un)initialization for all files) and turn ON the OSD menu.

I have been using this last command from months and find this slave mode the most robust and fastest way to run mplayer.

Now, we can use the loadfile and loadlist commands as documented in slave.txt:

Code: loading a media file
echo "loadfile my_media_file 1" > /home/dom/.mplayer/pipe

The "1" in the loadfile command tell mplayer to append the file to its playing queue. A value of "0" will stop the current playing if any and start playing this new file.

Code: loading a playlist file
echo "loadlist my_media_file 1" > /home/dom/.mplayer/pipe

This will do the same as loadfile, but for a playlist.

More advanced examples can be found here: Control mplayer with FVWM menus and here: FVWM-Crystal: Music-mplayer control and its wrapper script, now included in FVWM-Crystal-3.0.5. Just run 'emerge fvwm-crystal' if you want to try it.

[edit] See also

Personal tools
In other languages