GNU/Linux DVD Player Review
Playing DVDs under GNU/Linux has not had the happiest of histories, what with the DeCSS debacle and subsequent legal battle. So you'd be forgiven for thinking that you will never be able to play your DVDs on your GNU/Linux system. Luckily, this is not the case, and there are several applications available for you to download and use. The issue with DeCSS is still with us but is slowly getting clearer. However, this has left some of the DVD players officially not supporting encrypted DVDs, although unofficially, playback is possible via third-party additions.
This introduction to DVD playback applications for GNU/Linux looks at Xine, VideoLAN Client, MPlayer and Ogle. In addition to playing encrypted DVDs, unofficially in some cases, several of these players also will play back other file formats.
Xine has quite a large following, and for good reason, as it is a very capable DVD player. In addition, like most of the players reviewed here, Xine is capable of playing a large range of file types in addition to unencrypted-DVD playback. Xine easily can be extended with additional functionality as it supports plugins that enable you to incorporate new codecs (open- or closed-source) or any additional function easily. There are many plugins available for Xine on the Net ready to be downloaded.
Xine only supports the playback of unencrypted DVD directly, but support for encrypted DVDs is provided by a third-party plugin (xine_d4d_plugin). It is unlikely that Xine will support encrypted DVDs directly. The legal status of this plugin is, as always, debatable, but it is easy enough to find and install. There are some useful links on the Xine web site, and a search at Google should find the required links for this plugin. It is stated on the Xine web site that encrypted DVD playback is not going to be supported directly because of the legal issues that surround this area. However, once you have installed the plugin, Xine's playback of encrypted DVDs is smooth with no noticeable problems with audio synchronization or any video glitches.
Xine's interface is tidy and provides most of the function you might require. Depending upon your preferences, you may find that it takes up too much space on your desktop. As Xine is currently not skinnable, there is no way to change the size or layout of the GUI. If you are running XFree86 4.x, with a supported video card, you can switch Xine from windowed to full-screen mode and back again smoothly. If this is not supported by your video card or version of X, Xine still can be viewed in a window, which is the default startup mode.
Unfortunately, Xine does not support DVD menus directly; however, there is a plugin called dvdnav (available from prdownloads.sourceforge.net/dvd) that adds this functionality to Xine. This plugin is a must-have if you intend to use Xine for DVD playback. The plugin works very well, even with the complex animated menus that some DVDs have, and although this is not required for DVD playback, it obviously gives you complete access to all the features available. The code for the DVD navigation was written referencing the original Ogle DVD menu code base.
Xine is a good DVD player, and with the use of plugins it can be extended in many ways. It appears to have a solid following, which should ensure its survival. The interface, however, may not be to everyone's taste.
The VideoLAN Client is part of the VideoLAN Project, a full MPEG-2 client/server solution. However, the VideoLAN Client also can be used as a standalone program to play MPEG-2 streams from a hard disk or DVD. It currently has GTK+, GNOME, KDE and Qt front ends and can use either X11, XVideo, SDL or DirectX for video output. For audio, VideoLAN Client supports OSS, ALSA and ESD. To access encrypted DVDs, VideoLAN Client uses the library libdvdcss, which is a simple library designed for accessing DVDs like a block device without having to bother with the decryption. VideoLAN Client does not use DeCSS but a different implementation that does not use the cracked Xing decoder key. The libdvdcss was written by the VideoLAN Client development team, using the original DeCSS code as a reference base.
DVD playback with VideoLAN Client is very smooth with no noticeable problems with audio synchronization. When you start viewing a DVD, it defaults to opening up a window to display the movie, but you switch to full-screen mode quickly and easily by pressing the F key, as with the other players reviewed here. The switch from windowed view to full-screen view, and back again, is very quick and smooth with no slowing of playback.
VideoLAN Client GUI is a rather large window by default, the largest of the group. This seems unnecessary, and although you can shrink it down, it does not scale very well—a minor point, but it does seem overly big for what is a simple interface. That said, the GUI itself is fairly easy to navigate, with buttons to Stop, Pause, Forward and so on. Preferences also can be modified for items such as the path to the DVD/VCD device, audio device and output to use, the default interface and so on. It is the only player reviewed here that allows you to modify the preferences from the GUI.
The only drawback to VideoLAN Client is that there is currently no support for DVD menus, so you only can see the movie and you cannot access any additional items. This is not a major drawback and should not be held against VideoLAN Client as its DVD playback is as good as Xine and MPlayer. If you are not too worried about having DVD menu support and can live with the largest GUI of the players reviewed here, VideoLAN Client is a good choice.
MPlayer is another movie player that can play most MPEG, VOB, AVI, VIVO, ASF/WMV and QT/MOV files supported by many native, XAnim and Win32 DLL codecs. In addition to this you can watch VideoCD, SVCD, DVD, 3ivx and even DivX movies. In this respect it supports more formats than any of the other players reviewed here.
In addition to all of these video formats, MPlayer also supports a wide range of output drivers. It works with X11, Xv, DGA, OpenGL, SVGAlib, fbdev and AAlib, and you can use SDL and some low-level card-specific drivers (for Matrox, 3Dfx and RADEON) as well. Most of them support software or hardware scaling, so you can enjoy movies in full screen. Lastly, MPlayer supports displaying through some hardware MPEG decoder boards, such as the DVB and DXR3/Hollywood+. Blimey that's a list and a half.
So this looks like a one-stop shop for movie playback, but how does it perform? Very well. There are occasionally synchronization problems with DVD playback but nothing too major. The only thing to remember is that MPlayer does need to be run on a fairly powerful PC (greater than 500MHz) to work properly. If you are running on low power, MPlayer definitely is not for you. On lower spec machines the audio synchronization can get very messy, and the video becomes jerky, making the DVD, and other movie types, unwatchable. If you are using a lower spec machine, VideoLAN Client would appear to be the best option.
Encrypted DVDs are supported using the libcss library and, optionally, libdvdread for chapter support. As with the other players, encrypted support is not provided directly by MPlayer; you will need to download the libraries yourself. Unlike Xine, MPlayer does not support plugins, so you need to ensure that the libraries are installed before compiling.
MPlayer does not compile with a GUI by default, which is a little bizarre. To be fair, this is not a negative point as this is not really required if you just intend to use MPlayer to play back DVDs, as it does not support DVD menus. So having a GUI is not really necessary for DVD playback. However, if you intend to use MPlayer to play back other file types, you will need the GUI. To have GUI support you need to specify this if you compile from source by adding --enable-gui to the configure script.
To access the GUI you then either start MPlayer with a -gui switch (MPlayer does not use the standard --, which is usual for switches of more than one letter) or link MPlayer to gMPlayer, and then call gMPlayer instead. Another hurdle to get over with a GUI is that MPlayer is skinnable, but the standard source code has no skin, so the GUI still will not work. You need to download a skin from the MPlayer web site and install it, which is an irritating step. However, once all these additional steps are completed you are then presented with a usable interface to MPlayer. The interface, using the default skin, presents a simple and clean looking interface, that does not take up too much screen space. For those of you that find the Xine interface a little too bulky, MPlayer may suit you.
MPlayer's main drawback, or at least irritation, is that you cannot access a DVD from the GUI; instead you have to start MPlayer with the -dvd flag in order for it to play your DVD. To view another DVD currently means that you have to restart MPlayer. Lastly, there is no support for DVD menus available at present, so you cannot access the additional features of your DVD with MPlayer.
As a one-stop shop for movie playback, MPlayer scores very highly. It is fast (assuming you have a fairly new PC), and DVD playback is very good with no audio synchronization problems. With the support for multiple file format, you may find that MPlayer is all that you need.
Ogle is purely a DVD player and was the first to support DVD menus and navigation, the code of which is now used in the Xine plugin as mentioned earlier. As with VideoLAN Client and MPlayer, Ogle uses libcss and libdvdread to decode and read DVDs. The MPEG decoder features various levels of acceleration to take advantage of MMX processors and some hardware MPEG decoders.
Ogle can be run directly from the shell, but a GUI is also available if you prefer. The GUI is more compact than VideoLAN Client's, but manages to contain more functionality. All of the major functions are present, such as pausing, forwarding the DVD and menu keys. That said, the interface to the control GUI is still larger than the standard MPlayer GUI and is not as nice to look at. Unfortunately, although there is an option to edit preferences, it is not currently functional.
When you first access your DVD from Ogle you are presented with the DVD menu, which you navigate using your mouse. You also can navigate the DVD menu by using the arrows on the GUI, but navigation using the mouse seems to be the easiest method by far. Unfortunately, playback of encrypted DVDs is occasionally not as smooth as with VideoLAN Client or MPlayer as there are freezes and audio glitches. However, this is occasional and does not detract too much from watching a DVD, but it might be a consideration. As with the other players reviewed, you can switch between windowed and full-screen mode, and again, switching between the modes goes smoothly.
Ogle does have a few drawbacks, the main ones being that there is no chapter menu support, no angle selection during playback and no closed-caption support. The most annoying issue is that you have to restart Ogle to play another DVD, which is the same problem MPlayer has. These may not be major issues to you but are worth taking into consideration.
Ogle is the only one of the players reviewed here that only plays DVDs and not any other formats. Its main claim to fame was the DVD menu support, but thanks to the fact that Ogle is open-source, the code base is now being used in other players. If you only want to play DVDs, then Ogle is worth reviewing, but if your needs are wider than that, you probably will want to look at one of the other players.
In conclusion, playing your bought-and-paid-for DVDs under your favorite OS is now achieved easily using any of the players reviewed here. There are many other players available; the ones we reviewed here have the most supporters and users. As always, because there are a wide range of DVD players to choose from, you should be able to find a player to suit your requirements. So go ahead and enjoy your DVDs on your GNU/Linux box.
Jonathan Kent is a system integration consultant working in the financial sector on real-time market data delivery systems. He has been using UNIX for the past ten years and GNU/Linux for four years. He lives with his family in the United Kingdom.