# Sound and Video

This chapter addresses the following tasks (briefly, as the field of sound and video is very wide):

- Sound card configuration

- Playing CDs, copying CDs,

- Playing music files

- Volume control

- Video and television

- Recording sound

## Audio Basics

### Installation

Most likely, your system is already installed with audio drivers and the configuration was done at installation time. Likewise, should you ever need to replace your audio hardware, most systems provide tools that allow easy setup and configuration of the device. Most currently available plug-and-play sound cards should be recognized automatically. If you can hear the samples that are played during configuration, just click OK and everything will be set up for you.

audio drivers

If your card is not detected automatically, you may be presented with a list of sound cards and/or of sound card properties from which to choose. After that, you will have to provide the correct I/O port, IRQ and DMA settings. Information about these settings can be found in your sound card documentation. If you are on a dual boot system with MS Windows, this information can be found in the Windows Control Panel as well.

If automatic sound card detection fails

If your soundcard is not supported by default, you will need to apply other techniques. These are described in the Linux Sound HOWTO.

### Drivers and Architecture

There are generally two types of sound architecture: the older Open Sound System or OSS, which works with every UNIX-like system, and the newer Advanced Linux Sound Architecture or ALSA, that has better support for Linux, as the name indicates. ALSA also has more features and allows for faster driver development. We will focus here on the ALSA system.

audio architecture
audio OSS
audio ALSA

Today, almost all mainstream audio chipsets are supported. Only some high-end professional solutions and some cards developed by manufacturers refusing to document their chipset specifications are unsupported. An overview of supported devices can be found on the ALSA site at .

Configuring systems installed with ALSA is done using the `alsaconf` tool. Additionally, distributions usually provide their own tools for configuring the sound card; these tools might even integrate the old and the new way of handling sound devices.

## Sound and video playing

### CD playing and copying

The cdp package comes with most distributions and provides `cdp` or `cdplay`, a text-based CD player. Desktop managers usually include a graphical tool, such as the `gnome-cd` player in Gnome, that can be started from a menu.

cdp
cdplay
CD audio CD playing
gnome-cd

Be sure to understand the difference between an audio CD and a data CD. You do not have to mount an audio CD into the file system in order to listen to it. This is because the data on such a CD are not Linux file system data; they are accessed and sent to the audio output channel directly, using a CD player program. If your CD is a data CD containing `.mp3` files, you will first need to mount it into the file system, and then use one of the programs that we discuss below in order to play the music. How to mount CDs into the file system is explained in .

The `cdparanoia` tool from the package with the same name reads audio directly as data from the CD, without analog conversions, and writes data to a file or pipe in different formats, of which `.wav` is probably the most popular. Various tools for conversion to other formats, formats, such as `.mp3`, come with most distributions or are downloadable as separate packages. The GNU project provides several CD playing, ripping and encoding tools, database managers; see the Free Software Directory, Audio section for detailed information.

cdparanoia
CD audio CD ripping

Audio-CD creation is eased, among many others, with the `kaudiocreator` tool from the KDE suite. It comes with clear information from the KDE Help Center.

kaudiocreator

CD burning is covered in general in .

### Playing music files

#### mp3 files

The popular `.mp3` format is widely supported on Linux machines. Most distributions include multiple programs that can play these files. Among many other applications, XMMS, which is presented in the screenshot below, is one of the most wide-spread, partially because it has the same look and feel as the Windows tool.

files music files

XMMS mp3 player

XMMS looks very familiar to MS Windows users, showing a hi-fi installation frontpanel.

Also very popular for playing music are AmaroK, a KDE application that is steadily gaining popularity, and MPlayer, which can also play movies.

Restrictions

Some distributions don't allow you to play MP3's without modifying your configuration, this is due to license restrictions on the MP3 tools. You might need to install extra software to be able to play your music.

In text mode, you can use the `mplayer` command:

