camsource project grabs images from a video4linux device and makes them available to various plugins for processing or handling. It features a modularized and multithreaded design to offer a large amount of flexibility.
A server plugin runs in its own thread, which makes it possible to use the same grabbed frame for several purposes at the same time.
There are also filter plugins, which can be daisychained to create useful and no-so-useful effects in images. The configuration happens through an xml config file, hopefully making configuring camsource an easy task.
Here are some key features of "camsource":
· The video4linux input plugin. This functionality was built into camsource in versions 0.6.0 and earlier, but has been modularized in 0.7.0 and up. New in 0.7.0 is also the capability to automatically adjust the camera's brightness level (thanks to Nigel Roberts and Stefan Meyer).
· A plugin "wc_serv" providing compatibility with webcam_server 0.30. You can use its java applet to view the image stream from this plugin.
· A "filewrite" module, which periodically saves a new snapshot jpeg to a local file.
· The "ftpup" module, which works like the filewrite module, only that the snapshot is uploaded to an ftp site.
· The "flip" image filter, which lets you flip an image horizontally or vertically. Useful if your webcam produces mirrored images like mine.
· The "resize" image filter, doing simple nearest-neighbor image resizing. The idea is to make the hardware grab images at the maximum size, and use the resize filter to scale the image down to the required size. This lets you create several versions of the same image stream, at different sizes.
· An image filter capable of rotating the image left or right by 90 degrees. If you want to rotate the image by 180 degrees, use the "flip" filter.
· A text overlay module, which is able to display either a fixed text (possibly containing a timestamp) in the image, or read the text to display from a local file or from a command's stdout.
· In case your camera produces frames in an BGR palette while the driver detects an RGB palette (or the other way round, haw haw), there's the "rgbbgr" filter to fix this. Also includes the "bw" filter to convert a color image to grayscale.
· (New in 0.7.0) A module to feed the current image data back to a vloopback device. This feature should still be considered experimental. Credits go to Cyril Rocheteau for this.
· (New in 0.7.0) An x11/xwd input plugin. This lets you use an x11 display as an input source to camsource, making it possible to serve live screenshots to viewers, possibly even as a live stream. When combined with the http authentication feature of the http module, you could use this to see what's going on on your desktop at home from anywhere in the world. The external "xwd" program is required to do this though (which is part of the core xfree86 distribution).
· Linux. Tested with version 2.4.19 and 2.4.20. Compiling also tested on 2.2.17.
· Hardware supported by video4linux or video4linux 2. This is usually a webcam, but tv tuners could be supported as well. Tested with a Philips webcam (actually a Creative Webcam 5 using the pwc/pwcx driver). Reportedly also works with an Intel CS330 Create And Share Cam and an Intel Pro Camera, both with the spca50x driver, as well as a Logitech Quickcam Web and apparently cameras using the ov511/ov518 driver (this includes at least the Philips PCVC720K ToUcam XS). Bttv grabber cards should work too (or at least some). Other hardware I dunno. Let me know.
· Actually I lied in the previous item. You can also use it without any v4l hardware. Camsource can take input from various sources, for example an x11 display by taking screen shots.
· libxml. Both version 1 (libxml) and version 2 (libxml2) should work. Tested with libxml 2.4.22 and gnome-xml 1.8.17. Compiling also tested with gnome-xml 1.7.3.
· jpeglib, probably in version 6b/62. No idea about other versions.
· Possibly a java applet for viewing the image stream. See below for links.
What's New in This Release:
· Brought back the -c flag with changed behavior to fit the new modular input plugin design.
· Applied (modified) patch sent by Nigel Roberts implementing the feature. Credits also go to Stefan Meyer for the original code from wwwcam.