GNU.WIKI: The GNU/Linux Knowledge Base

  [HOME] [HowTo] [ABS] [MAN1] [MAN2] [MAN3] [MAN4] [MAN5] [MAN6] [MAN7] [MAN8] [MAN9]


DVD Playback HOWTO

David Jao


Revision History                                                             
Revision 1.0            2004-02-26             Revised by: DJ                
Initial Release, reviewed by LDP                                             
Revision 0.9            2004-02-07             Revised by: DJ                
submitted to LDP                                                             
Revision 0.1            2004-01-26             Revised by: DJ                
first public release                                                         

  This document describes how to view DVD movies on a Linux computer with a
DVD drive.

Table of Contents
1. Introduction
    1.1. Copyright and License
    1.2. Disclaimer
    1.3. Feedback
2. System Preparation
    2.1. Hardware Prerequisites
    2.2. Creating the /dev/dvd symlink
    2.3. Setting the DVD Region
    2.4. X Video Overlay
    2.5. Enabling DMA
3. Software Installation
    3.1. Red Hat / Fedora
    3.2. Debian
    3.3. Slackware
    3.4. Mandrake
    3.5. SuSE
    3.6. Gentoo
4. Software Usage
    4.1. General principles: deinterlacing, telecine, and framerates
    4.2. Specific usage instructions
5. Troubleshooting
6. Further Information

1. Introduction

  In this document we describe how to view DVD movies and video on a Linux
system. We give practical, specific, and straightforward commands for getting
DVD playback up and running quickly on most of the popular Linux
distributions. Special attention is given to the various little-known
performance optimizations that are needed for smooth DVD video playback.

1.1. Copyright and License

  This document, DVD Playback HOWTO, is copyrighted � 2004 by David Jao.
Permission is granted to copy, distribute and/or modify this document under
the terms of the GNU Free Documentation License, Version 1.2 or any later
version published by the Free Software Foundation; with no Invariant
Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of
the license is available at []   http://

  Linux� is a registered trademark of Linus Torvalds.

1.2. Disclaimer

  No liability for the contents of this document can be accepted. Use the
concepts, examples and information at your own risk. Although this is highly
unlikely, there may be errors and inaccuracies herein that could be damaging
to your system. The author(s) do not take any responsibility for any damage
that you incur through your own actions.

  The mere act of accessing or viewing DVD content, or dealing in software
written for such purposes, may be illegal in some localities. The author(s)
cannot accept any responsibility for any actions of yours which violate the
laws of the jurisdictions to which you are subject.

  All copyrights are held by their by their respective owners, unless
specifically noted otherwise. Use of a term in this document should not be
regarded as affecting the validity of any trademark or service mark. Naming
of particular products or brands should not be seen as endorsements.

1.3. Feedback

  Questions, comments, suggestions, and feedback are most certainly welcome
and should be sent to the author of this document at <>.

2. System Preparation

2.1. Hardware Prerequisites

 A certain level of processing power is necessary for smooth DVD playback.
The system requirements in Linux are somewhat higher than in Windows, because
many of the techniques used for hardware acceleration of video playback work
only in Windows.

At a minimum, I recommend the following:

��*�700 MHz or higher CPU,
��*�video card with X Video Overlay support
��*�DVD drive with DMA enabled

2.2. Creating the /dev/dvd symlink

If you don't already have a /dev/dvd symbolic link, then run (as root) the
# ln -s /dev/hdc /dev/dvd                                                    
to create a symbolic link from /dev/dvd to the actual hardware device
representing your DVD-ROM drive (which in this example is /dev/hdc, but you
should replace it with the actual device file used by your drive). The /dev/
dvd link is not merely a matter of convenience; almost all of the player
software mentioned in this HOWTO assumes that the link is there.

If you don't know which device name your DVD-ROM drive uses, you can usually
find it with the command dmesg | grep DVD in the console or a shell right
after booting up the system.

2.3. Setting the DVD Region

