|
Webcam capture using fswebcam |
|
Written by David Savery
|
|
Sunday, 20 July 2008 20:59 |
|
This article is part of the Webcam Cool Project. You should check the project homepage first!
My first attempt at configuring webcam capture used camE as it was in the Ubuntu repositories. Although camE worked happily with my Quickcam Sphere, when I built my weatherproof webcam I based it on a Logitech Quickcam 5000 which is a V4L2 device that camE didn't like.
Despite many hours of searching and testing, I couldn't find a program in the repos that would work with the Quickcam 5000, however a search on the internet soon turned up a compatible alternative in the form of fswebcam.
Installation on Ubuntu is a breeze. From the GUI, just download the i386.deb installer and open it using Gdebi Package Installer. Follow the prompts to install.
You can start fswebcam from the command line with various options however as some tweaking will invariably be involved it may be best to create a config file where you can quickly jump in and edit entries until you get it working as you want it.
To create a config file, use: nano ~/.fswebcam.conf
The contents of my config file are listed below...
device /dev/video0 input 0 loop 15 skip 20 background resolution 320x240 set brightness=60% set contrast=13% top-banner font /usr/share/fonts/truetype/msttcorefonts/arial.ttf title "EvilEye cam-O-tron" timestamp "%d-%m-%Y %H:%M:%S (%Z)" jpeg 95 save /home/user/pictures/viewcam.jpg palette MJPEG
Check the fswebcam MAN page for the full range of commands and options. I'm just using those that are relevant to my particular installation.
A brief description of each line:
The first two lines state the device and input assigned to my webcam. This may vary and if not stated fswebcam will default to /dev/video0 input 0 anyway. The loop line specifies a value in seconds in which fswebcam should take a snap using the camera. I have it set to every 15 seconds in this example. The skip parameter specifies how many frames should be skipped before a frame is captured. This is useful if your webcam needs a few frames to settle down. I have it set to 20 which is quite high (4 or 5 would suffice for my camera), however this high setting keeps the camera powered on and the chipset warm for longer. This may be essential seeing as it's mounted outside and will face the full force of a British winter eventually. The background setting allows fswebcam to run as a daemon. You might want to comment this out when testing. The resolution command allows the size of the image capture to be defined. I wanted to use 640x480 but because of my abnormal webcam installation* the bandwidth of this resolution was too high forcing me to use 320x240. The higher the resolution, the better the image - but it depends on what your webcam supports. The brightness and contrast settings take some working out by trial and error. In my case the settings quoted above give good colour and clarity on a sunny day. My webcam image has a banner across the top due to the top-banner entry (although it can be sited elsewhere). The font used on my banner is specified in the font path and the title and timestamp (showing day, month, year, hour, minute, second and timezone in that order) are all displayed on the banner thanks to their respective entries in the configuration file. The quality of my JPEG image is set in the jpeg 95 entry. The path for the saved image is specified by the save entry (this is a dummy path for illustrative purposes and wouldn't exist on a normal Ubuntu installation - set your own path accordingly). Finally the palette for the webcam is set. My Logitech Quickcam Pro 5000 would ideally use the YUYV palette but again, because of bandwidth restrictions* I have to use the MJPEG palatte.
*I've mentioned some abnormailty and bandwidth problems - these are nothing to do
with fswebcam itself and are explained on my weatherproof webcam page. See my weatherproof webcam link under related articles below for more details.
If you get any font errors when you start fswebcam, install the msttcorefonts package. You can get this from Synaptic
or with sudo apt-get install msttcorefonts as the font path specified in the above config file doesn't exist (I don't think) without this.
To start fswebcam using the config file in ~/.fswebcam use: fswebcam -c ~/.fswebcam.conf To stop fswebcam use: pkill fswebcam
Remember to kill the fswebcam process before relaunching (if in background mode) or you'll lock out your webcam (only one instance of one program can access the webcam at any one time).
This image was taken with fswebcam using a Logitech Quickcam Pro 5000
Related articles on this site: Webcam Project homepage Using a Video4Linux (V4L) compliant webcam with camE Refreshing a webcam image with Java and using a webcam with Joomla 1.5 Making a weatherproof webcam for outdoors The view from my corner of Leamington Spa via my TV aerial mounted webcam! The electro-mechanical USB reset circuit One year on...
External Links: fswebcam fswebcam Wiki
|
|
Last Updated on Tuesday, 21 July 2009 20:12 |