Batch DVD Ripping
had 4 spare hard drives sitting around so i decided to put together a NAS for DVD rips. there was no way i was going to manually rip them 1 at a time, especially since i have an old Sony DVD Changer for MCE stored away. so this is just a quick app to batch rip DVDs for playback within MCE or a Popcorn Hour.
the DVD changer is a Sony VGP-XL1B for Media Center. it works with MCEs DVD Gallery, and came with software to batch rip Audio CDs. this changer doesnt have a serial connection to send commands with, just FireWire. but the MCE SDK has some classes for working with DVD Changers. you can query the changer for what DVDs are loaded, get associated metadata, load/eject discs, etc... the problem is the API is only available to an app hosted within MCE. an (ugly) option was to make an MCE plugin to control the DVD Changer, along with hosting a WCF service, to proxy commands from external apps. luckily, the maker of mcetilities had already reverse-engineered the API to use it from an external app. er, um ... so i recreated their work to make a stand-alone class library for controlling the DVD Changer. NOTE was going to write this a year ago, but i thought mcetilities would add batch ripping functionality instead, so i put it off. plus their app looked really good.
next step was to find a tool for DVD ripping that has command-line options. for no particular reason, i chose DVD Decrypter. it's no longer under development but still works. it ripped all but a couple of my DVDs and those seemed to have failed because of physical scratches. anyway, the app is config based, so it could work with other rippers too.
the next step was to figure out what format to rip the DVDs to. this could also be configured, but i chose to rip to loose IFOs and VOBs. this is because my potential playback devices are MCE and a Popcorn Hour. Popcorn Hour is all i'm actually going to use at the moment ... but i keep holding out for MCE to do something (cough) anything. really wish the Xbox 360 would support networked DVD playback through UPnP or an MCE Extender session. i think the Popcorn Hour supports ISOs too, but MCE does not, so loose VOBs and IFOs it is. for the MCE DVD Gallery, the app will create and dump a basic DVDID.xml file in the directory so MCE will get box art and metadata in the DVD gallery.
the app is real simple. it queries the DVD Changer for its list of DVDs. then it just iterates through each DVD and rips it. it creates a unique directory based on label and id. then it creates the DVDID.xml. it copies over all data files (e.g. JACKET_TS) and content for PCs. finally it rips the VIDEO_TS directory. if there is an error, like a disc being scratched and unreadable, then it will time out after a minute of CPU usage being below 1%. the idea is to load it up with 200 DVDs, and then walk away to let it run for a week or two. NOTE my rips were taking 1 to 2 hours, which is slow. it was running on a really old notebook, but i think the real problem was the DVD Changer driver? since the app is fire and forget, i didnt bother messing with it. NOTE i think the real problem was it was ripping to a network storage, if you have it rip to a USB drive first, then that should be faster.
initial setup involved turning off AutoPlay on the PC so the DVDs do not load and start playing. i also opened up MCE's DVD gallery after loading up the DVD Changer, to let MCE initialize all the discs and retrieve their metadata (the app can accomplish this by pressing the 'Load Discs' button). install DVD Decryptor and change its General settings to turn off all the Warning dialogs. you also might need to change the .exe.config file for the ripping app to set a target directory for the rips. finally, run the app.
for the spare drives, i just wanted to use the cheapest NAS i could find... which was the Promise SmartStor ($300). i'd tried one before and ended up replacing it with a 2nd Infrant ReadyNAS (granted, the ReadyNAS was twice as expensive). but i knew the Promise SmartStor would work fine for this task. i didn't use the Promise DLNA implementation because it dictates the video directories and doesnt adapt for the Xbox 360 as a UPnP MediaRenderer. streaming to the Popcorn Hour, SMB was too slow, and the audio playback was stuttering. enabling the Linux service and serving with NFS fixed the stutter problem. the Popcorn Network Share URL was nfs://ip-address:/VOLUME1/PUBLIC (capitalization matters). did not have to enter a username or password.
load your DVD Changer with DVDs.
download the source below to your Vista MCE machine.
modify the config file to point to your rip dir and DvdDecrypter install path : dvdMassRipApp/bin/debug/dvdMassRipApp.exe.config
e.g. in the config file, my RipDir path is : \\smartstor\PUBLIC\_RIP ... change that to a directory on your directory (e.g. d:\temp\)
run the exe : dvdMassRipApp/bin/debug/dvdMassRipApp.exe
click the 'init discs' button. that will iter through each DVD and retrieve its DiscId. it could take a couple hours to run if the changer is fully loaded. you only have to run this when you change DVDs in the changer.
if you want it to rip to ISO, leave the 'iso' checkbox checked. if you want Loose VOBs for MCE, uncheck 'iso'.
press the 'mass rip' button and wait as it rips the DVDs. if you want it to exit after the current rip, click the 'exit' checkbox. to restart ripping, just hit 'mass rip' again. if the previous rip files are still there, then it will skip the DVDs it has already ripped and pick up where it left off.
after the rips are complete, you can press the 'DvdInfoCache' button to retrieve metadata and cover art.
this was just a simple app i needed to batch rip my DVD collection. not much to it, i really just wrote a loop to control a DVD Changer and create a process to rip. the makers of mcetilities and DVD Decrypter did the hard work ... big Thanks to them. anyway, took a day to write, but it saved me alot of time in the long run. plus i had all my DVDs ripped in just over a week. on average, my DVDs (split TV and movies) averaged 6 gigs, so a 1 terabyte drive will store ~165 rips. now i have to figure out how to mass rip HD-DVDs ... because sneakernet sucks. i bet a get alot more use out of my DVDs now that they are readily available for playback instead of collecting dust on a shelf.
now i need to get my sister setup with this ... because of the nephews. they have tons of DVDs and are constantly destroying/losing them. i'd probably just set them up with a Popcorn Hour and an internal harddrive of their rips so they dont have to mess around with networking issues.
not sure. later