ALSA 简介
ALSA 是 Advanced Linux Sound Architecture,高级 Linux 声音架构的简称,它在 Linux 操作系统上提供了音频和 MIDI(Musical Instrument Digital Interface,音乐设备数字化接口)的支持。在2.6系列内核中,ALSA 已经成为默认的声音子系统,用来替换2.4系列内核中的 OSS(Open Sound System,开放声音系统)。
ALSA 的主要特性包括:高效地支持从消费类入门级声卡到专业级音频设备所有类型的音频接口,完全模块化的设计, 支持对称多处理(SMP)和线程安全,对 OSS 的向后兼容,以及提供了用户空间的 alsa-lib 库来简化应用程序的开发。
想了解更多的关于 ALSA 的这一开源项目的信息和知识,请查看:http://www.alsa-project.org/。
ALSA 音频工具编译安装
1、官网 http://www.alsa-project.org 下载 alsa-lib 和 alsa-utils。
例如:alsa-lib-1.0.27.2.tar.bz2 和 alsa-utils-1.0.27.2.tar.bz2
2、创建 alsa 安装目录(如 /home/rudy/alsa 目录),并在该目录下创建 install 目录,接着把压缩包拷到 alsa 目录下。
3、编译 alsa-lib 用户空间库。
# 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/rudy/alsa/install/
# make
# make install
1
2
3
4
5
4、编译 alsa-utils 工具包。
alsa-utils 包含的工具有:alsactl, aconnect, alsamixer, amidi, amixer, aplay, aplaymidi, arecord, arecordmidi, aseqnet, iecset, speaker-test
# 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/rudy/alsa/install/ --host=arm-linux --with-alsa-inc-prefix=/home/rudy/alsa/install/include --with-alsa-prefix=/home/rudy/alsa/install/lib --disable-alsamixer --disable-xmlto --disable-nls
# make
1
2
3
4
5、简单说明
–prefix 指定了 alsa-lib 编译后的安装目录,包含库和头文件,编译 alsa-utils 时候要指明它的库 lib 和头文件 include 的目录。
alsamixer 是图形化的 amixer 工具,需要 ncurses 的支持,在 secure CRT 中乱码,怕麻烦加 –disable-alsamixer 禁用。
音频录制——arecord
# arecord -h
Usage: arecord [OPTION]... [FILE]...
-h, --help help
--version print current version
-l, --list-devices list all soundcards and digital audio devices
-L, --list-pcms list device names
-D, --device=NAME select PCM by name
-q, --quiet quiet mode
-t, --file-type TYPE file type (voc, wav, raw or au)
-c, --channels=# channels
-f, --format=FORMAT sample format (case insensitive)
-r, --rate=# sample rate
-d, --duration=# interrupt after # seconds
-M, --mmap mmap stream
-N, --nonblock nonblocking mode
-F, --period-time=# distance between interrupts is # microseconds