Digitizing VCR
At some point it became time to convert old family videos on VHS/VCR to digital, and well, it turned out to be a rabbit hole that can go as deep as you want it to. I was looking for a low-cost, ultra-simple, good enough solution because lets be honest, the extra 1% in details isn’t worth the extra hundreds you could spend building a professional studio or hiring a professinal studio for a lot of this content. (By all means, get your wedding tape done professinally!)
In terms of low-cost hardware, I used this 10$ usb stick from Amazon because it was cheap, could be primed, and because I think a lot of these adapters are really the exact same model from 2005. In terms of software, well, I started out with Windows but grew sick of it so I compiled a dead simple, easy modifiable, single bash file to run when capturing.
PSA: From my testing, this script records VCR footage at a little more than 1 GB an hour.
ffmpeg Script
sudo apt install ffmpeg
Save the following script as capture.sh
chmod +x capture.sh
./capture.sh
to begin capture, q
to stop
ffmpeg \
-f v4l2 \
-standard NTSC \
-thread_queue_size 512 \
-i /dev/video0 \
-f alsa \
-thread_queue_size 512 \
-i default \
-c:v libx264 \
-crf 18 \
-r 29.97 \
-s 720x480 \
-vf "yadif=1" \
-pixel_format yuyv422 \
-pix_fmt yuv420p \
-b:a 392k \
-channels 2 \
-c:a aac \
movie.mp4
Results Comparison
This is a quick side by side showing the stock windows capture program that comes with the stick on the left, and my custom ffmpeg
script on the right.
Links I Followed
- Oldskool PC Youtube Video
The best place to start, he explains what hardware to use, how to use Virtual Dub
, and how video compression/interlacing works. Excellent tool for learning, but when I tried and subsequently used Virtual Dub 2
, I couldn’t get the video to look cleanly and compression formats were missing, which is why I switched to Linux.
- Technology Connections Youtube Video
Great video discussing a fairly simple way to capture analog video, I think mine is simpler and lower in cost, but I absolutely agree with his points - keep it simple, straightforward, and just go for something good enough or you’ll spend eternity on useless imperceptible details.
- Jessecar96 Github
Awesome Github script that I just couldn’t get to work on Windows, but I pulled a lot of my script from his command. Great job detailing the arguments too, I would follow suite but I don’t really know what I am talking about so…
- Gordon Lesti Article
Another great article on how to use these low cost analog capture devices wtih ffmpeg
. I borrowed the arguments that were Linux specific.
- Bionazgul Medium Article
One last article that details ffmpeg
on Linux. I think I borrowed most everything from here except the set duration versus pressing q
to stop capture.