Observe, Mon Cher Ami...
This month Marcel introduces Gqcam, xawtv and MASH, some simple and fun tools to use with webcams.
by Marcel Gagné
Mon Dieu! This is terrible. Why did you not tell me, François? Surely it must have been obvious to you when I was putting the menu together. I must come up with something and quick, before our guests arrive. Too late, François. They are here.
Bonjour, mes amis. Welcome to Chez Marcel, home of fine Linux cooking. François, please, show our friends to their table. Forgive me if I seem a bit distressed, but I have been caught off guard today. You see, when François told me that the theme of the issue would be SOHO, I thought, mais, c'est fantastique! An issue featuring the wonders of our solar system. Imagine my surprise when I learned that SOHO, in this case, was Small Office/Home Office rather than Solar and Heliospheric Observatory. Then, I started playing with the words, you see. Observatory made me think of the technology for observing the stars, like that wonderful telescope named after Monsieur Hubble. And then I thought, but the true stars are this restaurant's fine guests—you, mes amis.
This brings us to tonight's menu. But first, we must have du vin, non? François, please bring up the 1998 Picadilly Valley Chardonnay from the cellar for our guests.
In order to achieve the highest level of success with the following recipes, a recent kernel is recommended highly. This is particularly true because a number of inexpensive webcams that you will find at your local electronics warehouse are USB devices. The more recent the kernel, the more likely that device will be supported. While taste-testing these recipes, I used a 2.4.9 kernel and two different webcams, one based on the CPiA chipset, and the other using a ov511 module.
The prevalent use for the webcam is on a web site, providing glimpses into the life of the individual running the site. Some sites provide a camera to reassure us that they are indeed working. Others are there to let parents observe their children playing at day care. The software that captures these images is sometimes called a frame grabber.
Ah, François, you are back. Please pour for our guests. François? François, I am talking to you. What do you mean you did not hear me? Ah, I see. A beautiful and mysterious lady is sitting at table 22. Pour the wine and then you may introduce yourself. Vite!
Where was I? Mais oui, frame grabbers. Gqcam is just such a package. With it you can set up a camera, keep an eye on whatever needs watching and capture images at will. You even can set it up to grab an ongoing sequence of images automatically, at whatever interval you choose. To get started with Gqcam, visit Cory Lueninghoener's web site (cse.unl.edu/~cluening/gqcam) to pick up the latest source, then extract and build it:
tar -xzvf gqcam-0.9.tar.gz cd gqcam-0.9 make
You were waiting for something else, non? There is no make install for this one, mes amis. You can copy the final binary to /usr/local/bin manually, or wherever you want to save the executable. You also can execute the program directly from the build directory, if you wish, by typing ./gqcam &. You may find, as I did, that the program looks to /dev/video by default. With the USB device, my webcam was actually at /dev/video0 while /dev/video was a directory. To get around this, I used the -v flag:
gqcam -v /dev/video0What you choose to observe with Gqcam is entirely up to you, but as to what you can do with the program itself, allow me a few suggestions. If you look at Figure 1, you'll see a shot of Gqcam in action. While it is running, you can do some interesting things. For instance, you can, at any time, click on the Snap Picture button to capture a frame. You'll be given the option of saving it in either PNG, PPM or JPEG format. If you were to click a number of images quickly, you could assemble them into a movie of sorts.
Of course, it is tedious, is it not, to be snapping pictures of yourself continually. That's why Gqcam lets you set a timer. Click on Camera, then select Set timer. You can choose a directory where the image will be saved and an appropriate filename to save that image to, something like /somedir/mypic.jpg. Set the timer for one second and let it go. You'll end up with a number of images in /somedir that have the filename mypic followed by a period, a date and timestamp, and the .jpg extension. The fun part here is that you can run this little movie with a simple command that is part of the ImageMagick package (likely already installed on your machine):
Gqcam also can run directly from the command line, making it fairly simple to set up a cron job that will capture frames at some selected interval:
gqcam -v /dev/video0 -d /wwwdir/filename.pngThe -d option specifies a location to dump a captured image. The default format for the image is PNG, but you can also use the -t flag to specify JPEG as an override. Now, if I happen to be running a web server somewhere, I could, when the mood takes me, snap a current picture and, voilà, we are all stars of the Internet, non? All you need now is a simple web page to display the image, something like this:
<html> <head> <title>Cam Chez Marcel</title> </head> <body bgcolor="White"> <center> <h1>Bienvenue! You are watching Cam Chez Marcel</h1> <img src="camsnap.png"> </center> </body> </html>Another program that performs some of the same functions as Gqcam is Gerd Knorr's xawtv. As its name implies, this is meant to provide you with a means of viewing television programs (with the appropriate hardware), but it also handles input from webcams. When you feel that you've done something that warrants observation on a regular basis (a video sales presentation, for instance), you may decide that providing a video clip adds a certain something extra. xawtv can give you that capability. Start by visiting the web site at bytesex.org/xawtv and picking up the latest copy. From a work directory, extract the source and build it:
tar -xzvf xawtv_3.64.tar.gz cd xawtv-3.64 ./configure make make installYou run the program by typing xawtv & at the command line. The program automatically sensed the location of my camera in this case, so no additional settings were necessary. When you right-click on the image, an options menu will appear that lets you change the video settings, such as brightness and color. Like Gqcam, you also can grab an image and save it in PPM or JPEG format. What's more interesting to this discussion is the next menu item.
If you press R, a recording window appears. The default is to save multiple images that you would then assemble using an external program. You can, however, click on movie driver and choose raw video data or an AVI format file. Choose AVI, select a filename to save it to, then click on the start recording tab. When you have the footage you want, click the tab again. (It actually says start/stop.) If you have the xanim package loaded, you may choose to play back what you recorded by clicking the tab immediately below. Have a look at Figure 2 for a sample of a recording session dialogue.
Come closer, mes amis. Notice how François looks a little uncomfortable. He is somewhat taken with la dame mystérieuse at table 22. The poor boy is too shy to go talk to her in person. It is for my faithful waiter and others like him that I present you with our final recipe of the day.
When you want to be face to face, but distance (or other circumstances) makes it difficult, then video conferencing is the answer. This is where MASH comes into play. MASH is actually a collection of tools produced by the Open MASH Consortium (created by Larry Rowe and Steve McCanne). Their purpose was to create a public domain toolkit for developing collaboration and streaming applications. MASH stands for multimedia architecture that scales across heterogenous environments. No, really. It is all true.
If you feel so inclined, you can download the source and build the package from scratch:
tar -xzvf mash-src-5.1.5.tar.gz cd mash-code ./build
The easiest method is to download the precompiled binary package from the Open MASH web site at www.openmash.org. Once that is done, you merely extract the package and run the installation script. Observe, mes amis:
tar -xzvf mash-bin-5.1.5-linux-gnu.tar.gz cd mash-5.1.5 ./setup.shSo simple, non? As I mentioned, this is a collection of tools rather than a single program. The most interesting one however, particularly for François, is vic, the video-conferencing tool that allows for multiple users to participate in video communication:
vic hostname/port_noFor instance, if I wanted to connect to a machine called speedy on my network on port 2002, I would issue the command like this:
vic speedy/2002You should see a small window pop up at this point with a simple message, “Waiting for video...”, in the center of it. The video you are waiting for, of course, is the young lady at table 22. For the young ladies out there, it may well be François. Who knows? While we wait for the other side of the connection, click the Menu button. A control window will appear that gives you control over many aspects of the current session. Look at the top of that window and click on the Transmit button. Even without the other side of the connection, you will see a small image of yourself sitting behind your camera.
Now, click on the small image. A somewhat larger session image appears. When the person on the other end comes on-line, their image will appear, and you can follow the same procedure to detach a more appetizing view. Figure 3 shows François talking to the mysterious lady using vic. As you can see from the image, he even is afraid to let his own image be seen and has provided an avatar of sorts. Poor François.
Like the other applications we have seen today, vic's video control menu lets you modify a number of settings such as brightness, contrast and color. You even can change the size of the viewers by clicking on the Size button.
Once again, closing time approaches. Normally, I would ask my waiter to provide you with a final top-up, but I fear, mes amis, that it will be up to me to refill your glasses this evening. François seems somewhat preoccupied.
Practical Task Scheduling Deployment
One of the best things about the UNIX environment (aside from being stable and efficient) is the vast array of software tools available to help you do your job. Traditionally, a UNIX tool does only one thing, but does that one thing very well. For example, grep is very easy to use and can search vast amounts of data quickly. The find tool can find a particular file or files based on all kinds of criteria. It's pretty easy to string these tools together to build even more powerful tools, such as a tool that finds all of the .log files in the /home directory and searches each one for a particular entry. This erector-set mentality allows UNIX system administrators to seem to always have the right tool for the job.
Cron traditionally has been considered another such a tool for job scheduling, but is it enough? This webinar considers that very question. The first part builds on a previous Geek Guide, Beyond Cron, and briefly describes how to know when it might be time to consider upgrading your job scheduling infrastructure. The second part presents an actual planning and implementation framework.
Join Linux Journal's Mike Diehl and Pat Cameron of Help Systems.
Free to Linux Journal readers.View Now!
|The Firebird Project's Firebird Relational Database||Jul 29, 2016|
|Stunnel Security for Oracle||Jul 28, 2016|
|SUSE LLC's SUSE Manager||Jul 21, 2016|
|My +1 Sword of Productivity||Jul 20, 2016|
|Non-Linux FOSS: Caffeine!||Jul 19, 2016|
|Murat Yener and Onur Dundar's Expert Android Studio (Wrox)||Jul 18, 2016|
- Stunnel Security for Oracle
- The Firebird Project's Firebird Relational Database
- SUSE LLC's SUSE Manager
- Murat Yener and Onur Dundar's Expert Android Studio (Wrox)
- Managing Linux Using Puppet
- My +1 Sword of Productivity
- Non-Linux FOSS: Caffeine!
- Google's SwiftShader Released
- SuperTuxKart 0.9.2 Released
- Doing for User Space What We Did for Kernel Space
With all the industry talk about the benefits of Linux on Power and all the performance advantages offered by its open architecture, you may be considering a move in that direction. If you are thinking about analytics, big data and cloud computing, you would be right to evaluate Power. The idea of using commodity x86 hardware and replacing it every three years is an outdated cost model. It doesn’t consider the total cost of ownership, and it doesn’t consider the advantage of real processing power, high-availability and multithreading like a demon.
This ebook takes a look at some of the practical applications of the Linux on Power platform and ways you might bring all the performance power of this open architecture to bear for your organization. There are no smoke and mirrors here—just hard, cold, empirical evidence provided by independent sources. I also consider some innovative ways Linux on Power will be used in the future.Get the Guide