Weekend hacking: Homebrew security camera with infinite recording length
24 January, 2011 § 1 Comment
I’ve seen people use security cameras before. Most cameras are set up in a way where the user puts in a VHS tape, presses record, and repeats this process over. If something happened during the recording, the tape will be saved as evidence, otherwise it will be rewound and recorded over again.
This always seemed like a lot of work for something that is purely reactionary. Let’s look at the scenario again. The user is proactively doing a lot of work in the hopes that they will be able to react. Put another way, if you make 20 dollars an hour, over a given month you might spend five or six hours rewinding and pressing record. If there is less than 100 dollars of damage caught on tape, then it wasn’t worth it.
So how about a different solution? At midnight on Friday I decided I would find something better. I had in mind a security camera that kept a circular buffer of the last 8 or so hours. If nothing happened then it would just overwrite what it had previously recorded.
Unfortunately I had no luck finding such a program on the internet, so I decided to write one myself. I first came across OpenCV, which is a free computer vision library. OpenCV is really powerful (and might be a lot of work). I sure didn’t want to write this in C++. Luckily I found technobabbler’s tutorial on how to make a simple webcam application using Python.
I followed the tutorial and had a simple application running that could save a snapshot from the webcam with a simple click of a button. By 4:30am I had a working prototype that was doing just what I wanted.
Using Python 2.5, VideoCapture, PIL, pygame, and FFmpeg, I am able to keep the last 24-hours of snapshots (at 10 frames per second). If I ever want to save those 24 hours for reference, I simply hit the letter ‘s’ on the keyboard.
I’ve made this script open-source under the GPL license and hosted it at Google Code. Let me know what you think.
Wow OpenCV looks like quite a library! It looks like it can do face tracking and much, much more! I haven’t used it though; but nor did I know about it until this post!
Pretty cool project; if I had a store I would use this for the security! I can still see why some might still use VHS tapes (or PVR) instead of a computer+webcam. I am really liking FFmpeg; it does everything!
Also don’t stay up too late (4:30 am)!