news 2026/8/2 2:17:33

ALSA插件实用知识

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ALSA插件实用知识

在 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}}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/1 12:51:31

C语言中union(共同体)的特电是什么?STM32中常用于处理什么数据?

C语言中union(共同体)的特点1. 内存共享特性union Data {int i;float f;char str[20]; }; // 所有成员共享同一块内存空间所有成员共享同一段内存大小为最大成员的大小同一时间只能存储一个成员的值2. 典型特点内存覆盖:修改一个成员会影响其…

作者头像 李华
网站建设 2026/8/1 3:25:43

计算机网络最易混淆的15个核心概念,一次全部讲清楚!

本文专为网络小白准备,用最通俗的比喻解释那些让你头疼的网络概念,看完不再迷茫! 1. 四次挥手:为什么分手要分四次? 错误理解:TCP断开连接像挂电话,说一声"拜拜"就挂。 正确理解&am…

作者头像 李华
网站建设 2026/8/1 0:47:19

智能标注工具X-AnyLabeling使用指南 01-软件安装

智能标注工具X-AnyLabeling使用指南 01-软件安装 最近需要使用到智能标注的工具,这个工具大概的构想是抛开底层的代码底层的逻辑,对于其他行业的人来说,我只需要知道我的需求,然后大概点点点就能完成一个AI模型的构建&#xff0c…

作者头像 李华
网站建设 2026/8/1 4:20:33

350M公安PDT集群信号覆盖

背景PDT集群通信系统是以话音为主的无线指挥通信系统,是目前指挥调度、救灾抢险、交通管理、社会治安、重大保卫活动以及日常警务必不可少的重要无线通信手段。国内PDT建设主要集中为基站进行大范围的覆盖以及公安消防等保卫单位内部保障信号覆盖,对与一…

作者头像 李华
网站建设 2026/7/31 5:55:43

构建本地知识库,用私有文件训练专属大模型的完整流程

本文详细介绍了构建本地知识库并利用私有文件训练大模型的完整流程,包括数据准备、文本切分、向量化索引构建、训练方案选择(微调/RAG/提示词工程)、隐私保护及部署监控。提供了多种技术方案选型与代码示例,特别强调本地化部署和数…

作者头像 李华
网站建设 2026/8/1 22:43:22

Kotaemon国产化适配进展:支持鲲鹏、昇腾等芯片

Kotaemon国产化适配进展:支持鲲鹏、昇腾等芯片 在AI系统逐步深入政务、金融、能源等关键行业的今天,一个现实问题日益凸显:我们依赖的大模型推理和智能体运行平台,是否真正掌握在自己手中?当外部供应链波动、技术出口限…

作者头像 李华