ALSA插件实用知识
2026/8/31 13:58:44 网站建设 项目流程

在 ALSA(Advanced Linux Sound Architecture)中,card 和 device 是音频硬件的两个核心概念,用于标识系统中的声卡及其内部的子设备。

  1. card(声卡)

card 表示一块声卡的逻辑实体,可以是物理声卡,也可以是虚拟声卡(如 Loopback)。
每块声卡都有一个 card number(卡号),通常从 0 开始。
一块 card 下面可以有多个独立的音频接口。
你可以通过命令查看系统中的 card:

cat/proc/asound/cards

示例输出可能是:

0[PCH]: HDA-Intel - HDA Intel PCH1[Loopback]: Loopback - Loopback

device(设备)

device 是 card 下的子设备,代表具体的音频通道或接口,例如播放设备(PCM playback)或录音设备(PCM capture)。
每个 device 也有自己的编号,从 0 开始。
一块声卡下可能存在多个设备,例如:
device 0:主 PCM 设备
device 1:次要 PCM 设备
device 2:MIDI 接口等
查看设备:

cat/proc/asound/devices

card 与 device 的组合使用
在 ALSA 的配置或程序(如 aplay, arecord)中,可以用 hw:card,device 指定音频接口。

示例:

使用 card0的 device0播放: aplay -D hw:0,0 test.wav 使用 card1的 device0录音: arecord -D hw:1,0 -fcdtest.wav

使用 aplay(查看播放设备列表)

运行:

aplay -l

你会看到类似:

card2: Device[USB Audio], device0: USB Audio[USB Audio]

这里的地址就是 hw:2,0。

. 使用 arecord(查看录音设备列表)

arecord -l

显示录音相关的设备,同样以 card X, device Y 的格式呈现。

使用 aplay -L 查看所有 ALSA 插件地址(包括 hw、plughw、dmix 等)

复制
aplay -L
会列出比如:

hw:C2D0 plughw:2,0 dmix:CARD=2,DEV=0

查看系统真实设备文件(底层信息)

cat/proc/asound/cardscat/proc/asound/devices

使用 amixer 查看设备的控制接口

amixer -c2

查询指定声卡(例如 card2)的信息。

一、 ALSA 插件

ALSA 插件就是 ALSA 的软件层接口,用于在设备与应用之间完成各种功能,我们可以把插件理解成滤波器(filter)。比如:

格式转换(采样率、位深、通道数)
重采样
将多个程序的声音混到一起
将音频路由到指定设备
抽象出虚拟声卡
节省应用程序的复杂度

插件是通过 .asoundrc 或 /etc/asound.conf 中的配置实现的。

二、常见 ALSA 插件介绍

hw 插件
直接访问硬件设备

例:hw:2,0

特点:

不做任何格式转换
要求应用完全满足硬件参数(音频参数)
最底层、最快
应用要符合声卡的格式,否则无法打开。

plughw 插件
包装 hw 的插件版,可自动转换格式

例:plughw:2,0

特点:

自动处理采样率、通道数、位深
更灵活,但性能稍低于 hw
应用不需要自己处理格式转换

dmix 插件
最常用:软件混音插件

例:dmix:CARD=2,DEV=0

特点:

多进程可以同时播放(混音)
不占用整个声卡
桌面系统常用,如果声卡不支持硬件混音,这是必须的

softvol 插件
软件音量控制,当声卡本身没有音量调节时使用。

例:加一个虚拟音量控制器。

route 插件
改变声道的映射。比如单声道复制成左右声道。

9plug 插件
自动选择格式转换插件的“万能包装器”。

例:

plug:hw:0,0
等同于 plug 转换 + hw 输出。

file 插件
把音频输出到文件,而不是声卡。

null 插件
丢弃所有音频数据,就像 /dev/null。

自定义 plug + dmix 使用 hw:2,0

pcm.mydevice{typeplug slave.pcm{typedmix ipc_key1024slave{pcm"hw:2,0"rate48000}}}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询