Linux documentation excerpt:
Modern CD-ROM drives can attain very high head speeds, yet some CD-ROM drives are capable of running at reduced speeds. There are several reasons that might make you consider changing the speed of a CD-ROM drive:
You can reduce the speed of IDE CD-ROM drives with hdparm
or a
program called setcd
. It works like this:
hdparm -E [speed] [cdrom device]
setcd -x [speed] [cdrom device]
You can also try
echo current_speed:4 > /proc/ide/[cdrom device]/settings
but you will need root privileges. The following command may also help:
echo file_readahead:2000000 > /proc/ide/[cdrom device]/settings
This sets prefetched file reading to 2MB, which helps with scratched CD-ROMs.
If you set it to too high, the drive will continuously spin up and down, and
will dramatically decrease the performance.
It is recommended that you also tune your CD-ROM drive with
hdparm
:
hdparm -d1 -a8 -u1 (cdrom device)
This enables DMA access, read-ahead, and IRQ unmasking (read the
hdparm
man page for a detailed explanation).
Please refer to "/proc/ide/[cdrom device]/settings
" for
fine-tuning your CD-ROM.
SCSI drives do not have a uniform way of setting these parameters (Do you know one? Tell us!) There is a tool that works for Plextor SCSI drives.
FreeBSD:
Speed: cdcontrol [-f device] speed [speed]
DMA: sysctl hw.ata.atapi_dma=1
For the complete list of available options, please read the man page. The Syntax for a standard Digital Versatile Disc (DVD) is as follows:
mplayer -dvd <track> [-dvd-device <device>]
Example: mplayer -dvd 1 -dvd-device /dev/hdc
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 decryption and playback. These two libraries are contained in the
libmpdvdkit2/
subdirectory of the MPlayer source tree, you
do not have to install them separately. We opted for this solution because
we had to fix a libdvdread
bug and apply a patch which adds
cracked CSS keys caching support to libdvdcss
. This results
in a large speed increase because the keys do not have to be cracked every time
before playing.
MPlayer can also use system-wide libdvdread
and
libdvdcss
libraries, but this solution is not recommended,
as it can result in bugs, library incompatibilities and slower speed.
Support for DVD navigation via dvdnav
was being worked on, but
it was never finished properly and it is currently unmaintained. Who knows, it
might even compile.
Useful if you want to play encoded VOBs from hard disk. Compile and
install libcss 0.0.1 (not newer) for this (If MPlayer fails to
detect it, use the -csslib /path/to/libcss.so
option). To use it,
you need to be root, use a suid root MPlayer binary or let MPlayer call the
suid-root fibmap_mplayer wrapper program.
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.
The whole old-style DVD support with libcss
therefore needs a mounted DVD
filesystem and raw sector-based access to the device. Unfortunately you must
(under Linux) be root to get the sector address of a file. You have the
following choices:
libcss
).libdvdread
0.9.x and libmpdvdkit
do this (new-style DVD
support). 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.
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.
The authentication and decryption method of the new-style DVD support is done
using a patched libdvdcss
(see above). The method can be specified through the
environment variable DVDCSS_METHOD
, which can be set to
key
, disk
or title
.
If nothing is specified it tries the following methods (default: key, title request):
~/.mplayer/DVDKeys
directory
(fast ;).ioctl()
.
The region protection of RPC-2 drives is performed in this step and may
fail on such drives. If it succeeds, the title keys will be decrypted with
the bus and disk key.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. Firmware upgrades can be found on this firmware page. 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.
For the complete list of available options, please read the man page. The Syntax for a standard Video CD (VCD) is as follows:
mplayer -vcd <track> [-cdrom-device <device>]
Example: mplayer -vcd 2 -cdrom-device /dev/hdc
The default VCD device is /dev/cdrom
. If your setup differs,
make a symlink or specify the correct device on the command line with the
-cdrom-device
option.
Note: At least Plextor and some Toshiba SCSI CD-ROM drives have horrible performance reading VCDs. This is because the the CDROMREADRAW ioctl is not fully implemented for these drives. If you have some knowledge of SCSI programming, please help us implement generic SCSI support for VCDs.
In the meantime you can extract data from VCDs with readvcd and play the resulting file with MPlayer.
VCD disks consist of one or more tracks:
-vcd 2
first.The ~600 MB file visible on the first track of the mounted VCD is not a real
file! It is a so called ISO gateway, created to allow Windows to handle such
tracks (Windows does not allow raw device access to applications at all).
Under Linux you cannot copy or play such files (they contain garbage). Under
Windows it is possible as its iso9660 driver emulates the raw reading of
tracks in this file. To play a .DAT file you need the kernel driver which can
be found in the Linux version of PowerDVD. It has a modified iso9660
filesystem (vcdfs/isofs-2.4.X.o
) driver, which is able to emulate
the raw tracks through this shadow .DAT file. If you mount the disc using
their driver, you can copy and even play .DAT files with mplayer. But it
will not work with the standard iso9660 driver of the Linux kernel!
Use the -vcd
option instead. Alternatives for VCD copying are
the new cdfs kernel
driver (not part of the official kernel) that shows CD sessions
as image files and cdrdao, a
bit-by-bit CD grabbing/copying application.