常用 ###### ALSA ==== 1. ALSA 库:提供设备检测、设备操作和 MIDI 接口等 API。应用程序通过调用 ALSA 库的 API 来操作音频设备。 2. ALSA 驱动:实现对不同音频接口和音频硬件的支持,如 PCI 音频卡、USB 音频设备、AC97 芯片组等。ALSA 驱动为 ALSA 库提供底层访问硬件的接口。 3. ALSA 工具:提供配置工具、测试工具和示例应用等,用于帮助开发者配置和测试 ALSA 系统。 4. ALSA 插件:实现对不同音频编解码器和文件格式的支持,以扩展 ALSA 的功能。 5. ALSA 相关的守护进程和消息传递系统:用于进行系统设置和注册客户端等。 ALSA 的主要功能包括:: 1. 支持大多数 Linux 下的音频接口和音频设备。 2. 提供完整的 MIDI 支持。 3. 支持多路复用、同步和时间控制。 4. 提供跨平台的 API,保证在不同硬件和操作系统上的一致性。 5. 支持动态添加/移除设备,不需要重新启动系统。 6. 提供较低延迟和较高的 fidelity。 7. 支持不同的音频格式和效果的平台。 设备接口类型 - 包括:: Analog Digital Alt Analog HDMI USB 每个声卡的设备信息主要包含:: 1. 声卡名称:如 Generic, Intel, USB 等,表示声卡的厂商或类型 2. 声卡编号:如 card 0, card 1 等,表示该声卡在系统中的编号 3. 设备号及名称:如 device 0: ALC3232 Analog, 表示该声卡上的一个设备接口及其名称 4. 子设备信息:每个设备下可能包含多个子设备(subdevice),对应不同的功能或连线 5. 支持格式:如 S16_LE, S24_LE, FLOAT 等,表示该设备支持的样本格式 6. 支持的通道数:如 2、4、6、8 等,表示支持的声道配置 7. 最大/最小采样率:表示该设备所支持的采样率范围 8. 其他信息:如是内置设备还是外接设备,是输入还是输出设备等 常见的声卡名称:: 1. HDA Intel PCH 2. HD-Audio Generic alsa-utils =============== 安装命令:: apt install alsa-utils 安装以下工具:: 1. alsamixer - 一个文字模式的声卡控制面板,用于控制 ALSA 声卡驱动的音量等设置。 2. alsactl - 用于保存和恢复 ALSA 配置的工具。可以保存音量设置、静音设置以及其他控件的状态。 3. alsaloop - 一个 ALSA PCM 测试工具,可以生成和输出各种类型的信号到 ALSA PCM 设备,用于测试 ALSA 的 PCM 功能。 4. aplay - 一个命令行播放器,可以播放不同格式的音频文件,并通过 ALSA 声卡驱动输出声音。 5. arecord - 一个命令行录音工具,可以从 ALSA 声卡驱动的输入录制音频,并保存为各种格式的音频文件。 6. aconnect - 用于查看和管理 ALSA 连接的工具。可以显示 ALSA 库的当前连接状态,也可以手动建立和打断连接。 7. aseqnet - 一个 ALSA MIDI 网络客户端,可以将 MIDI 事件从 ALSA MIDI 输出端口转发到其他主机上的 ALSA MIDI 输入端口。 8. aseqdump - 显示或转换 ALSA 事件序列的工具。 9. aviaaconvert - 一个协助 ALSA 库和 OSS 库之间的应用程序与音频设备格式转换的工具。 10. alsa-info.sh - 一个用于收集 ALSA 相关状态信息的脚本,用于诊断 ALSA 相关问题。 目录/dev/snd/ ============= * ``/dev/snd/`` 目录下包含 Linux 系统的音频设备文件 常见的设备文件及其作用如下:: - controlC0, controlC1, controlC2: 声卡的控制设备文件,用于设置声卡参数 - pcmC0D0c, pcmC0D0p: PCM 音频接口的播放(p)和捕获(c)设备文件 - seq: MIDI 设备文件 - timer: 计时器设备文件,用于生成定时音频事件 - midiC0D0: MIDI 设备文件 - adsp: 用于专用数字信号处理器的设备文件 规范 ==== 命名规范 -------- 音频设备文件的标准命名规范:: - control: 声卡控制设备文件,用于设置声卡参数 命名方式:controlC0, controlC1, controlC2 ... - pcm: PCM音频接口的播放和捕获设备文件。 - 命名方式: - pcmC0D0p: 第一个声卡的第一个PCM设备的播放设备 - pcmC1D3c: 第二个声卡的第四个PCM设备的捕获设备 - pcmC0D0c 表示 card0 的第 0 个 PCM 设备的捕获设备 - pcmC1D3c 表示 card1 的第 3 个 PCM 设备的捕获设备 - timer: 定时器设备文件,用于生成定时音频事件。 - 命名方式:timer - midi: MIDI设备文件。 - 命名方式:midiC0D0, midiC1D1 ... - seq: MIDI设备文件。 - 命名方式:seq - hw: 硬件音频设备文件。 - 命名方式: - hw0, hw1, hw2 ...: 表示硬件音频设备 - hw:0, hw:1, hw:2 ...: 同上,另一种表示方式 - hw0,0, hw1,0 ...: 将hw0映射为第一个声卡,hw1映射为第二个声卡 ... - dsp, adsp, dmix: 旧式命名,新版本的ALSA不再推荐使用。 API 规范 -------- ALSA 定义了音频应用程序与 ALSA 库交互的 API。包括:: - alsa-lib API:用于常规 PCM 播放/捕获等操作 - alsa-mixer API:用于控制音量、选择输入/输出源等 - alsa-pcm API:低级接口,用于直接与 PCM 子系统交互 - alsa-seq API:用于 MIDI 序列器操作 架构规范 -------- * ALSA 定义了统一的音频架构,主要包括:: 卡(Cards) → PCM(Pulse Code Modulation,脉冲编码调制) → 控制(Controls)