alsa开源库介绍

本文详细介绍了Alsa(高级Linux声音架构)的基本概念、架构原理及使用方法。Alsa不仅提供了Linux平台上的声卡驱动,还提供了应用程序接口(API),使得开发者能够在不了解底层硬件细节的情况下进行声音的采集和播放。此外,文中还探讨了Alsa的设备文件结构、配置方法及常见工具的使用。
摘要由CSDN通过智能技术生成

Alsa介绍

1.Alsa 的原理;

2.Alsa的架构;

3.Alsa移植;

4.Alsa编程的注意的问题;


1.什么是alsa

Alsa( Advanced Linux Sound Architecture )是linux下的声卡驱动,它提供

了linux硬件的驱动,同时还提供了应用

录制或者播放的api函数,可以在不考虑底层硬件的基础上实现对声音的采

集或者播放;alsa也提供了完整的工具,可以实现对声卡的设置和一些录

音播放的功能。


Alsa结构


四、设备打开过程和数据流程


ALSA设备文件结构:

/dev/snd
crw-rw----+ 1 root audio 116, 8 2011-02-23 21:38 controlC0
crw-rw----+ 1 root audio 116, 4 2011-02-23 21:38 midiC0D0
crw-rw----+ 1 root audio 116, 7 2011-02-23 21:39 pcmC0D0c
crw-rw----+ 1 root audio 116, 6 2011-02-23 21:56 pcmC0D0p
crw-rw----+ 1 root audio 116, 5 2011-02-23 21:38 pcmC0D1p
crw-rw----+ 1 root audio 116, 3 2011-02-23 21:38 seq
crw-rw----+ 1 root audio 116, 2 2011-02-23 21:38 timer

controlC0  :用于声卡的控制,如麦克风的控制或者混音的控制;
pcmC0D0c:用于录音的pcm设备;
pcmC0D0p:用于播放的pcm设备;
Seq: 音序器;
Timer:定时器;

机顶盒和虚拟机如何使用alsa:

1.首先要确保kernel支持alsa,在kernel编译中打开相应的选项:

2.编译alsa-lib----alsa的api函数在这里集成
./configure --host=mipsel-linux --prefix=/home/cxc/bcm_std/7581STD_5.5/ipphone/install --with-alsa-devdir=/dev --with-configdir=/usr/share/alsa --enable-static --enable-shared  --disable-python  --with-configdir=/usr/local/share/alsa   --with-plugindir=/usr/local/lib/alsa_lib
Prefix  : 安装的目录;    with-alsa-devdir : 配置文件安装目录;
with-plugindir: alsa的插件安装的目录    
host:交叉编译工具

音频的一些概念:

样本长度(sample):样本是记录音频数据最基本的单位,常见的有8位和16位。

通道数(channel):该参数为1表示单声道,2则是立体声。

桢(frame):桢记录了一个声音单元,其长度为样本长度与通道数的乘积。

采样率(rate):每秒钟采样次数。

周期(period):音频设备一次处理所需要的桢数,对于音频设备的数据访问以及音频数据的存储,都是以此为单位。

交错模式(interleaved):是一种音频数据的记录方式,在交错模式下,数据以连续桢的形式存放,即首先记录完桢1的左声道样本和右声道样本(假设为立体声格式),再开始桢2的记录。而在非交错模式下,首先记录的是一个周期内所有桢的左声道样本,再记录右声道样本,数据是以连续通道的方式存储。不过多数情况下,我们只需要使用交错模式就可以了。

Alsa的使用:

1.alsa-util的编译 :alsa相应的工具

在编译alsa工具的时候,需要用到编译alsa-lib生成的库,和头文件。需要指

定刚才编译alsalib的安装目录,和头文件生成的目录;

编译后在install目录下的bin文件中生成相应的可执行工具:

如:alsamixer   aplay  arecord

./configure --host=mipsel-linux --prefix=/home/cxc/bcm_std/7581STD_5.5/ipphone/install  CPPFLAGS=-I/home/cxc/bcm_std/7581STD_5.5/ipphone/install/include LDFLAGS=-L/home/cxc/bcm_std/7581STD_5.5/ipphone/install/lib --disable-alsamixer --disable-xmlto --disable-nls

Alsa的配置文件:

snd_pcm_sw_params_set_stop_threshold

这个是对用户空间中过的一些参数的设置,比如要设置当缓存多少数据后开

始启动声卡来进行播放或者录制;

snd_pcm_hw_params_set_period_time_near

是对硬件的一些设置,比如采样率等的设置


数据都是从硬件的buufer到用户的buffer一层层拷贝上来的,如果拷贝的不及

时,就可能造成底层的数据的上溢或者下溢。

Alsa的使用:

snd_pcm_sw_params_set_stop_threshold

这个是对用户空间中过的一些参数的设置,比如要设置当缓存多少数据后开

始启动声卡来进行播放或者录制;

snd_pcm_hw_params_set_period_time_near

是对硬件的一些设置,比如采样率等的设置


数据都是从硬件的buufer到用户的buffer一层层拷贝上来的,如果拷贝的不及

时,就可能造成底层的数据的上溢或者下溢。

Alsa的工具的使用:

Aplay :播放

         aplay   –D hw:0,0  -f S16_LE –r 44100 –c 2   tmp.pcm

Arecord:录制
   
         arecord –D hw:0,0  -f S16_LE –r 44100 –c 2   tmp.pcm

speaker-test:声卡的测试工具

         speaker-test -Dplug:front -c2
Amixer :声卡的设置工具

               amixer -c 1 set Line,0 80%,40% unmute cap


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值