All DVD drives (except for [] RPC Phase I
drives made in 1999 or before) enforce region playback restrictions in the
drive firmware and consequently are supposed to be set to a specific region
before they can play back discs from that region (and only that region). In
reality, most Linux DVD playback software can bypass the DVD drive's built-in
region locks, but it takes extra time for the software to break the region
lock, and it is better to avoid the complications of region locks if you can.

 For the small minority of readers who own RPC-I drives, you do not need to
do anything: your drive is already capable of handling DVDs from all
geographical regions. These drives are old enough by now that everybody who
has one of them probably knows already that they have one.

 For the majority of readers who have RPC-II drives, there are several
options available:

 1. If you only watch discs from one region, the easiest option is to use the
    [] regionset program to set your DVD
    drive to the correct region.
 2. If you want to watch discs from multiple regions, you can try to find a
    firmware upgrade for your DVD drive in the collection
    of unofficial firmware files. Note that most of these files require you
    to boot to DOS or Windows to install.
 3. You can buy a separate DVD drive for each DVD region that you wish to
    use. The prices for DVD-ROM drives have dropped low enough to make this
    strategy feasible.
 4. Of course, you can simply do nothing, and rely on the built-in ability of
    Linux software to bypass the region restrictions. Note that even in this
    case you should use the [] regionset
    program to set the drive to the region that you will be using the most,
    because an RPC-II drive without a region setting behaves as if all the
    regions are locked out.

2.4. X Video Overlay

The XFree86 video overlay extension is a very poorly documented standard
feature of XFree86 4.x and is absolutely essential for high quality video
playback under Linux. It is the only type of hardware playback acceleration
that is widely supported in Linux, and it is by far the single most important
configuration element for DVD playback on a Linux system.

To check if you have this extension, type xvinfo in an X terminal. If the
command returns several screens full of important-looking output, then
congratulations, you have hardware video overlay and you need not worry about
it anymore.

 If, on the other hand, xvinfo returns with a negative answer like:
# xvinfo                                                                     
X-Video Extension version 2.2                                                
screen #0                                                                    
 no adaptors present                                                         
then that means you don't have hardware overlay support. See Overlay
Troubleshooting for tips on how to get overlay support working.

2.5. Enabling DMA

DMA drive access is critical for DVD playback because it lowers the CPU
overhead of disc reading and leaves more of the CPU free for video playback.
On most systems, enabling DMA support for the DVD drive means the difference
between choppy playback and smooth playback.

