1. 介绍
ALSA产生的原因是,原先的linux声卡驱动oss开发维护不及时。Jaroslav Kysela写了一个声卡驱动,并开始了ALSA项目。从内核2.6开始,ALSA已经内建在内核中.
ALSA是接近内核低级的声音操作,能够最大化地控制声音和提高性能。若只是想播放音频文件,可以利用系统中高级的API库,如SDL和OpenAL
1.1
ALSA: Advanced Linux Sound Architecture (ALSA),它包括三个部分
alsa-driver --> ALSA的内核驱动,从linux2.6中己集成
alsa-lib --> ALSA 应用库即libasound,它给上层应用提供alsa的API
alsa-utils --> ALSA小的测试工具.如aplay/arecord等
参考:
Introduction to Sound Programming with ALSA
LFS文档之多媒体部分
2. alsa的编译安装
alsa-lib的下载地址:
ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.23.tar.bz2
alsa-util的下载地址
ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.23.tar.bz2
-
附安装方法:
-
1. make _install ,然后./configure --prefix=$(real_path)/_install,然后make,最后make install
-
2. 安装错误解决
-
a. patch: command not found
-
解决: sudo apt-get install patch
-
b. configure: error: required curses helper header not found
-
解决:sudo apt-get install libncurses5-dev
-
c. configure: error: panelw library not found
-
解决: ./configure --with-curses=ncurses
-
d. xmlto: command not found
-
解决: sudo apt-get install xmlto
ubuntu上通常己安装过了alsa,这儿下载源码编译安装主要是为了方便加打印调试用的。
3. Linux ALSA 驱动测试
3.1 如果安装ALSA,在/proc会看到相应设备:
-
cong@msi:/tmp$ cat /proc/asound/devices
-
1: : sequencer
-
2: [ 1- 2]: digital audio capture
-
3: [ 1- 0]: digital audio playback
-
4: [ 1- 0]: digital audio capture
-
5: [ 1- 0]: hardware dependent
-
6: [ 1] : control
-
7: [ 0- 8]: digital audio playback
-
8: [ 0- 7]: digital audio playback
-
9: [ 0- 3]: digital audio playback
-
10: [ 0- 0]: hardware dependent
-
11: [ 0] : control
-
33: : timer
3.2
正常情况下,在你的/dev/snd会看到如下设备结点(有例外, 就是内核驱动调整了结点位置)
-
cong@msi:/tmp$ ls -l /dev/snd
-
total 0
-
drwxr-xr-x 2 root root 80 Sep 6 10:00 by-path
-
crw-rw-rw-+ 1 root audio 116, 11 Sep 6 10:00 controlC0
-
crw-rw-rw-+ 1 root audio 116, 6 Sep 6 10:00 controlC1
-
crw-rw-rw-+ 1 root audio 116, 10 Sep 6 10:00 hwC0D0
-
crw-rw-rw-+ 1 root audio 116, 5 Sep 6 10:00 hwC1D0
-
crw-rw-rw-+ 1 root audio 116, 9 Sep 6 10:00 pcmC0D3p
-
crw-rw-rw-+ 1 root audio 116, 8 Sep 6 10:00 pcmC0D7p
-
crw-rw-rw-+ 1 root audio 116, 7 Sep 6 10:00 pcmC0D8p
-
crw-rw-rw-+ 1 root audio 116, 4 Sep 6 10:06 pcmC1D0c
-
crw-rw-rw-+ 1 root audio 116, 3 Sep 6 10:09 pcmC1D0p
-
crw-rw-rw-+ 1 root audio 116, 2 Sep 6 10:00 pcmC1D2c
-
crw-rw-rw-+ 1 root audio 116, 1 Sep 6 10:00 seq
-
crw-rw-rw-+ 1 root audio 116, 33 Sep 6 10:00 timer
3.3 ubuntu
通常桌面版已经安装了alsa-utils.可以执行一下aplay -h,测试是否输出.如果可以来播入一下wav文件来测试整个环境是否正常工作.
以下是一些用alsa-utils测试样例
播放wave文件
aplay ./test.wav
变频播放,(以是以 44 KHz来播放音频)
aplay -D rate_44k /mnt/nfs/test.wav
录音,以20秒的间隔(-d 20),立体声(-c 2),频率是 8000Hz来录制Wave格式音频
arecord -d 20 -c 2 -t wav -r 8000 -f "Signed 16 bit Little Endian" /mnt/nfs/test.wav
测试混音播放(先是播放test1.wav,然后再同时播放test2.wav)
aplay -D plug:dmix_44k /mnt/nfs/test1.wav &
aplay -D plug:dmix_44k /mnt/nfs/test2.wav
设置放音增益(0 to 3)
amixer set Master 1
设置录音音量(0-31)
amixer set Line 10
参考:
asla架构和alsa-lib音频库的移植
http://blog.csdn.net/reille/article/details/5845913
阅读(2062) | 评论(0) | 转发(0) |