Back to article
Better Linux Sound Management With ALSA
Webcams Win, Author Loses
February 29, 2008
Part 2 of "Webcams in Linux" is going to appear later, as there are a number of kinks and roadblocks to work out. So today we're going to dig into ALSA, the Advanced Linux Sound Architecture, because I think it's the best tool for managing your Linux sound devices. It's good for managing multiple sound devices, and it works in all Linux environments including other window managers, or no X Windows at all.
Yes, I know that Gnome has ESD (Enlightened Sound Daemon), and KDE uses aRtsd (analog Real time synthesizer daemon). Aside from the annoying problem of having to cope with multiple sound subsystems, both ESD and aRtsd introduce complications, such as conflicts with ALSA and latency. Latency is the enemy of sound quality, especially over a network. So when you're streaming audio (either by itself or with video), using a software IP phone, or playing online games the first thing to do is turn off ESD or aRtsd and use only ALSA.
So what's up with Webcams? As one reader told me, is "the state of Webcam support in Linux is nasty and brutish." The core problems stem from lack of support from hardware vendors (get in the 21st century, folks, geez!) and inconsistent Video4Linux support. Video4Linux is the video capture API for Linux. All video capture devices and applications must use Video4Linux. That doesn't sound too bad, as it is just a single API, and as far as I know the only one. But there are two versions: the original V4L, and version 2, sometimes (but not consistently) called V4L2. Version 2 is substantially different and improved from version 1.
Virtually all modern webcams require V4L2, but some Linux applications and camera drivers still don't support it. Support in some applications is so new it's not in distribution repositories yet, so you have to build from sources to get V4L2, and you usually have to read the Changelogs to figure out what's going on. It's understandable that an unfunded overworked FOSS project would have problems with this, but get this- Adobe's Flash Player for Linux does not support V4L2. (And still no 64-bit version.) This makes live Internet streaming a problem- you can't use sites that host your live streams for free like Ustream.tv, Justin.tv, and Stickam.com, or use free video chat and phone like Tokbox.com because they depend on Flash. So your options are to use an old lower-quality camera that supports V4L version 1, or to capture and host your own streams. Let's have a big cheer for proprietary innovation! Or in Adobe's case, enervation.