mplayer

    [tille@octarine ~]$ mplayer /opt/mp3/oriental/*.mp3
    MPlayer 1.0pre7-RPM-3.4.2 (C) 2000-2005 MPlayer Team
    CPU: Advanced Micro Devices Duron Spitfire (Family: 6, Stepping: 1)
    Detected cache-line size is 64 bytes
    CPUflags:  MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 0 SSE2: 0
    Playing /opt/oldopt/mp3/oriental/Mazika_Diana-Krozon_Super-Star_Ensani-Ma-
    Bansak.mp3.
    Cache fill:  1.17% (98304 bytes)    Audio file detected.
    Clip info:
    Title: Ensani-Ma-Bansak.mp3
    Artist: Diana-Krozon
    Album: Super-Star
    Year:
    Comment:
    Genre: Unknown
    ==========================================================================
    Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
    mpg123: Can't rewind stream by 450 bits!
    AUDIO: 44100 Hz, 2 ch, s16le, 160.0 kbit/11.34% (ratio: 20000->176400)
    Selected audio codec: [mp3] afm:mp3lib (mp3lib MPEG layer-2, layer-3)
    ==========================================================================
    Checking audio filter chain for 44100Hz/2ch/s16le -> 44100Hz/2ch/s16le...
    AF_pre: 44100Hz/2ch/s16le
    AO: [oss] 44100Hz 2ch s16le (2 bps)
    Building audio filter chain for 44100Hz/2ch/s16le -> 44100Hz/2ch/s16le...
    Video: no video
    Starting playback...
    A: 227.8 (03:23:.1) 1.8% 12%

#### Other formats

It would lead us too far to discuss all possible audio formats and ways to play them. An (incomplete) overview of other common sound playing and manipulating software:

audio applications

- Ogg Vorbis: Free audio format: see the GNU audio directory for tools - they might be included in your distribution as well. The format was developed because MP3 is patented.

- Real audio and video: `realplay` from RealNetworks.

- SoX or Sound eXchange: actually a sound converter, comes with th e `play` program. Plays `.wav`, `. ogg` and various other formats, including raw binary formats.

- Playmidi: a MIDI player, see the GNU directory.

- AlsaPlayer: from the Advanced Linux Sound Architecture project, see the AlsaPlayer web site.

- `mplayer`: plays just about anything, including mp3 files. More info on the MPlayerHQ website.

- `hxplay`: supports RealAudio and RealVideo, mp3, mp4 audio, Flash, wav and more, see HelixDNA (not all components of this software are completely free).

- `rhythmbox`: based on the GStreamer framework, can play everything supported in GStreamer, which claims to be able to play everything, see the Rhythmbox and GStreamer sites.

Check your system documentation and man pages for particular tools and detailed explanations on how to use them.

I don't have these applications on my system!

A lot of the tools and applications discussed in the above sections are optional software. It is possible that such applications are not installed on your system by default, but that you can find them in your distribution as additional packages. It might also very well be that the application that you are looking for is not in your distribution at all. In that case, you need to download it from the application's web site.

#### Volume control

`aumix` and `alsamixer` are two common text tools for adjusting audio controls. Use the arrow keys to toggle settings. The `alsamixer` has a graphical interface when started from the Gnome menu or as `gnome-alsamixer` from the command line. The `kmix` tool does the same in KDE.

aumix
alsamixer
audio volume control
gnome-alsamixer
kmix

Regardless of how you choose to listen to music or other sounds, remember that there may be other people who may not be interested in hearing you or your computer. Try to be courteous, especially in office environments. Use a quality head-set, rather than the ones with the small ear pieces. This is better for your ears and causes less distraction for your colleagues.

### Recording

Various tools are again available that allow you to record voice and music. For recording voice you can use `arecord` on the command line:

arecord
audio recording

    alexey@russia:~> arecord /var/tmp/myvoice.wav
    Recording WAVE '/var/tmp/myvoice.wav' : Unsigned 8 bit, Rate 8000 Hz, Mono
    Aborted by signal Interrups...

Interrupt means that the application has caught a Ctrl+C. Play the sample using the simple `play` command.

This is a good test that you can execute prior to testing applications that need voice input, like Voice over IP (VoIP). Keep in mind that the microphone input should be activated. If you don't hear your own voice, check your sound settings. It often happens that the microphone is muted or on verry low volume. This can be easily adjusted using `alsamixer` or your distribution-specific graphical interface to the sound system.

In KDE you can start the `krec` utility, Gnome provides the `gnome-sound-recorder`.

krec
gnome-sound-recorder

## Video playing, streams and television watching

Various players are available:

video applications

- `xine`: a free video player

- `ogle`: DVD player.

- `okle`: KDE version of `ogle`

- `mplayer`: Movie Player for Linux

- `totem`: plays both audio and video files, audio CDs, VCD and DVD.

- `realplay`: from RealNetworks.

- `hxplay`: a Real alternative, see HelixDNA.

- `kaffeine`: media player for KDE3.

Most likely, you will find one of these in your graphical menus.

Keep in mind that all codecs necessary for viewing different types of video might not be on your system by default. You can get a long way downloading W32codecs and libdvdcss.

The LDP released a document that is very appropriate for this section. It is entitled DVD Playback HOWTO and describes the different tools available for viewing movies on a system that has a DVD drive. It is a fine addition to the DVD HOWTO that explains installation of the drive.

For watching TV there is choice of the following tools, among many others for watching and capturing TV, video and other streams:

- `tvtime`: great program with station management, interaction with teletext, film mode and much more.

- `zapping`: Gnome-specific TV viewer.

- `xawtv`: X11 TV viewer.

## Internet Telephony

### What is it?

Internet telephony, or more common, Voice over IP (VoIP) or digital telephony allows parties to exchange voice data flows over the network. The big difference is that the data flows over a general purpose network, the Internet, contrary to conventional telephony, that uses a dedicated network of voice transmission lines. The two networks can be connected, however, under special circumstances, but for now this is certainly not a standard. In other words: it is very likely that you will not be able to call people who are using a conventional telephone. If it is possible at all, it is likely that you will need to pay for a subscription.

VoIP what?

While there are currently various applications available for free download, both free and proprietary, there are some major drawbacks to telephony over the Internet. Most noticably, the system is unreliable, it can be slow or there can be a lot of noise on the connection, and it can thus certainly not be used to replace conventional telephony - think about emergency calls. While some providers take their precautions, there is no guarantee that you can reach the party that you want to call.

Most applications currently do not use encryption, so be aware that it is potentially easy for someone to eavesdrop on your conversations. If security is a concern for you, read the documentation that comes with your VoIP client. Additionally, if you are using a firewall, it should be configured to allow incoming connections from anywhere, so using VoIP also includes taking risks on the level of site security.

### What do you need?

#### Server Side

First of all, you need a provider offering the service. This service might integrate traditional telephony and it might or might not be free. Among others are SIPphone, Vonage, Lingo, AOL TotalTalk and many locally accessible providers offering the so-called full phone service. Internet phone service only is offered by Skype, SIP Broker, Google and many others.

VoIP service providers

If you want to set up a server of your own, you might want to look into Asterisk.

#### Client Side

On the client side, the applications that you can use depend on your network configuration. If you have a direct Internet connection, there won't be any problems, provided that you know on what server you can connect, and usually that you also have a username and password to authenticate to the service.

VoIP clients

If you are behind a firewall that does Network Address Translation (NAT), however, some services might not work, as they will only see the IP address of the firewall and not the address of your computer, which might well be unroutable over the Internet, for instance when you are in a company network and your IP address starts with 10., 192.168. or another non-routable subnet prefix. This depends on the protocol that is used by the application.

Also, available bandwidth might be a blocking factor: some applications are optimized for low bandwidth consumption, while others might require high bandwidth connections. This depends on the codec that is used by the application.

Among the most common applications are the Skype client, which has an interface that reminds of instant messaging, and X-Lite, the free version of the XTen softphone, which looks like a mobile telephone. However, while these programs are available for free download and very popular, they are not free as in free speech: they use proprietary protocols and/or are only available in binary packages, not in source format.

Free and open VoIP clients are for instance Gizmo, Linphone, GnomeMeeting and KPhone.

Client hardware

While your computer, especially if it is a laptop PC, might have a built-in microphone, the result will be far better if you connect a headset. If you have the choice, opt for a USB headset, as it functions independently from existing audio hardware. Use `alsamixer` to configure input and output sound levels to your taste.

VoIP applications are definitely a booming market. Volunteers try to document the current status at .

## Summary

The GNU/Linux platform is fully multi-media enabled. A wide variety of devices like sound cards, tv-cards, headsets, microphones, CD and DVD players is supported. The list of applications is sheer endless, that is why we needed to shortenthe list of new commands below and limit ourselves to general audio commands.

New commands in chapter 11: Audio

Command | Meaning
--- | ---
`alsaconf` | Configure the ALSA sound system.
`alsamixer` | Tune output levels of ALSA driver.
`arecord` | Record a sound sample.
`aumix` | Audio mixer tool.
`cdp` | Play an audio CD.
`cdparanoia` | Rip an audio CD.
`cdplay` | Play an audio CD.
`gnome-alsamixer` | Gnome ALSA front-end.
`gnome-cd` | Gnome front-end for playing audio CDs.
`gnome-sound-recorder` | Gnome front-end for recording sound samples.
`kaudiocreator` | KDE front-end for creating audio CDs.
`kmix` | KDE front-end for sound settings.
`krec` | KDE front-end for recording sound samples.
`mplayer` | Multi-media player.
`play` | Command line tool for playing sound samples.

## Exercises

1. From the Gnome or KDE menu, open your sound configuration panel. Make sure audio boxes or headset are connected to your system and find an output level that is comfortable for you. Make sure, when your system is ALSA-compatible, that you use the appropriate panel.

2. If you have a microphone, try recording a sample of your own voice. Make sure the input volume is not too high, as this will result in high-pitched tones when you communicate with others, or in transfering background noise to the other party. On the command line, you might even try to use `arecord` and `aplay` for recording and playing sound.

3. Locate sound files on your system and try to play them.

4. Insert an audio CD and try to play it.

5. Find a chat partner and configure a VoIP program. (You might need to install one first.)

6. Can you listen to Internet radio?

7. If you have a DVD player and a movie on a DVD disk, try to play it.