Ripping DVDs on Mac OS X and Linux: Perfect-quality back-ups and iPhone/iPod conversion

[article index] [] [@mattmight] [+mattmight] [rss]

There are a lot of good (legal) reasons to rip your DVDs. [Ripping from Netflix is not one of them! If you're tempted to use Netflix as an all-you-can-eat DVD store, you should know that it's just as illegal as downloading music.]

This article explains how and why I rip DVDs on Mac OS X and Linux. Some of these solutions should work on Windows, but I've never tried ripping on Windows, so I don't know how well they work.

Going on a long flight? Playing a DVD from your hard drive instead of your disc drive will save you a lot of battery power.

Got a kid? Rip all those Sesame Street DVDs so you're not changing them out every 30 minutes.

Got an iPhone/iPod touch? Rip your DVDs and copy them to your iPhone for viewing on the go.

Worried your DVD will eventually rot? Back it up.

More HOWTOs

RipIt: Ripping made easy

The easiest ripping tool I've ever used is RipIt for OS X. The interface is dead simple:

Just insert the DVD and press "Rip." It makes a complete, decrypted, perfect-quality copy of the DVD in a folder on your hard drive. By default, the folder ends in .dvdmedia, so Apple's free DVD playing software recognizes it and plays it as if it were an actual DVD. You get all the stuff from the original DVD at no loss in quality: menus, options, extras, etc.

RipIt is the perfect solution if you've got a lot of hard drive space, and you're setting up a media/backup server.

The most recent version of RipIt has a beta "compress" feature, but this feature hasn't worked perfectly for me. (I wasn't able to rip the second episode on a disc in compressed mode.) I guess that's why it's in beta, and I'm sure they'll get it working as well as the uncompressed ripping feature soon enough. That said, the quality of the compressed video was extremely high, and it went from 6 GB to 600 MB--ten times smaller.

The only downside? It's $20, but worth every penny.

Fairmount: Easy decryption

Don't want to splurge on RipIt? A second option for making full back-ups is Fairmount. On OS X, Fairmount mounts a DVD in decrypted mode. Then, you can just copy over the files.

Handbrake: Compressing DVDs and converting for iPhone/iPod

The free program Handbrake works on Mac, Linux and Windows. (It requires the freely available VLC video player to work.)

Handbrake is my preferred solution for ripping, compressing and/or converting. There are a lot of options to trade quality for size, and it has presets you can use when ripping to a specific device like iPhone/iPod touch.

I used handbrake to rip all of my son's Sesame Street Elmo DVDs to his media stand and to my and my wife's iPhones.

mencoder/ffmpeg: Command-line ripping

A while back, I used to use the mencoder utility that came with MPlayer to rip from the Linux command-line. I had a bunch of scripts set up to rip at varying qualities/sizes, depending on what my intention was. If I were to rip a large number of DVDs, this is the approach I would take.

I haven't used these scripts in years, but I've included them below in case they're useful.

rippreview.sh

Rip a 30 second preview of a track to make sure you've got the right one:

#!/bin/bash

TRACK=$1
NAME=preview

STARTPOS=5:00
DUR=0:30

rm -f frameno.avi *.log

mencoder dvd://$TRACK -ovc frameno -o frameno.avi -oac copy \
         -alang en -ss $STARTPOS -endpos $DUR

mencoder dvd://1 -oac copy -o /dev/null -ovc lavc\
  -lavcopts vcodec=mpeg4:vbitrate=1000:vhq:vpass=1:vqmin=2:vqmax=31 \
  -ss $STARTPOS -endpos $DUR

mencoder dvd://1 -oac copy -o $NAME-$TRACK.avi -ovc lavc \
  -lavcopts vcodec=mpeg4:vbitrate=1000:vhq:vpass=2:vqmin=2:vqmax=31 \
  -ss $STARTPOS -endpos $DUR

riptracks-mp3.sh

Rips the specified tracks with mp3 audio compression:

#!/bin/bash

NAME=track

for TRACK in $*;
do
 rm -f frameno.avi *.log

 if [ -f $NAME-$TRACK.avi ]; then
     echo "$NAME-$TRACK.avi exists; please remove."
     exit
 fi

 mencoder dvd://$TRACK -ovc frameno -o frameno.avi -oac mp3lame \
   -lameopts vbr=4 -alang en
 
 mencoder dvd://$TRACK -oac mp3lame -lameopts vbr=4 -o /dev/null \
  -ovc lavc \
  -lavcopts \
   vcodec=mpeg4:vbitrate=1000:vhq:vpass=1:vqmin=2:vqmax=31:autoaspect=1 \
  -alang en

 mencoder dvd://$TRACK -oac mp3lame -lameopts vbr=4 -o $NAME-$TRACK.avi \
  -ovc lavc \
  -lavcopts \
   vcodec=mpeg4:vbitrate=1000:vhq:vpass=2:vqmin=2:vqmax=31:autoaspect=1  \
  -alang en

done

riptracks.sh

Rips the specified tracks with no audio compression:

#!/bin/bash


NAME=track

for TRACK in $*;
do
  rm -f frameno.avi *.log

  if [ -f $NAME-$TRACK.avi ]; then
      echo "$NAME-$TRACK.avi exists; please remove."
      exit
  fi

  mencoder dvd://$TRACK -ovc frameno -o frameno.avi -oac copy \
    -alang en
  
  mencoder dvd://$TRACK -oac copy -o /dev/null -ovc lavc \
    -lavcopts vcodec=mpeg4:vbitrate=1000:vhq:vpass=1:vqmin=2:vqmax=31 
 
  mencoder dvd://$TRACK -oac copy -o $NAME-$TRACK.avi -ovc lavc \
    -lavcopts vcodec=mpeg4:vbitrate=1000:vhq:vpass=2:vqmin=2:vqmax=31 
 
done