[ English ] [ Hungarian ] [ German ] [ French ] [ Polish ] [ Italian ]
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 Table of Contents and search for the topic, read the FAQ, or try grepping through the files.
The main rule of this documentation: if it's not documented, it does not exist. If I don't say you encode audio from TV tuner, you can't. A healthy quantity of combining ability is welcomed, though. Good luck. You'll need it :) And for another good advice, let me quote Chris Phillips from the mplayer-users mailing list:
I said a while ago that there is such a difference between a newbie and a dumbass. No matter what you actually know about a system (linux, cars, girls :D) you should ALWAYS be able to take a step back and be objective, otherwise, you're just dumb IMHO. A girl i live with assumed the vacuum cleaner was broken because it didn't suck things up. never thought to change the bag, becasue she'd never done it before... now that's just stupid, not a case of simply not knowing what to do... Simply not being that familiar with your surroundings is no excuse for a) laziness and b) ignorance. So many people seem to see the word "error" and then stop... few seem to actually read the words on the OTHER side of the colon.
MPlayer is a movie player for LINUX (runs on many other Unices, and non-x86 CPUs, see the ports section). It plays most MPEG, VOB, AVI, OGG, VIVO, ASF/WMV, QT/MOV, FLI, RM, NuppelVideo, yuv4mpeg, FILM, RoQ files, supported by many native, XAnim, RealPlayer, and Win32 DLL codecs. You can watch VideoCD, SVCD, DVD, 3ivx, RealMedia, and DivX movies too (and you don't need the avifile library at all!). Another big feature of MPlayer is the wide range of supported output drivers. It works with X11, Xv, DGA, OpenGL, SVGAlib, fbdev, AAlib, DirectFB, but you can use GGI and SDL (and this way all their drivers) and some lowlevel card-specific drivers (for Matrox, 3Dfx and Radeon, Mach64, Permedia3) too! Most of them supports software or hardware scaling, so you can enjoy movies in fullscreen. MPlayer supports displaying through some hardware MPEG decoder boards, such as the DVB and DXR3/Hollywood+. And what about the nice big antialiased shaded subtitles (10 supported types) with European/ISO 8859-1,2 (Hungarian, English, Czech, etc), Cyrillic, Korean fonts, and the onscreen display (OSD)?
MPlayer is under GPL v2 license.
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
windows media player. Even AVI files without index chunk are playable, and
you can temporarily rebuild their indexes with the -idx
option, or
permanently with MEncoder, thus enabling seeking!
As you see, stability and quality are the most important things,
but the speed is also amazing.
This began a year ago... I (A'rpi) have tried lots of players under linux (mtv,xmps,dvdview,livid/oms,videolan, xine,xanim,avifile,xmmp) but they all have some problem. Mostly with special files or with audio/video sync. Most of them is unable to play both MPEG1, MPEG2 and AVI (DivX) files. Many players have image quality or speed problems too. So I've decided to write/modify one...
In this chapter I'll try to guide you through the compiling and configuring process of MPlayer. It's not easy, but it won't necessarily be hard. If you experience a different behavior than what I explain, please search through this documentation and you'll find your answers. If you see links, please follow them and read carefully what they contain. It will take some time, but it DOES worth it.
You need a fairly recent system. On Linux, 2.4.x kernels are recommended.
libvorbis
properly. Use deb/rpm packages if available, or
compile from
source
(this is a nightly updated tarball of Vorbis CVS).There are generally two kind of video cards. One kind (the newer cards) has hardware scaling and YUV acceleration support, the other cards don't.
They can display and scale (zoom) the picture to any size that fits in their memory, with small CPU usage (even when zooming), thus fullscreen playing is nice and very fast.
Fullscreen playing can be achieved by either enabling software scaling
(use the -zoom
or -vop scale
option, but I warn you: this is slow), or switching to a small resolution
video mode, for example 352x288. If you don't have YUV acceleration, the
latter method is recommended. Video mode switching can be enabled by
using the -vm
option and it works with the following drivers:
-bpp 8
.Then build MPlayer:
./configure make make install
At this point, MPlayer is ready to use. The directory
$PREFIX/share/mplayer
contains the codecs.conf
file, which is used to tell the program all the codecs and their
capabilities. This file should always be kept up to date together with the
main binary.
Check if you have codecs.conf
in your home directory
(~/.mplayer/codecs.conf
) left from old MPlayer versions, and remove it.
Debian users can build a .deb
package for themselves,
it's very simple. Just exec fakeroot debian/rules binary
in
MPlayer's root directory. See
Debian packaging for detailed
instructions.
Always browse the output of ./configure
, and the
configure.log
file, they contain information about what will be
built, and what will not. You may also want to view config.h
and
config.mak
files.
If you have some libraries installed, but not detected by
./configure
, then check if you also have the proper header files
(usually the -dev packages) and their version matches. The
configure.log
file usually tells you what is missing.
Though not mandatory, the fonts should be installed in order to gain OSD,
and subtitle functionality. Download mp-arial-iso-8859-*.zip
and/or optional (if exists) language updates. See the
Subtitles and OSD section for details.
mkdir ~/.mplayer/font cd ~/.mplayer/font unzip mp-arial-iso-8859-1.zip ln -s ~/.mplayer/font/arial-24 font
The GUI needs GTK (it isn't GTK, but the panels are). The skins are stored
in PNG format, so gtk, libpng (and their devel stuff) has to be installed.
You can build it by specifying --enable-gui
during
./configure
. Then, to turn on GUI mode, you either
gui=yes
in your config fileln -s $PREFIX/bin/mplayer $PREFIX/bin/gmplayer
,
and call gmplayer
instead.Currently you can't use the -gui
option on the command line,
due to technical reasons.
Hint
Press the middle button (on 2 button mice press left and right simultaneously) to open a GTK menu with a DVD playing option.
As MPlayer doesn't have a skin included, you have to download them if
you want to use the GUI. See the
download page.
They should be extracted to the usual system-wide directory
($PREFIX/share/mplayer/Skin
), or to
$HOME/.mplayer/Skin
. MPlayer by default looks in these
directories for a directory named default, but you can use the
-skin newskin
option, or the skin=newskin
config
file directive to use the skin in */Skin/newskin
directory.
MPlayer can display subtitles along with movie files. Currently the following formats are supported:
VobSub subtitles consist of a big (some megabytes) .SUB file, and optional
.IDX and/or .IFO files.
Usage: if you have files like sample.sub
,
sample.ifo
, sample.idx
- you have to pass the
-vobsub sample -vobsubid
<id>
options (optionally with pathname, of course). The
-vobsubid
option is like -sid
for DVDs, you can
choose between subtitle tracks (languages) with it.
The other formats consist of a single text file containing timing,
placement and text information.
Usage: if you have a file like sample.txt
, you have to pass the
option -sub sample.txt
(optionally with pathname, of course).
-subdelay <sec>
-subfps <rate>
-subpos <0 - 100>
If you experience a growing delay between the movie and the subtitles when
using a MicroDVD subtitle file, most likely the frame rate of the movie and
the subtitle file are different.
Please note that the MicroDVD subtitle
format uses absolute frame numbers for its timing, and therefore the
-subfps
option cannot be used with this format. As
MPlayer has no way to guess the frame rate of the subtitle file, you
have to manually convert the frame rate. There is a little perl script in the
contrib
directory of the MPlayer FTP site to do this conversion
for you.
About DVD subtitles, read the DVD section.
MPlayer introduces a new subtitle format called MPsub. It was designed by me (Gabucino). Basically its main feature is being dynamically time-based (although it has frame-based mode too). Example (from DOCS/tech/mpsub.sub):
# first number : wait this much after previous subtitle disappeared
# second number : display the current subtitle for this many seconds
15 3
A long long, time ago...
0 3
in a galaxy far away...
0 3
Naboo was under an attack.
So you see, the main goal was to make subtitle
editing/timing/joining/cutting easy. And, if you - say - get an SSA
subtitle but it's badly timed/delayed to your version of the movie, you
simply do a mplayer dummy.avi -sub source.ssa -dumpmpsub
.
A dump.mpsub
file will be created in the current directory,
which will contain the source subtitle's text, but in MPsub format.
Then you can freely add/subtract seconds to/from the subtitle.
Subtitles are displayed with a technique called 'OSD', On Screen Display. OSD is used to display current time, volume bar, seek bar etc.
You need an MPlayer font package to be able to use OSD/SUB feature. There are many ways to get it:
-utf8
option or just name the subtitles file <video_name>.utf and have it
in the same dir as the video file. Recoding from different codepages to
utf8 could be done by using konwert (Debian) or iconv (Red Hat)
programs.After that, UNZIP the file you downloaded to ~/.mplayer
or
$PREFIX/share/mplayer
. Then rename or symlink one of them to
font
(like: ln -s ~/.mplayer/arial-24
~/.mplayer/font
). Now you have to see a timer at the upper left corner
of the movie (switch it off with the "o" key).
OSD has 3 states: (switch with 'o')
You can change default behaviour by setting osdlevel=
variable
in config file.
usleep()
to tune A/V sync, with +/- 10ms accuracy. However
sometimes the sync has to be tuned even finer./proc
filesystem.
Use this command to enable RTC for normal users:
echo 1024 > /proc/sys/dev/rtc/max-user-freq
drivers/char/rtc.c
and recompile your kernel. Find the
section that reads
* We don't really want Joe User enabling more * than 64Hz of interrupts on a multi-user machine. */ if ((rtc_freq > 64) && (!capable(CAP_SYS_RESOURCE)))and change the 64 to 1024. You should really know what you are doing, though.
-nortc
switch.
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.-softsleep
option. It has the efficiency of the RTC, but it doesn't use RTC. On the other
hand, it requires more CPU.This section is about how to enable watching/grabbing from V4L compatible TV tuner.
THIS CODE IS CURRENTLY NOT BEING WORKED ON! Do not expect it to work without tweaking/experimenting!
./configure
will autodetect
kernel headers of v4l stuff and the existence of /dev/video*
entries. If they exist, TV support will be built (see the output of
./configure
).Hint
Are the colors messed up? Then your tuner cannot display in YV12 colorspace. Try I420 (-vc rawi420
) or YUY2, UYVY, RGB32 (-vo sdl
) colorspaces. You can specify these with theoutfmt=YV12
option, see below.
on
noaudio
driver
/dev/video0
).device
/dev/video0
.input
freq
outfmt
-vc rawi420
option, because of a fourcc
conflict)).width
height
norm
channel
chanlist
us-bcast, us-cable, europe-west, europe-east, etc
h / k | select previous/next channel | ||
n | change norm | ||
b | change channel list |
Dummy output, to AAlib :)
mplayer -tv on:driver=dummy:width=640:height=480 -vo aa
Input from standard V4L
mplayer -tv on:driver=v4l:width=640:height=480:outfmt=i420 -vc rawi420 -vo xv
Note:
If you have a TV card with an external audio device and get only a black
screen, although input works with xawtv or similar, then try to use the
-noaudio
option. For the example above this would be:
mplayer -tv on:noaudio:driver=v4l:width=640:height=480:outfmt=i420 -vc rawi420 -vo xv
MPlayer utilizes a complex playtree. It consists of global options
written as first (for example mplayer -vfm 5
), and options
written after filenames, that apply only to the given filename/URL/whatever
(for example mplayer -vfm 5 movie1.avi movie2.avi -vfm 4
).
You can group filenames/URLs together using { and }. It's useful with
option -loop: mplayer { 1.avi -loop 2 2.avi } -loop 3
will play files in this order: 1 1 2 1 1 2 1 1 2
file | mplayer [options] [path/]filename | ||
files | mplayer [default options] [path/]filename1 [options for filename1] filename2 [options for filename2] ... | ||
VCD | mplayer [options] -vcd trackno [-cdrom-device /dev/cdrom] | ||
DVD | mplayer [options] -dvd titleno [-dvd-device /dev/dvd] | ||
net | mplayer [options] http://site.com/file.asf (playlists can be used too) |
Latest versions of MPlayer also accepts VCD and DVD tracks in URL style, just like
Xine does: mplayer dvd://1
or mplayer vcd://1
mplayer -vo x11 /mnt/Films/Contact/contact2.mpg mplayer -vcd 2 mplayer -afm 3 /mnt/DVDtrailers/alien4.vob mplayer -dvd 1 -dvd-device /dev/hdc mplayer -abs 65536 -delay -0.4 -nobps ~/movies/test.avi
MPlayer has a fully configurable, command driven, control layer which lets you control MPlayer with keyboard, mouse, joystick or remote control (using LIRC).
<- or -> | seek backward/forward 10 seconds | ||
up or down | seek backward/forward 1 minute | ||
pgup/pgdown | seek backward/forward 10 minutes | ||
< or > | seek backward/forward in playlist | ||
p or SPACE | pause movie (press any key) | ||
q or ESC | stop playing and quit program | ||
+ or - | adjust audio delay by +/- 0.1 second | ||
/ or * | decrease/increase volume | ||
f | toggle fullscreen | ||
o | toggle OSD: none / seek / seek+timer | ||
z or x | adjust subtitle delay by +/- 0.1 second | ||
r or t | adjust subtitle position | ||
HOME or END | go to next/previous playtree entry in the parent list | ||
INSERT or DELETE | go to next/previous alternative source (only available in asx playlist) | ||
(the following keys are valid only when using | |||
1 or 2 | adjust contrast | ||
3 or 4 | adjust brightness | ||
5 or 6 | adjust hue | ||
7 or 8 | adjust saturation |
, and . | previous / next file | ||
gray - or + | decrease / increase volume | ||
enter | start playing | ||
space | pause | ||
s | stop | ||
a | about | ||
l | load file | ||
b | skin browser | ||
e | toggle equalizer | ||
p | toggle playlist | ||
f | toggle fullscreen | ||
m | toggle mute |
h or l | select previous/next channel | ||
n | change norm | ||
b | change channel list |
MPlayer allows you bind any key/button to any MPlayer command
using a simple config file. The syntax consist of a key name followed by a
command. The default config file location is
$HOME/.mplayer/input.conf
but it can be overridden using the
-input
conf switch (relative path are relative to
$HOME/.mplayer
).
Example:
## ## MPlayer input control file ## RIGHT seek +10 LEFT seek -10 - audio_delay 0.100 + audio_delay -0.100 q quit > pt_step 1 < pt_step -1 ENTER pt_step 1 1
You can have a full list by running mplayer -input keylist
You can have a full list of known commands by running "mplayer -input cmdlist"
Seek to some place in the movie.
Type 0 is a relative seek of +/- val seconds.
Type 1 seek to val % in the movie.
Adjust the audio delay of val seconds
Quit MPlayer
Pause/unpause the playback
Somebody know ?
Go to next/previous entry in playtree. Val sign tell the direction.
If no other entry is available in the given direction it won't do anything
unless force is non 0.
Like pt_step but it jump to next/previous in the parent list. It's useful to break inner loop in the playtree.
When more than one source is available it select the next/previous one (only supported by asx playlist).
Adjust the subtitles delay of +/- val seconds or set it to val seconds when abs is non zero.
Toggle osd mode or set it to level when level > 0.
Increase/decrease volume
Set/Adjust video parameters. Val range from -100 to 100.
Toggle/Set frame dropping mode.
Adjust subtitles position.
Switch fullscreen mode.
Select next/previous tv channel.
Change TV norm.
Change channel list.
GUI actions
Linux Infrared Remote Control - use an easy to build home-brewn IR-receiver, an (almost) arbitrary remote control and control your Linux box with it! More about it at www.lirc.org.
If you have installed the lirc-package, configure will autodetect it. If everything went fine, MPlayer will print a message like "Setting up lirc support..." on startup. If an error occurs it will tell you. If it doesn't tell you anything about LIRC there's no support compiled in. That's it :-)
The application name for MPlayer is - oh wonder - 'mplayer'. You can use any mplayer commands and even pass more than one command by separating them with \n. Don't forget to enable the repeat flag in .lircrc when it make sense (seek, volume, etc). Here's an excerpt from my .lircrc:
begin button = VOLUME_PLUS prog = mplayer config = volume 1 repeat = 1 end begin button = VOLUME_MINUS prog = mplayer config = volume -1 repeat = 1 end begin button = CD_PLAY prog = mplayer config = pause end begin button = CD_STOP prog = mplayer config = seek 0 1\npause end
If you don't like the standard location for the lirc-config file (~/.lircrc) use the -lircconf <filename> switch to specify another file.
The slave mode allow you to build simple frontend to MPlayer. When
enabled (with the -slave
switch) MPlayer will read
commands separated by new line (\n) from stdin.
MPlayer can play files from network, using the HTTP or MMS protocol.
Playing goes by simply using adding the URL to the command line. MPlayer also honors the http_proxy environment variable, and uses proxy if available. Proxy usage can also be forced:
mplayer http_proxy://proxy.micorsops.com:3128/http://micorsops.com:80/stream.asf
MPlayer can read from stdin (NOT named pipes). This can be for example used to play from FTP:
wget ftp://micorsops.com/something.avi -O - | mplayer -
Note: it's also recommended to enable CACHE when playback from network:
wget ftp://micorsops.com/something.avi -O - | mplayer -cache 8192 -
To build the package, get the cvs version, or .tgz and uncompress it, and cd into programs directory:
cd main fakeroot debian/rules binary
(... mplayer detects hardware/software, builds itself and.. ) dpkg-deb: building package `mplayer' in `../mplayer_0.90-1_i386.deb'.
And now just become root, and:
dpkg -i ../mplayer_0.90-1_i386.deb as root.
Here's how it looks like:
eyck@incubus:/src/main$ sudo dpkg -i ../mplayer_0.90-1_i386.deb Password: (Reading database ... 26946 files and directories currently installed.) Preparing to replace mplayer 0.50-1 (using ../mplayer_0.90-1_i386.deb) Unpacking replacement mplayer ... Setting up mplayer (0.90-1) ...
To build the package you will need GNU make (gmake, /usr/ports/devel/gmake), native BSD make will not work.
To run MPlayer you will need to re-compile the kernel with "options USER_LDT" (unless you are running -CURRENT, where this is default). If you have a CPU with SSE also use "options CPU_ENABLE_SSE" to use it (FreeBSD-STABLE required, or use kernel patches).
If MPlayer complains about "CD-ROM Device '/dev/cdrom' not found!" make a
symbolic link: ln -s /dev/(your_cdrom_device) /dev/cdrom
There's no DVD support for FreeBSD yet.
MPlayer should work on Solaris 2.6 or newer.
AVI file playback works best on Solaris x86, because you have the option to use the win32 codecs on the x86 platform, or can use MMX/MMX2/3DNow/etc instructions for MP3/DivX/DVD/whatever. On Colaris SPARC, you'll find quite a few AVI files with non working video and/or audio playback, because the video/audio codecs using the Win32 DLLs are not available. However, DivX/OpenDivX movies should work, when using libavcodec.
On UltraSPARCs, MPlayer takes advantage of their VIS extensions (equivalent to MMX), currently only in libmpeg2, libvo and libavcodec, but not in mp3lib. You can watch a VOB file on a 400MHz CPU. You'll need mLib installed.
To build the package you will need GNU make (gmake, /opt/sfw/gmake), native Solaris make will not work. Typical error you get when building with Solaris' make instead of GNU make:
% /usr/ccs/bin/make make: Fatal error in reader: Makefile, line 25: Unexpected end of line seen
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.
On Solaris x86, you need the GNU assembler and the GNU C/C++ compiler,
configured to use the GNU assembler! The mplayer code on the x86 platform
makes heavy use of MMX, SSE and 3DNOW! instructions that cannot be compiled
using Sun's assembler /usr/ccs/bin/as
.
The configure script tries to find out, which assembler program is used by
your "gcc" command (in case the autodetection fails, use the
--as=/whereever/you/have/installed/gnu-as
option to tell the
configure script where it can find GNU "as" on your system).
Error message from configure on a Solaris x86 system using GCC without GNU assembler:
% configure ... Checking assembler (/usr/ccs/bin/as) ... , failed Please upgrade(downgrade) binutils to 2.10.1...
(Solution: Install and use a gcc configured with "--with-as=gas")
Typical error you get when building with a GNU C compiler that does not use GNU as:
% 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 ...
For DVD support you must have the patched libcss installed. Patch: http://www.tools.de/solaris/mplayer/.
Due to two bugs in Solaris 8 x86, you cannot reliably play DVD discs larger than 4 GB:
On Solaris with an UltraSPARC CPU, you can get some extra speed by using the CPU's VIS instructions for certain time consuming operations. VIS acceleration can be used in MPlayer by calling functions in Sun's mediaLib.
VIS accelerated operations from mediaLib are used for mpeg2 video decoding and for color space conversion in the video output drivers.
MPlayer is reported to compile on StrongARM. Use the following command line:
./configure --target=arm-linux --disable-css --with-x11libdir=/usr/arm/lib --with-x11incdir=/usr/arm/lib --disable-gcc-checking
Reported working. You'll probably have to use the SGI ao driver. Anyone has closer info?
Works. You'll need to download SDL for QNX, and install it. Then run
MPlayer with -vo sdl:photon
and -ao sdl:nto
options, and it should be fast.
The -vo x11
output will be even slower than on Linux, since
QNX has only X emulation which is VERY slow. Use SDL.
To build the package you will need GNU make (gmake, /usr/ports/devel/gmake), native BSD make will not work, and a recent binutils (including objcopy).
Due to limitations in different versions of gas (relocation vs mmx), you'll
need to compile in two steps: First make sure that the non-native as is first
in PATH and do a 'gmake -k
', then make sure that the native
version is used and do 'gmake
'.
To use Win32 DLLs with MPlayer you will need to re-compile the
kernel with "option USER_LDT
".
If MPlayer complains about not finding '/dev/cdrom' or
'/dev/dvd' make a symbolic link, e.g. ln -s
/dev/rcd0c /dev/dvd
The not so hardcore hackers amongst us might want to use the ports version (/usr/ports/x11/mplayer).
You will have to go to the MPlayer directory, and copy or symlink
etc/cygwin_inttypes.h
to /usr/include/inttypes.h
to
make MPlayer compile. Otherwise it will complain about missing
intypes.h
.
There are some public mailing lists on MPlayer. Subscribing can be achieved on the following addresses:
Note: Unless explicitly stated otherwise the language of the above lists is English. Please do not send messages in other languages!
Note: You can reach the searchable mailing list archives at http://www.mplayerhq.hu/cgi-bin/htsearch.
Special system/CPU-specific bugs/problems:
./configure --disable-sse
./configure --disable-sse
etc. options-ac ffmpeg
)Various A-V sync and other audio problems:
General audio delay or jerky sound (exists with all or many files):Video-out problems:
First note: options -fs -vm and -zoom are just recommendations, not (yet) supported by all drivers. So it isn't a bug if it doesn't work. Only a few driver supports scaling/zooming, don't expect this from x11 or dga.
OSD/sub flickering:
- x11 driver: sorry, it can't be fixed now
- xv driver: use -double option
Green image using mga_vid (-vo mga / -vo xmga):
- mga_vid misdetected your card's RAM amount, reload it using mga_ram_size option