Projects on the Move

Voice over IP on the Internet gives communication a personal touch, but it takes applications like Cheese and WebcamStudio to exploit the creative potential of Internet telephony.

The Internet has spoiled many a futurologist's predictions. Video phones were still very much the domain of science fiction in the 1990s. Then, suddenly, broadband Internet hit the mass market, closely followed by cheap webcams. Almost overnight, video conferencing became an affordable reality for home users.

Webcams became part of the digital citizen's standard equipment with the introduction of netbooks. Now Linux users can join in the fun because driver support has finally caught up with reality. Furthermore, creative spirits have discovered the potential of webcams beyond run-of-the-mill telecommunications.

Linux and Webcams

When Linux users buy a webcam, whether it is integrated with a notebook or as an external hardware device, the driver CD will not typically include usable software for the user's choice of operating system. Very few manufacturers provide webcam drivers for Linux. Despite this, developments are positive; Linux developers have created drivers for many of the newer webcams.

Just five years ago, EasyLinux, a German language magazine published by the same company that brings you Linux Pro Magazine/Linux Magazine, painted a gloomy portrait of the webcam landscape. Only three out of seven cameras could be talked into cooperating with a Linux system; of the three, only two displayed color correctly. Linux supported less than 30 percent of the webcams on the market; this made buying a webcam a risk at the time.

The Linux community owes improvements in webcam support to many factors: For one thing, a couple of manufacturers now supply free Linux drivers for their equipment, or at least you can download the drivers. For another, the USB Video device class (UVC) [1], which was introduced in 2005, has been adopted as a standard by many webcam manufacturers. Kernel version 2.6.26 introduced the Uvcvideo [2] module for native support on Linux, which means that most devices that stick to the standard now work.

Unfortunately, some manufacturers still ignore what is now an established standard, while refusing to develop Linux drivers or support volunteer programmers. Since 2003, the French programmer Michel Xhaard has been developing drivers – without external help, for the most part – as part of the GSPCA (Generic Software Package for Camera Adapters) [3] project for low-budget webcams that do not comply with the UVC standard. All of this work by the French physicist, who has since created drivers for more than 250 devices, was introduced into version 2.6.27 of the Linux kernel. Support for seven different chipsets is quite sufficient to get non-UVC-compliant devices to work on Linux, including devices by Aiptek, Creative, Logitech, and Philips, along with innumerable no-names. However, because some manufacturers still refuse to help, the image quality can be quite poor with some GSPCA devices.

Before you buy a webcam, you should check the compatibility lists on the GSPCA and Linux UVC project pages. Some manufacturers provide Linux support status overviews for their devices, although random tests revealed that most of the reports are unreliable. Some webcams tagged as "unsupported" will work with the GSPCA or Uvcvideo project kernel modules without any trouble.

Say Cheese!

The Gnome desktop Cheese [4] project (Figure 1), which owes its name to the familiar phrase, "Say cheese," is reminiscent of the proprietary Photo Booth software by Apple. Cheese uses the webcam to take photos and record videos. Various effects boost the fun factor (Figure 2): 12 filters let users modify the image by replacing individual hues or by distorting the image.

Figure 1: Cheese takes photos and records videos via a webcam.

Figure 2: You can apply 12 different effects to the pictures you take with your webcam.

The camera image occupies most of the workspace. To save an image, just click Take a photo, after selecting Photo or Video mode. The Effects button takes you to freely combinable filters. If you are interested in a black and white cube view (Figure 2), you can simply enable both and then click Effects again to return to the main view where the selected effects are visualized. However, some of the effects involve operations that can slow down even a more powerful machine, especially if you apply them to videos.

Into the Studio

The widespread availability of webcams also brings new options to the world of amateur media. Writing is not everybody's favorite activity. If you don't feel at home in the world of text-heavy blogs, you can still let the world know what you think in the form of videos captured with a stock webcam. Pages such as Ustream.TV [5], BlogTV [6], or Stickam [7] give their members a platform for uploading their contributions or even broadcasting live.

The WebcamStudio [8] project (Figure 3) targets users of these services, offering more than a simple reproduction of the image captured via the webcam. Users with cameras that support Linux, but not the browser's Flash plugin can use WebcamStudio to populate their own video blogs. Although this is the main application for WebcamStudio, the software will also export videos to AVI or Ogg files or create an Ogg broadcast stream.

WebcamStudio combines various media. The Sources menu shows the cameras connected via the V4L (Video for Linux) interface or its successor, V4L2. On top of this, budding producers can add videos or images from disk to their programs or give viewers a chance to watch the producer's desktop.

WebcamStudio integrates text either as static content or RSS feeds. As an alternative, the software will accept the output from any shell command, allowing users to, say, use a live stream to monitor a computer's process list. Other input sources include ANM format animations, IRC chats, and cameras with Firewire connections.

The TCPServer and TCPClient tools let the program use streams from remote computers or the local machine. The Microphone source records an audio track that you can mix with other audio sources. WebcamStudio relies on GStreamer for video and sound reproduction and supports any formats for which you have installed the required plugins.

Users can position the selected sources in the Output window – with transparent superimposition if so desired. For example, you could superimpose your own portrait on a movie. The ability to create a screencast with explanations recorded via a webcam is less artistic, but still useful. At the same time, you can use a paintbrush tool to edit the image by drawing frames around the interesting parts or by using other highlighting techniques.

WebcamStudio developer Patrick Balleux has also implemented an idea that is unique in this kind of software: if you enable Face Detection, the program will automatically detect the eyes of the person the webcam is recording. The user then loads a face file comprising images and coordinates and describing the distance between the image elements it contains. The software applies a virtual mask to the person you are filming, and the mask tracks head movements and scales to reflect the distance to the webcam. It is no surprise that this feature is not perfect, considering the current state of the art, but the quality is fine for visual effects when using face files from the WebcamStudio homepage, such as Batman or Dr. House.

Related content

The motion detector software, Motion, monitors the video signal from one or multiple cameras and is able to detect whether a significant part of the picture has changed, record and track movement, or launch arbitrary external commands to trigger other actions.

Webcams are useful for monitoring. Using CPAN modules and custom-made C code, Perl scripts can automatically adjust the exposure and fish the most interesting images out of a video camera’s data stream.