Playing or Ripping a scratched DVD under windows: "just" add linux

DVDs from the library are often very badly scratched. This posts describes a software method that makes them work, though it's a lot of work. No disk resurfacing required.

I'm not sure if I just happen to have a bad DVD drive, but I'm having a lot of trouble playing scratched DVDs. VLC is usually my go-to media player but here it does the stupidest thing possible: when it hits a bad scratch it just gives up and stops playback, forgetting your location and giving you no easy way to retry or skip ahead. I don't remember it giving up like that in the past and wonder if something has changed at the OS level. But a quick search of the VLC database shows people complaining about this as far back as 10 years ago (bug status: won't fix, interestingly. so much for open source!!).

I've had mildly more success with an ancient media player called MPC-HC. It doesn't give up as quickly, at least. I've not found any perfect solution, and it may not exist, because the problem of reading a scratched disk is genuinely hard, and finding the next good spot on the disk is definitely slower than real time.

If you can't play the disk back in real time, how about ripping it at your computer's leisure? Once it's ripped the bad sections can be skipped in an instant leaving just a tiny glitch in playback that you might not even notice. This I've found to be nearly impossible with Windows software. I've tried the usual suspects: handbreak, makemkv, and dvdfab, but each give up at roughly the same place VLC does, or don't even manage to open the disk at all due to CSS DRM. There's one that seemed to do a decent job called AnyDVD HD, but it's trial ware and has a large *yearly* price. No thanks.

I wondered if maybe the Linux crowd had solved this problem: after all things seem to be much worse in the windows 10 world; I had much better success back in the WinXP days. Maybe Microsoft has intentionally crippled DVD playback? So I tried Linux Mint. Unfortunately the same methods and techniques didn't work any better here; VLC failed at the same location, and an GUI app called DVDBACKUP (which seems to use the same underling libraries as VLC) failed in the exact same spot. 

So now it gets complicated: you can do some "magic" under Linux that will definitely recover the scratched disk, skipping over the areas that are unreadable. If I didn't lose you at "you need to use linux" then definitely read on as it's not that many steps, AND you don't even need "real" Linux; running it inside a VM (like VMWARE player) is fine!

Steps: 

0) you need some software which your Linux distro probably didn't install by default but can be installed easily from the command line (copy and paste one at a time):

 sudo apt install vlc

sudo apt install libdvd-pkg

sudo apt install gddrescue

1) you need to run vlc to "unlock" the drive first, or some of the "read errors" are actually DRM inserted by the drive itself and will completely prevent playback of the resulting DVD/ISO. All you need to do is start playing the disc and then hit pause.

vlc &

2) Now you need to rip the disk using ddrescue, which does not have a friendly front end like dvdbackup but doesn't have dvdbackup's problem that it just gives up after a few bad scratches are found.

ddrescue -n -b2048 -K1M /dev/cdrom diskname.iso diskname.map

The interesting parts of this command:

-K1M makes ddrescue skip a 1MB chunk of disk each time there's an unrecoverable disk read error; given the data rate of a movie that's not so much, and anyway ddrescue will come back and try again from the opposite end of the gap if you let it run long enough. If you don't use a large skip size, the disk drive/driver will eventually lock up and stop responding at all.

diskname.map is a file that tells ddrescue where it skipped, this is critical for the next point:

If the disk read rate ever gets really slow, you can control+c and start again by re-entering the command line above; as long as you have a map file ddrescue will know how to continue. If restarting the program doesn't help, try rebooting /restarting your VM, sometimes the dvd driver or firmware get into a bad place and stop working or work very slow. 

The resulting ISO can be played by vlc with no extra steps. I've successfully used this linux-based  method on disks that no commercial app under windows could rip (even though it was really a VM running under windows). In one example, the disk wasn't hugely scratched but it was enough to flummox makemkv and dvdfab. This took about 1.5hrs and the resulting disk had 98% of the data successfully recovered. If I had let it run longer I might have gotten higher; it's your choice.  I've also seen it fail, but when it does, the disk can't even be started using VLC; if you can get to the menu and start playing from the first chapter, this method seems to work. 

Of course there's no real magic: if the disk is so badly scratched that 10% or more can't be read there's no point. But if it's just deeply damaged in a few spots this method can skip over those damaged regions intelligently. 

Now, if only this was all encapsulated in a single Windows app with a large green "start" button and no further complications. The fact that it can run under a VM definitely reduces the barrier to entry, but it's not so simple that I'd do it for every disc I get from the library either.  As for getting the file out of the VM, how about using a flash drive as the location to save the ISO? just cd/media/user_name/flashdrive_label first.

Comments

Email me

Name

Email *

Message *

Popular posts from this blog

Panasonic TH-42PX75U Plasma TV review: input lag and upscaling tested using the piLagTesterPRO

piLagTester PRO order page

A $5 TV Input Lag tester using a Raspberry Pi Zero