Processing Digital Video and Digitizing VHS
As I’m continuing to build a collection of cartoons, TV shows, and movies on my plex server, I’ve put together several scripts to make converting and splitting video easier. For the most part though I’ve been working with digital copies of things. While I have been working on digitizing old home movies shot on 8mm video tape, I’ve been using a digital 8 camcorder which has a FireWire interface and handles the digitization, so on the computer I’m working with digital video. I’ve also fully automated the transfer of 8mm tapes: my script rewinds the tape, starts the capture, rewinds the tape at the end, converts to x264 and deinterlaces, and then finally uploads the mp4 to my server which uses BitTorrent sync to send the video to my mom.
Dealing with analog video like VHS has been much more difficult. I’ve got a pretty large collection of older video capture hardware so I refuse to go out and spend money buying more, and it's not like buying newer capture hardware is going to improve the quality of a VHS tape. The Core 2 Quad computer that I’m using for working with the 8mm video happens to have a ViXS PureTV-U 48B0 capture card in it, and I’ve spent quite a lot of time trying to make that work. It seems though that it will only work with Windows Media Center and not much else. I can get some software to capture video, but not audio. Something to do with crossbar support. And of course the card is so proprietary there’s no support at all for it under Linux.
Another attempt to digitize the video was by using a MiniDV camcorder that has a passthrough option to convert analog to digital. This probably would have worked just fine, but as it turns out the camera is broken and there is barely any audio on the left channel. There must be something wrong with the A2D chip, because it does the same thing with the built-in microphone and a very old video recorded with the camera had the same problem.
The next thing I tried was a KWorld HD 330 USB stick. Both audio and video are seen by the software that came with it, but when I tried doing a few recordings the audio kept clicking every half second or so. Linux v4l2 can also see it, but under Linux I could never get anything I tried to recognize there was an audio channel.
A few years ago I picked up some cheap “EasyCap” USB things for my security camera. EasyCap isn’t a brand name though, it’s a generic Chinese term for a USB capture device, which means you never know what kind of chip or hardware is actually in them. While they have worked well enough on my Windows XP computer for the security cameras, I couldn’t get them to work on Windows 7 or Linux at all.
But wait, I'm not out of devices yet! I also have a KWorld 120 PCI card! It also had drivers and was automatically detected in Linux, but again, I couldn’t get the audio to work.
Finally giving up on ever getting the audio to work through one of my TV cards, I resorted to hooking the audio to the line-in on the sound card. At last, I can record! However the audio level was *extremely* loud, and I double checked several times that I was plugging into the line-in on the card and not the mic in. I ended up getting out a Radio Shack audio mixer and using it to adjust the volume.
Recording with the app in Windows was nice because I could monitor what was being recorded live, but using Windows makes it very hard for me to automate. Most of the articles I found on the internet talking about recording on Linux were using ffmpeg, which works, but doesn’t allow you to monitor what’s going on. After a whole lot of trial and error I was finally able to get VLC to display the video and save it to a file too.
Ideally I’d like to be able to monitor the VCR and tell it to seek to a certain position, stop when I’m done recording, and know when it’s hit the end of a tape. I have an old GoVideo Montage dual deck VCR that has a serial port, but the VCR no longer works. Even after replacing the worn out belts, it just says “Error” on the display when I try to do anything besides eject a tape.
The Mitsubishi HS-U778 S-VHS VCR that I picked up at Goodwill for $6 has ports on the back labeled “Active A/V Network.” They’re not really active at all, they’re just a wired infrared remote pass through. The VCR doesn’t send any signals to indicate its state over the wired bus. All I really need to do is be able to read the state of the VCR from the display, for control I can send remote control signals, either as IR or through the wired interface. But without the feedback it would be impossible to seek. I did get hold of a service manual which includes schematics and I see that there’s an I2C bus internally, but I haven’t yet had a chance to try to interface to it.
It would sure be nice to be able to automatically seek the VCR to a point every 10 minutes, record a minute of video, and assemble it into a preview so I can see if the tape is even worth digitizing. But I don't have very many VHS tapes (yet) so I will probably end up doing it manually.
If you want to use my scripts to digitize analog video or rip DVDs or do other processing, you can download them from github here.