ALSA学习笔记

一、概述

        ALSA(Advanced Linux Sound Architecture),高级Linux声音架构的简称。在Linux操作系统上提供了音频MIDI(Musical Instrument Digital Interface,音乐设备数字化接口)的支持。在Linux 2.6的内核版本后,ALSA成为了默认的声音子系统,用来替换2.4系列内核中的OSS(Open Sound System,开放声音系统)。目前已经成为了Linux的主流音频体系结构。

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

        ALSA 主要有如下特点:

  • 支持多种声卡设备。
  • 模块化的内核驱动程序。
  • 支持 SMP(对称多处理)和多线程。
  • 提供应用开发函数库兼容OSS应用程序。

二、系统架构

在这里插入图片描述
用户空间
        主要由ALSA Libray API对应用程序提供统一的API接口,各个APP应用程序只要调用alsa-lib提供的API接口来实现放音、录音、控制。现在提供了两套基本的库,tinyalsa是一个简化的alsa-lib库,现在Android的系统中主要使用它。
内核空间

  • ALSA Core
    ALSA核心层,向上提供逻辑设备(PCM、CTL、MIDI、TIMER…)系统调用,向下驱动硬件设备(Machine、I2S、DMA、CODEC)。
  • ASOC Core
    建立在标准ALSA Core基础上,为了更好支持嵌入式系统和应用于移动设备的音频Codec的一套软件体系。提供了各种音频设备驱动的通用方法和数据结构,为Audio Driver提供ALSA Driver API。
  • 硬件驱动
    音频硬件设备驱动,由三大部分组成,分别是:Machine、Platform、Codec。提供的ALSA Driver API和相应音频设备的初始化及工作流程,实现具体的功能组件,这也是驱动开发人员需要具体实现的部分。

三、常用操作命令

1、安装ALSA

apt-get install xmlto libasound2-dev linux-sound-base alsa-base alsa-utils

2、查看音频设备

cat /proc/asound/cards

3、列出音频设备

arecord -l

4、音量控制器

alsamixer
在这里插入图片描述

  • MM表示静音,00表示非静音,可以通过按键M进行切换。
  • 通过左右方向键切换不同的参数配置。通过上下方向键调节音量值。
  • ESC键保存并退出。

四、常见问题

1、cannot open mixer: 没有那个文件或目录

现象: 输入alsamixer命令后,显示cannot open mixer: 没有那个文件或目录
原因: 这是由于声卡配置问题。
解决方案:

  • 输入aplay -l命令查看当前声卡信息,找到声卡编号,例如:这里声卡编号为0。
    在这里插入图片描述

  • 编辑/usr/share/alsa/alsa.conf配置文件,查看defaults.ctl.carddefaults.pcm.card配置项的编号,改为上一步查到的声卡编号,保存退出
    在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值