For the complete list of available options, please read the man page. The syntax to play a standard DVD is as follows:
mplayer dvd://<track>
[-dvd-device<device>
]
Example:
mplayer dvd://1 -dvd-device /dev/hdc
If you have compiled MPlayer with dvdnav support, the syntax is the same, except that you need to use dvdnav:// instead of dvd://.
The default DVD device is /dev/dvd. If your setup differs, make a symlink or specify the correct device on the command line with the -dvd-device option.
MPlayer uses libdvdread
and
libdvdcss
for DVD playback and decryption. These two
libraries are contained in the
MPlayer source tree, you do not have
to install them separately. You can also use system-wide versions of the two
libraries, but this solution is not recommended, as it can result in bugs,
library incompatibilities and slower speed.
In case of DVD decoding problems, try disabling supermount, or any other such facilities. Some RPC-2 drives may also require setting the region code.
DVD structure. DVD disks have 2048 bytes per sector with ECC/CRC. They usually have an UDF filesystem on a single track, containing various files (small .IFO and .BUK files and big (1GB) .VOB files). They are real files and can be copied/played from the mounted filesystem of an unencrypted DVD.
The .IFO files contain the movie navigation information (chapter/title/angle map, language table, etc) and are needed to read and interpret the .VOB content (movie). The .BUK files are backups of them. They use sectors everywhere, so you need to use raw addressing of sectors of the disc to implement DVD navigation or decrypt the content.
DVD support needs raw sector-based access to the device. Unfortunately you must
(under Linux) be root to get the sector address of a file. That's why we don't
use the kernel's filesystem driver at all, instead we reimplement it in
userspace. libdvdread
0.9.x does this.
The kernel UDF filesystem driver
is not needed as they already have their own builtin UDF filesystem driver.
Also the DVD does not have to be mounted as only the raw sector-based access is
used.
Sometimes /dev/dvd cannot be read by users, so the
libdvdread
authors implemented an emulation layer
which transfers sector addresses to filenames+offsets, to emulate raw
access on top of a mounted filesystem or even on a hard disk.
libdvdread
even accepts the mountpoint instead of
the device name for raw access and checks /proc/mounts
to get the device name. It was developed for Solaris, where device names
are dynamically allocated.
DVD decryption.
DVD decryption is done by libdvdcss
. The method
can be specified through the DVDCSS_METHOD
environment
variable, see the manual page for details.
RPC-1 DVD drives only protect region settings through software. RPC-2 drives have a hardware protection that allows 5 changes only. It might be needed/recommended to upgrade the firmware to RPC-1 if you have a RPC-2 DVD drive. You can try finding firmware upgrades for your drive on the internet, this firmware forum may be a good starting point for your search. If there is no firmware upgrade available for your device, use the regionset tool to set the region code of your DVD drive (under Linux). Warning: You can only set the region 5 times.