什么是ALSA呢?ALSA是Advanced Linux Sound Architecture 的缩写,也就是控制发声和录音,
目前已经成为了linux的主流音频体系结构,并已经集成到Linux Kernel之中。
ALSA的官网已经文档都在http://www.alsa-project.org/。
在官网提供了了如下源码

1
2
3
4
5
6
7
8
alsa-lib-1.1.4
alsa-utils-1.1.4
alsa-tools-1.1.3
alsa-firmware-1.0.29
alsa-plugins-1.1.4
alsa-oss-1.0.28
pyalsa-1.0.29
tinycompress-1.1.4

其中我们完成录音和播放只需要前两个就行了。

编译

编译alsa-lib

1
2
3
4
5
tar -xvf alsa-lib-1.0.27.2.tar.bz2
cd alsa-lib-1.0.27.2
CC=arm-none-linux-gnueabi-gcc ./configure --host=arm-linux --prefix=/home/m/3rd/alsa/install/
make
make install

编译alsa-utils

1
2
3
4
5
tar -xvf alsa-utils-1.0.27.2.tar.bz2
cd alsa-utils-1.0.27.2
CC=arm-none-linux-gnueabi-gcc ./configure --prefix=/home/m/3rd/alsa/install/ --host=arm-linux --with-alsa-inc-prefix=/home/m/3rd/alsa/install/include --with-alsa-prefix=/home/m/3rd/alsa/install/lib --disable-alsamixer --disable-xmlto --disable-nls
make
make install

arecord录音

参数介绍

-h查看帮助

-l查看可以用的硬件设备

1
2
3
4
5
6
7
**** List of CAPTURE Hardware Devices ****
card 0: Intel [HDA Intel], device 0: ALC662 rev1 Analog [ALC662 rev1 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 2: ALC662 rev1 Alt Analog [ALC662 rev1 Alt Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0

-D参数用于指定音频设备PCM,以hwx,x开头
如果用第一个播放的话,那么pcm设备就位hw0,0,

对应关系如下

card 0 device 0
hw0 0
声卡号 设备号

命令举例

1
2
3
4
5
6
arecord -D default:CARD=mcasp0 -d 100000 -f cd -t raw mysong15.raw
arecord -D default:CARD=mcasp0 -d 100000 -f dat -t raw mysong10.raw
arecord -D default:CARD=mcasp0 -d 100000 -f S16_LE -r 16000 -t raw mysong10.raw
arecord -Dhw:0,1 -r8000 -f cd /a/1.wmv
arecord -Dhw:0,0 -r8000 -f S16_LE -c 2 /a/1.wmv
arecord -Dhw:0,2 -r48000 -f S32_LE -c 2 /a/1.wmv

aplay播放

-l显示设备

1
2
3
4
**** List of PLAYBACK Hardware Devices ****
card 0: Intel [HDA Intel], device 0: ALC662 rev1 Analog [ALC662 rev1 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0

-D参数用于指定音频设备PCM,以hwx,x开头
如果用第一个播放的话,那么pcm设备就位hw0,0,

对应关系如下

card 0 device 0
hw0 0
声卡号 设备号

-r指定采样频率:5512/8000/11025/16000/22050/32000/44100/48000/64000/88200/96000/176400/192000

-f指定采样格式上面列出了:cd/cdr/dat/S16_LE/S32_LE/.

命令举例

1
2
3
4
aplay -Dhw:0,1 -r8000 -f cd /a/1.wmv
aplay -Dhw:0,1 -r48000 -f cd /a/1.wmv
arecord -Dhw:0,2 -r48000 -f S32_LE -c 2 | aplay -Dhw:0,1 -r48000//一边采集一边播放

amixer控制

这不多说了,命令比较繁琐,建议用alasmixer代替

其实你也可以用alsamixer
它是基于文本下的图形界面的,可以通过键盘的上下键,左右键等,很方便地设置需要的音量,
开关某个switch(开关)等等操作。

附图

参考
http://www.cnblogs.com/cslunatic/p/3227655.html
一个可以下载wav文件的网站
http://www.externalharddrive.com/waves/animal/index.html