I don’t think I’ve ever written about how to rip a VHS tape before, so I figured I’d write up a quick guide since it looks like that’s part of what I’m gonna be doing this weekend. Yet another item I’ve long had on my todo list was to get a digital copy of some really old tapes put out by my church, since they were never released on DVD. Fortunately, it’s really easy if you have a TV tuner card.
I’m using a Hauppauage PVR-500 card, which has composite inputs on the rear, and that’s how I’m capturing the feed. That good old analog hole. Although, ideally, the Macrovision DRM shouldn’t allow that, so don’t ask me how it’s working.
Anyway, it’s simply a matter of switching your input to the component input, and then using ffmpeg to capture the stream.
To change the input, you’ll need the IVTV utitiles. In my case, the command is:
$ v4l2-ctl -i 2
Then, with ffmpeg, you can capture the stream, just copying it and saving it in its native format. My PVR card does hardware encoding to MPEG2 video and audio, so I can just save it directly.
$ ffmpeg -i /dev/video0 -vcodec copy -acodec copy -t <hours:minutes> vhs.mpg
And thar ya go. Pretty simple.
Here’s a screenshot from an old church video. As you can see, its slightly grainy, but that’s because of the source, not because of the transfer. It would look just as good / bad on the VCR player itself, so the conversion actually works really well.
Edit: I thought I’d add a bit more technical details as far as the MPEG encoder goes.
The video is MPEG-2, and the bitrate is 8000 kb/s. The framerate is NTSC, of course. The picture is 720×480 in size (my snapshot above is scaled down for presentation).
The audio is encoded to MP2, and it keeps the stereo stream. The bitrate is 224 kb/s.