Digitizing VHS Tapes with EyeTVby Joe McMahon
By digitizing your old VHS tapes, you can move them from taking up precious shelf space to more readily available disk space. In this article, I'll show you a hack that lets you archive full-quality digital recordings from EyeTV to offline media, but still play them back easily in EyeTV.
I decided last year to start moving my old VCR tapes to digital storage to save physical space and give me better access to the programs I had taped. I picked up an EyeTV 200 to do the job, and it worked great. I archived a half-dozen or so tapes and realized that I was paying for the high quality of my digitization by eating up disk space. At "standard" quality, the MPEG-2 files that EyeTV creates are about 2 gigabytes per hour, so now I had a second archival problem: how to move the data off of my Mac's hard disk while retaining convenient access to it.
Initially, I figured I'd just burn everything to DVDs with EyeTV's DVD export function, and that'd be it. Unfortunately, closed captioning turned out not to be supported by this process, and I really wanted to preserve the captions. I checked with Elgato Systems, who confirmed that caption exporting wasn't supported. I needed to find an alternative.
Too many EyeTV recordings ...
Fiddling with the Data
Examining the EyeTV archive (version 1.8.4) shows that it contains a bunch of oddly named directories, each containing a .mpg file (the actual video) a couple of plist files (.evetvr detailing the recording, and .eyetvp detailing the scheduling of the recording), and an .eyetvi file full of inscrutable binary data.
I first tried copying the data to an external drive and then dragging the .mpg back onto EyeTV for playback. This didn't work. I tried to open the .mpg in QuickTime. That didn't work. Export from EyeTV to H.264 worked (very slowly), but gave me no captions. VLC could play the .mpg files directly, but the caption data wasn't available in the format that VLC wanted, so no captions again.
Obviously I was going to have to find a way to make EyeTV think the data was still there while it was actually somewhere else. At this point, a number of you are probably ahead of me. But for those who aren't, the answer is symbolic links. A symbolic link is a Unix way of putting an entry into a directory that says "The file you want? It's actually over there," and there can be anywhere, including another physical disk. Thanks to OS X's Unix underpinnings, I could at least try this option. The question at this point was, would EyeTV happily follow the link to the remote file, or would it get confused and complain?
I started off by backing up my whole EyeTV Archive to an external FireWire hard disk via drag and drop. Once I had a safe backup of the archive, I started experimenting with the data. I found that moving a complete recording directory (with the MPEG-2 file and the supporting EyeTV files) to another disk and symlinking it back to the original EyeTV Archive allowed EyeTV to play the recording back just as if it were in its original location. Quitting EyeTV and unmounting the disk, then restarting EyeTV effectively removed the program from the archive--it no longer showed when the Programs window was opened. Remounting the disk and restarting EyeTV brought it back again. Perfect. (I also tried using an OS X alias instead of a symlink. This worked too, but EyeTV still thought the program was there and showed it in the Programs window, even though it wasn't playable, which seemed less nice and more prone to confusion on my part: "do I have the right disk in the drive or not?")
I made these symlinked folders like this:
ls ~/Library/EyeTV\ Archive mv ~/Library/EyeTV\ Archive/somename ~/Documents/somename ln -s /Volumes/External\ Backup/EyeTV\ Archive/somename ~/Library/EyeTV\ Archive/somename
This process moves one complete EyeTV program (the MPEG-2 stream and the support files) out of the EyeTV archive, and sets up a symbolic link from where it used to be to the copy on the external hard disk.