Just before Christmas, I decided it was time for my kids to see one of my favorite movies: The Muppet Christmas Carol. I grabbed the tape (yes, tape) off the shelf and put it in the VCR (yes, VCR) and... nothing happened. Oh no!

I have a dozen or so movies on VHS that we still watch. To be honest, I'm not that concerned about the commercial movies; those are easy enough to replace. But what about our home movies? My high school cross country team videos and my wife's marching band videos, among others—you won't find those on Netflix anytime soon. So I decided it was time to get serious about something I'd been meaning to do for a long time: Digitize my VHS tapes.

In this article, I'll describe how I set up my Fedora desktop to convert my VHS tapes into 1s and 0s. Previously, Don Watkins described a different setup for VHS conversion.

Step 1

The first thing I needed was a video capture card. Years ago, I had one that I had used for a MythTV setup. I knew the manufacturer was well-supported in Linux, so I just needed to find a model that had RCA input. I bought a used Hauppauge WinTV PVR-150 and installed it in an available PCI slot.

The kernel recognized the capture card. So far, so good.

Step 2

I opened VLC and tried to view the input. No luck. After nosing around in dmesg output, I discovered that I didn't have the firmware for that card (v4l-cx2341x-enc, specifically). Fortunately, Fedora's ivtv-firmware package has the files I needed. After a dnf install ivtv-firmware and a reboot, I was off to the races.

Or not. VLC still wasn't showing me anything, but I could watch the video input from mplayer. More specifically, I could watch static. But, it was progress.

Step 3

The last step was to tell the card which input I wanted it to use. I installed the v4l-utils package, and after some trial and error found that v4l2-ctl -i 2 set it to use the RCA input (instead of coax or S-video).

With that done, mplayer /dev/video0 gave me the output from my VCR. Now to save it to a file. mplayer -cache 8192 /dev/video0 -dumpstream -dumpfile my_video.mp4 was the command I needed. The -cache 8192 helped suppress some occasional error messages about my computer being too slow (it's not, I promise).

That's a wrap!

That's all it took; a few steps and I was converting my VHS tapes to digital files. The only downside is that mplayer can't tell when the tape has reached the end, so it requires some careful babysitting to stop the capture. Once the files are done, I use Kdenlive to snip off the extra at the beginning and end.

Now you can digitize your own tapes before VCRs completely vanish from the face of the earth. Have suggestions for how to improve this workflow? Let us know in the comments below.