alsa学习--1.环境搭建

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
http://www.linuxjournal.com/article/6735

LFS文档之多媒体部分
http://www.linuxfromscratch.org/blfs/view/svn/multimedia/libdriv.html

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. 附安装方法:
  2. 1. make _install ,然后./configure --prefix=$(real_path)/_install,然后make,最后make install
  3. 2. 安装错误解决
  4.   a. patch: command not found
  5.        解决: sudo apt-get install patch
  6.   b. configure: error: required curses helper header not found
  7.        解决:sudo apt-get install libncurses5-dev
  8.   c. configure: error: panelw library not found
  9.        解决: ./configure --with-curses=ncurses
  10.   d. xmlto: command not found
  11.        解决: sudo apt-get install xmlto
ubuntu上通常己安装过了alsa,这儿下载源码编译安装主要是为了方便加打印调试用的。
3. Linux ALSA 驱动测试
3.1 如果安装ALSA,在/proc会看到相应设备:
  1. cong@msi:/tmp$ cat /proc/asound/devices
  2.   1: : sequencer
  3.   2: [ 1- 2]: digital audio capture
  4.   3: [ 1- 0]: digital audio playback
  5.   4: [ 1- 0]: digital audio capture
  6.   5: [ 1- 0]: hardware dependent
  7.   6: [ 1] : control
  8.   7: [ 0- 8]: digital audio playback
  9.   8: [ 0- 7]: digital audio playback
  10.   9: [ 0- 3]: digital audio playback
  11.  10: [ 0- 0]: hardware dependent
  12.  11: [ 0] : control
  13.  33: : timer
3.2       
正常情况下,在你的/dev/snd会看到如下设备结点(有例外, 就是内核驱动调整了结点位置)
  1. cong@msi:/tmp$ ls -/dev/snd
  2. total 0
  3. drwxr-xr-x 2 root root 80 Sep 6 10:00 by-path
  4. crw-rw-rw-+ 1 root audio 116, 11 Sep 6 10:00 controlC0
  5. crw-rw-rw-+ 1 root audio 116, 6 Sep 6 10:00 controlC1
  6. crw-rw-rw-+ 1 root audio 116, 10 Sep 6 10:00 hwC0D0
  7. crw-rw-rw-+ 1 root audio 116, 5 Sep 6 10:00 hwC1D0
  8. crw-rw-rw-+ 1 root audio 116, 9 Sep 6 10:00 pcmC0D3p
  9. crw-rw-rw-+ 1 root audio 116, 8 Sep 6 10:00 pcmC0D7p
  10. crw-rw-rw-+ 1 root audio 116, 7 Sep 6 10:00 pcmC0D8p
  11. crw-rw-rw-+ 1 root audio 116, 4 Sep 6 10:06 pcmC1D0c
  12. crw-rw-rw-+ 1 root audio 116, 3 Sep 6 10:09 pcmC1D0p
  13. crw-rw-rw-+ 1 root audio 116, 2 Sep 6 10:00 pcmC1D2c
  14. crw-rw-rw-+ 1 root audio 116, 1 Sep 6 10:00 seq
  15. 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  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值