Arm-Linux 移植 alsa

ref :

https://www.cnblogs.com/yutingliuyl/p/6718875.html

https://blog.csdn.net/yuanxinfei920/article/details/52954941


 

背景:
平台:
  alsa-utils        : 1.0.22

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是一个全然开放源码的音频驱动程序集,除了像OSS那样提供了一组内核驱动程序模块之外,ALSA还专门为简化应用程序的编写提供了对应的函数库,与OSS提供的基于ioctl的原始编程接口相比。ALSA函数库使用起来要更加方便一些。利用该函数库,开发人员能够方便快捷的开发出自己的应用程序,细节则留给函数库内部处理。当然 ALSA也提供了类似于OSS的系统接口,只是ALSA的开发人员建议应用程序开发人员使用音频函数库而不是驱动程序的API。

 

  alsa-lib是ALSA 应用库(必需基础库),alsa-utils包含一些ALSA小的测试工具.如aplay、arecord 、amixer播放、录音和调节音量小程序,对于一些应用开发者只需要以上两个软件包就可以了。

 
主机准备 :

为了方便管理,创建有关的目录

mkdir alsa
cd alsa
mkdir  compressed  install source

下载并解压有关的源码:

cd compressed

wget -c ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.22.tar.bz2
wget -c ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.22.tar.bz2

#解压下载的包

tar -C ../source -xf alsa-lib-1.0.22.tar.bz2
tar -C ../source -xf alsa-utils-1.0.22.tar.bz2

 

编译:

编译 alsa-lib

cd ../source/alsa-lib-1.0.22

创建以下脚本

#
# schips@dingtalk.com # https:
//gitee.com/schips/ # Mon 02 Sep 2019 11:39:38 AM HKT # #!/bin/sh
OUTPUT
=/home/schips/arm/alsa/install/alsa_lib mkdir $OUTPUT -p && rm $OUTPUT/* -rf ./configure \ --host=arm-xilinx-linux-gnueabi \ --prefix=$OUTPUT \ --enable-static \ --enable-shared \ --disable-Python \ --with-configdir=/usr/local/share #--with-plugindir=/usr/local/lib/alsa_lib sudo make clean sudo make && sudo  sudo  PATH=$PATH make install

 



alsa-utils

(1)  将参数--prefix指定的路径值/bin/目录中的文件移植到arm linux系统中的/usr/bin或其它目录中,如果移植到其它目录中,则需要将该目录添加到环境变量PATH指的执行路径中

(2)  将参数--prefix指定的路径值/sbin/目录中的文件移植到arm linux系统中的/usr/bin或其它目录中,如果移植到其它目录中,则需要将该目录添加到环境变量PATH指的执行路径中

(3)  其它内容可选,但是如果移植,那么它们在arm linux系统中的目录路径必须和其在pc机上的安装路径相同

 

创建有关的设备文件

使用以下脚本:

#!/bin/sh

mkdir /dev/snd
cd /dev/snd

mknod mixer c 14 0
mknod dsp   c 14 3
mknod audio c 14 4

mknod controlC0 c 116 0
mknod seq       c 116 1

mknod pcmC0D0p c 116 16
mknod pcmC0D1p c 116 17
mknod pcmC0D0c c 116 24
mknod pcmC0D1c c 116 25

mknod timer    c 116 33

    若出现以下的可忽略

    mkdir: can't create directory '/dev/snd': File exists
    mknod: controlC0: File exists
    mknod: pcmC0D0p: File exists
    mknod: pcmC0D0c: File exists
    mknod: timer: File exists
      
      # 对于有关设备的解释
      controlC0  :用于声卡的控制,如麦克风的控制或者混音的控制;
      pcmC0D0c:用于录音的pcm设备;
      pcmC0D0p:用于播放的pcm设备;
      Seq: 音序器;
      Timer:定时器;

测试:

录音和播放

arecord -d3 -c1 -r16000 -twav -fS16_LE example.wav

说明:
-d:录音时长(duration)  秒
-c:音轨(channels)
-r:采样频率(rate)  每一秒采集多少个样本
-t:封装格式(type)
-f:量化位数(format)16bit  小端

执行如下命令播放

aplay example.wav

 

录音和播放
arecord -d3 -c1 -r16000 -twav -fS16_LE example.wav
说明:
-d:录音时长(duration)  秒
-c:音轨(channels)
-r:采样频率(rate)  每一秒采集多少个样本
-t:封装格式(type)
-f:量化位数(format)16bit  小端

执行如下命令播放
aplay example.wav

转载于:https://www.cnblogs.com/schips/p/11445249.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值