Lazy loaded image
📘在Ubuntu服务器下部署ALSA并测试
字数 878阅读时长 3 分钟
2025-11-15
2025-11-26
😀
此文章介绍了如何在Ubuntu下部署alsa
环境:虚拟机Ubuntu22.04版本
默认你已经安装了gcc、make等常用的工具。

简介

ALSA(Advanced Linux Sound Architecture,高级 Linux 声音架构)是 Linux 内核默认的底层音频驱动框架,替代了传统的 OSS(Open Sound System),负责管理音频硬件(声卡、麦克风、耳机等),提供统一的音频设备访问接口。无论是播放音乐、录音,还是开发音频应用(如你之前的音乐播放器项目),都离不开 ALSA 的支持。
整个ALSA的架构大概分为五个子系统
  • PCM子系统:音频流数据传输(播放、录音)snd_pcm_
  • Mixer子系统:负责音量等、混音控制 snd_mixer_
  • Control子系统:硬件控制、状态读取
  • RawMIDI子系统
  • Timer子系统:系统时钟等

1. 安装与测试alsa

  1. 安装alsa
    1. 测试是否能使用
      1. 输入指令amixer,查看能否正查查询驱动
        有类似于Simple mixer control……则代表安装成功

    2. mplayer的简单操控方式

    1. 在命令窗口控制

    1. 正常输入 amixer get "Master” 可以查看这个Master驱动的属性。
    1. 正常输入 amixer set "Master” n n为数字0-63 或者 0%-100% 可以设置“Master” 的音量。

    2. 使用ALSA Libs库来控制

    使用ALSA Libs可以去官网来查看官网的Libs手册 可以去官网下载源码或者Github下载 来阅读介绍参考(可以搭配vscode的绑定头文件配置,然后就可以愉快的使用F12跳转了~) 这里仅简单测试,控制音量
    TPS:
    输入aplay - l 可以查看所有的声卡(card)
    • 一个音频声卡card,可能有很多子设备,例如Device0、Device1…
    • 一个Device就相当于一个PCM通道
    在控制是可以通过card的编号也可以是通过声卡名称:
    • 例如0 1。但是需要注意设备重启car的编号可能会颠倒或更改。 即hw:0
    • 而且还可以通过card名称,例如 hw:AudioPCI
    • 控制声卡的某子设备,则为 hw:AudioPCI,0 则意为控制AudioPCI声卡的第0个子设备
    1. 安装ALSA库
    库的头文件在/use/include/alsa/asoundlib.h
    编译时需要链接asound
    1. 编写代码测试
      1. 控制音量所需用到的仅有mixer相关
    1. 测试代码: 其中CARD是使用aplay - l 查到的声卡设备 ELEM是使用amixer 查看到的 控制单元 Master 程序简单实现了音量的百分比控制 (实际有63挡, 这里我输入范围是0-100。实际设置和获取并计算得到的值有些误差我没做处理。) 编译指令:gcc vol.c -o run -lasound
       
       
      💡
      有关其他问题欢迎联系或者在评论区留言。
       
      上一篇
      KickPi K2B初体验:连接网络、配置shh、按键事件读取、交叉编译环境搭建与ARM架构库移植
      下一篇
      在Ubuntu服务器下部署mplayer并测试

      评论
      Loading...