I'm currently using mplayer to play DVDs on my
home TV projector. It's anything but ideal, but for the moment it works.
I have had a lot of trouble with the quality of the DVD media: Blockbuster appears to pre-treat rental DVDs with
fine sandpaper, and though the DVD drive can frequently read them, it sometimes needs a few
retries, resulting in a delay in playing. I make up for that by reading the DVDs to disk with
this primitive script, and then play them with this
fractionally less primitive script. Both almost certainly need modification for use
elsewhere. The play script makes a vnode device for mplayer, which treats it as a normal
DVD. This method presupposes FreeBSD release 5 or later;
I think you could do similar things under Linux with a loopback device.
Note that the copy script can fail if the system has not yet seen a DVD.
In this case, you need to start mplayer against the DVD device; this sets up the
decryption keys, and you shouldn't need to do it again until you reboot.