To see if you have DMA enabled, type (as root) the command
# hdparm -d /dev/hdc                                                         
(replacing /dev/hdc with your DVD drive's actual device name). If DMA is
already on, then you're done. Otherwise, you should turn it on by typing 
hdparm -d 1 /dev/hdc. You may want to add this command to a startup script
such as /etc/rc.d/rc.local to ensure that the DMA support is active every
time your computer boots.

See the DMA Troubleshooting section if DMA won't turn on even after you've
typed the command to turn it on.

3. Software Installation

 Here we cover the installation of the DVD playback software on various Linux
distributions. For each Linux distribution we indicate how to install [http:/
/] MPlayer, [] Xine, [http://] Ogle, and []
VideoLAN onto the system. These are the four most popular software packages
for DVD playback in Linux. Usage instructions for these programs will be
given in the next section.

 Read the section that corresponds to your Linux distribution. All of the
installation commands given below should be run as root.

3.1. Red Hat / Fedora

If you run Red Hat Linux or Fedora, you can download all of the DVD playback
software from the [] FreshRPMS package repository. Since
there are so many packages needed for DVD playback, the easiest way to
install all of them is to use apt-get. Here's how to do it:

 1. Follow the link to the version of apt that matches your Red Hat version:
    ��+�Fedora Core 1
    ��+�Red Hat Linux 9
    ��+�Red Hat Linux 8
    ��+�[] Red Hat
        Linux 7.3
    Download the appropriate binary x86 RPM package (in this example, and install it using the rpm command as
    # rpm -Uvh                                
 2. Run the commands
    # apt-get update                                                         
    # apt-get install mplayer xine ogle_gui                                  
    to have apt install everything for you.

3.1.1. Special note about VideoLAN and Red Hat

The FreshRPMS repository contains the videolan-client package for Red Hat 9
and Red Hat 7.3, but not for Red Hat 8 or Fedora Core 1. If you want to
install VideoLAN on Red Hat 9 or Red Hat 7.3, you can just type apt-get
install videolan-client and let the program take care of it for you. Fedora
Core 1 users who want VideoLAN will need to visit the official VideoLAN Red
Hat page instead, and follow the instructions there. I do not recommend that
Fedora users install VideoLAN, since the VideoLAN packages interfere to a
large degree with the FreshRPMS packages installed in the previous step.

There appears to be no easy way to install VideoLAN on Red Hat 8.

3.2. Debian

These instructions are for Debian, stable only (3.0r1 as of this writing) --
it is assumed that if you run testing or unstable versions then you should
already know what you are doing.

 Make sure the following lines are in your /etc/apt/sources.list file:
deb stable main                                      
deb ./               
deb woody main              

(The first line is for MPlayer, the second is for the Xine CSS plugins, and
the third is for VideoLAN.) Then run the commands:
# apt-get update                                                               
# apt-get install mplayer-686 mplayer-fonts mplayer-doc ogle                   
# /usr/share/doc/ogle/examples/                                  
# apt-get install xine-ui xine-d5d-plugin xine-d4d-plugin gnome-vlc libdvdcss2 

3.3. Slackware

The best site for Slackware add-on packages is [
/] You can use their search engine to find and
download the Ogle, Xine, MPlayer, libdvdcss, libdvdnav, libdvdread, lame, and
a52dec packages from the web site. Put the packages into a single directory
and run pkgtool to install the packages onto your system.

For VideoLAN, you will have to build it from source since there is no
precompiled package on the LinuxPackages web site yet. To make matters worse,
the version of mpeg2dec included with Slackware 9.1 is too old to be used
with VideoLAN, so you have to compile a newer version of mpeg2dec as well.

That said, if you still want to install VideoLAN, then download the latest
source packages for [] mpeg2dec and [http://] VideoLAN and run the following commands. Note that you
have to disable ffmpeg support for the VideoLAN build because the Slackware
MPlayer packages omit some of the header files needed by ffmpeg.
# tar xzvf mpeg2dec-0.4.0.tar.gz                                             
# cd mpeg2dec-0.4.0                                                          
# ./configure                                                                
# make                                                                       
# make install                                                               
# cd ..                                                                      
# tar xzvf vlc-0.7.0.tar.gz                                                  
# cd vlc-0.7.0                                                               
# ./configure --disable-ffmpeg                                               
# make                                                                       
# make install                                                               

3.4. Mandrake

Mandrake users can get packages for all of the video programs from the [http:
//] Penguin Liberation Front web site. The fastest way is to
visit the [] Easy Urpmi site and follow the
instructions to generate a listing of the commands you need to type for PLF
access in urpmi. You should then type in the commands returned by the web
site to set up your system for PLF access.

After you have set up PLF access, type:
# urpmi.update -a                                                            
# urpmi mplayer libdvdcss2 xine-ui ogle ogle_gui vlc                         
to install all the video programs.

3.5. SuSE

The YaST package program included with SuSE works only with official
packages, and there are no official packages that support DVD. Therefore you
will have to install the packages for all of the DVD software manually.

MPlayer and Xine packages for SuSE are available on the [http://] PackMan site. For MPlayer, you need
the MPlayer, lzo, and xvid packages on that page as well as the "additionally
needed binary packages" listed on the page for each package. SuSE 9.0 users
should note that as of this writing the MPlayer package for SuSE 9.0 has a
broken dependency. You can work around this problem with
the commands
# rpm -Uvh --nodeps MPlayer-1.0pre3-pm.1.i686.rpm                            
# ln -s /usr/lib/                        

To install Xine, you should download and install the libxine1-dvd and xine-ui
packages from [] PackMan.
Encrypted DVD support in Xine also requires installing [http://]  libdvdcss from the
VideoLAN site.

Ogle can be installed using the Red Hat RPMs from the Ogle site. SuSE 9.0
users who want to install the Ogle_gui package will also need to install
orbit-0.5.17-116.i586.rpm]  orbit, [
8.2/suse/i586/gdk-pixbuf-0.18.0-248.i586.rpm]  gdk-pixbuf, [
gnome-libs, and [
libglade-0.16-1015.i586.rpm]  libglade from SuSE 8.2.

VideoLAN users will need to download the Red Hat RPMs from the VideoLAN site
and install them forcibly using rpm --nodeps. The VideoLAN packages also
require [
XFree86-compat-libs-4.3.0-19.i586.rpm] XFree86-compat-libs and [ftp://]
freetype from SuSE 8.2 in order to run.

3.6. Gentoo

The basic command to use is:
# emerge sync                                                                
# USE="dvd mmx sse" emerge mplayer xine-ui vlc ogle-gui                      

 If you have an AMD processor, you should type USE="dvd mmx 3dnow" instead of
using the sse flag. Athlon XP owners can use the 3dnow and sse flags

4. Software Usage

 Although I have tried very hard to keep this HOWTO focused on practical
advice instead of abstract theory, it is necessary to have some minimal
background in television video in order to understand how to get the best
possible video quality under Linux.

4.1. General principles: deinterlacing, telecine, and framerates

 Regular television video is interlaced, meaning that the odd-numbered
scanlines are recorded (and displayed) first, followed by the even numbered
scanlines, then the odd ones again, then the even ones again, etc. Each
individual line is displayed 30 times a second (or 25, depending on where you
live), but because of the interlacing, the television image as a whole is
refreshed 60 times a second (or 50), with only half of the total lines being
refreshed each time.

 In general, with interlaced motion pictures, there is no way to reconstruct
any single video frame perfectly without artifacts. This point is important
enough to repeat: there is no way to perfectly reconstruct any single frame!
The reason is that the odd-numbered lines are recorded onto the video tape
with a timing skew of one half-frame relative to the even-numbered lines. If
the video picture is still, this timing skew is no problem, but for moving
pictures it causes half the lines to be displaced from the other half. On a
television screen, you can't see this displacement, since TV screens (except
for high-end HDTV monitors) are of such low quality that the artifacts aren't
visible. However, on a computer screen, this displacement is very visible and
causes comb-like artifacts to appear in the video. You can see screenshots of
interlacing artifacts in the interlacing section of Luke's Video Guide.

4.1.1. How to fix interlacing artifacts

The process of removing interlacing artifacts is called deinterlacing.
Unfortunately, all deinterlacing techniques are imperfect to some extent, and
there is no single method which works best in all situations. It is therefore
important to experiment with all of the different possible deinterlace
settings to see which one works best for a particular disc.

 MPlayer users can get a list of deinterlacing options by typing mplayer
-pphelp at the command line. Find the option that you want to use, and then
use the -vf pp=<option> syntax to activate the option. For example, I usually
use the lb option, which is done with the command: mplayer -vf pp=lb,
followed by whatever other options you would normally use to play the DVD.

 VideoLAN users can right-click on the movie to get a list of deinterlacing
options (under Video Settings or Deinterlace, depending on the program

 Xine has a list of deinterlacing options in the configuration panel; to get
to it, right-click on the movie window, open the Settings->Setup dialog, set 
"Configuration experience level" to "Advanced", and then look for "Software
deinterlace method" under the "Video" tab.

Ogle has no deinterlacing support, so it is not recommended to use Ogle for
watching interlaced video.

4.1.2. Telecined video

This section only applies to video in NTSC format (used in North America,
east Asia, and parts of Latin America) -- PAL users (the rest of the world)
can skip ahead.

 The one exception to all of the above discussion about interlacing is in the
case of telecined video. Briefly put, telecine is a special kind of
interlacing that is done only to theatrical (i.e. cinematic) movies and some
forms of hand-drawn animated shows. The special thing about telecine is that
it can usually be perfectly undone. The details are too complicated to
explain here, but you can read about it in Luke's Video Guide or Bob Niland's
FAQs if you're curious.

The process of undoing the telecine artifacts is called inverse telecine. The
good news is that inverse telecine, done properly, fully restores the
original video quality of the source video with no artifacts whatsoever. The
bad news is that MPlayer is the only player program in the world right now
that can perform inverse telecine.

To perform inverse telecine in MPlayer, simply add the -vf ivtc option to the
MPlayer command. This option is the right one to use if you are watching a
movie you know originated as a theatrical release, or if you are watching
animated shows. Warning: this option is very CPU intensive. You need at least
a 1 GHz processor to even think about doing it.

4.1.3. How come Windows users don't have to deal with all this?

Windows DVD players hide most of the complexity of DVD playback and fall back
to the lowest common demoninator when playing DVDs. The result is that you
get playback quality which is decent in a wide range of situations but not
always the best that can be achieved in any given situation. For example, no
Windows DVD player in the world has an inverse telecine filter like MPlayer
does, so telecined material always looks dramatically worse in Windows than
in MPlayer under Linux.

4.2. Specific usage instructions

Here we give specific instructions for launching basic DVD playback in the
various player programs. These commands only cover the basic steps of
operating each program. You are encouraged to refer to the man pages of each
program for further instructions.

Put the DVD that you want to play into your drive before attempting playback.

4.2.1. MPlayer

Type mplayer dvd://1 to begin playing title #1 on the disc. To play other
title numbers, substitute the appropriate number in place of 1.

Old versions of MPlayer, such as the one used in Debian, require the command 
mplayer -dvd 1 instead. In some cases you also have to explicitly add the
option -vo xv in order to make MPlayer use the hardware video overlay port.

Subtitle and audio options for MPlayer have to be specified on the command
line. The format is -alang NN or -slang NN where NN is the two-letter
language code of the language you want. For example, to play back Japanese
audio with English subtitles, type:
# mplayer dvd://1 -alang ja -slang en                                        
on the command line.

4.2.2. Xine

Simply type xine at the command prompt to start the program.

The first time you start the program, it will display a configuration screen
with a bunch of options. In most cases you can leave all of the options at
the defaults.

The program has a graphical console with a row of labeled buttons along the
bottom. Press the DVD button to start playing the DVD. (However, if your
version of Xine has a D5D button, use that instead.)

Xine supports DVD menus, so you can set language or subtitling options as you
normally would via the disc's own menu.

4.2.3. Ogle

Type ogle to start the program. Depending on which version of the program you
have, it may start playing the DVD automatically. If it doesn't, then click
on the File menu and select Open Disc to begin reading the disc.

Ogle, like Xine, supports DVD menus for setting the language or subtitling

4.2.4. VideoLAN

Use the vlc command to bring up the VideoLAN GUI and click on the disc icon
to open the disc and start playing. Right click the playback window to bring
up the options menu, which includes deinterlacing, audio, and subtitle

5. Troubleshooting

5.1. xvinfo returns "no adaptors present"
5.2. xvinfo works but overlay output is garbled
5.3. DMA isn't working
5.4. Video playback is choppy
5.5. Sound playback is choppy
5.6. Out of region discs play back garbled
5.7. Out-of-region discs hang on playback

5.1. xvinfo returns "no adaptors present"

Make sure you are running XFree86 4.1 or above. You can find out your version
of XFree86 by typing X -version at the command prompt.

Use an appropriate driver for your video card. Some Linux distributions
default to using the generic XFree86 VESA driver instead of the specific
driver for your video card. You need to use the hardware-specific driver for
your card in order to get hardware overlay support.

��*�ATI users should try downloading the improved ATI XFree86 drivers from
    the [] GATOS home page, or from the official
    ATI Linux support page.
��*�NVidia users should try downloading the official NVidia Linux drivers for
    their video card.
��*�Sometimes upgrading [] XFree86 can provide you
    with an improved driver that has hardware overlay support, but such an
    upgrade is beyond the scope of this HOWTO.

5.2. xvinfo works but overlay output is garbled

Problems with garbled or missing overlay output usually mean that you don't
have enough video RAM to hold both the regular desktop display and the video
overlay display at once. Typically you need twice as much video RAM as normal
at a given video resolution in order to use hardware video overlay. In some
cases you may even need 3 to 5 times more RAM because of internal buffering
in the video card.

The only easy way to lower your video RAM requirements is to switch to a
lower video resolution while playing videos.

5.3. DMA isn't working

You can tell that DMA is broken if using the command hdparm -d1 on your DVD
drive returns a message like the following:
# hdparm -d1 /dev/hda                                                        
 setting using_dma to 1 (on)                                                 
 HDIO_SET_DMA failed: Operation not permitted                                
 using_dma    =  0 (off)                                                     

 The only way to fix this problem is to compile a kernel with DMA support for
your particular chipset. It is beyond the scope of this HOWTO to explain how
to compile a kernel, but the steps which are particularly relevant to DMA
support are as follows:

 1. Download a recent kernel so that you have the greatest possible chance of
    DMA being supported on your chipset.
 2. Unpack your kernel and type make xconfig in the kernel build directory.
    Under "ATA/IDE/MFM/RLL support", select "IDE, ATA, and ATAPI Block
    devices" and enable "Generic PCI bus-master DMA support" and "Use DMA by
    default when available".
 3. On the same page there are several dozen chipset-specific DMA drivers
    that continue downward for several screens. Find and select one relevant
    to your chipset, if there are any. For example if you have an AMD Athlon
    based VIA chipset, enable the "VIA82CXXX chipset support" item.

For more information on compiling kernels, see the [
Kernel-HOWTO/] Kernel HOWTO as well as the Linux Ultra-DMA Mini-Howto.

5.4. Video playback is choppy

On a fast enough computer (say, over 1 GHz), choppy video playback usually
means that your overlay support or DMA support is misconfigured. See the
previous troubleshooting items.

On a very slow computer (say, 0-500 MHz), there is nothing you can do short
of hardware upgrades to make DVD playback run well.

For borderline computers (anything in between), you can gain a modest (~10%)
performance boost by upgrading from kernel 2.2 to kernel 2.4 and using an
SSE-optimized player program like MPlayer.

Finally, if all else fails, run MPlayer with the option mplayer -framedrop to
patch over occasional glitches in video playback.

5.5. Sound playback is choppy

The most common cause of sound playback problems is from sound cards that do
not support 48 kHz audio playback. For people in this category, I strongly
suggest that you purchase a new sound card. Even a cheap PCI sound card can
give you a substantial upgrade in sound quality for less than the cost of two

Failing that, you can lighten the load on your sound playback system by not
using a sound daemon such as ESounD or aRts and playing the DVD audio
directly to the OSS driver. To do this with MPlayer, run mplayer -ao=oss
along with whatever other options you normally use.

5.6. Out of region discs play back garbled

In the past, older versions of most of the programs discussed here have had
trouble decrypting out-of-region discs. The result of a failed decryption
looks like the colored video noise that you see.

Upgrading to the newest available version of any of the programs should solve
this problem.

5.7. Out-of-region discs hang on playback

Watch the DVD drive's access light while the program is hanging. Is the light
still blinking in an access pattern? If it is (and usually it will be), that
means the program is still in the middle of decrypting the disc.

Decrypting the DVD involves mounting a fairly large-scale computational
effort to recover the key. It is not at all unusual for a computer to take
five or even ten minutes to decrypt a single DVD key.

In-region discs never have this problem because the DVD drive firmware
automatically decrypts discs that match with the drive's own region.

6. Further Information

��*�Dag Wieers' overview of the Linux DVD playback programs
��*�Moritz Bunkus's DVD ripping guide for Linux

  All copyrights belong to their respective owners. Other site content (c) 2014, GNU.WIKI. Please report any site errors to