当前位置: 首页 > news >正文

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}}}
http://www.cnnetsun.cn/news/138003.html

相关文章:

  • 网约车服务端线上流量巡检与测试验收技术
  • 公考日记7
  • 火电一次调频、自抗扰调频及群智能算法智能调频在MATLAB/Simulink中的应用
  • 科研实验室温湿度监控新范式:以太网 POE 技术全场景解决方案
  • RV1126 NO.57:ROCKX+RV1126人脸识别推流项目之读取人脸图片并把特征值保存到sqlite3数据库
  • 探索SAR ADC:45nm工艺下的高速高精度设计
  • 【小增长技术团队东哥分享】Electron vs Electron-Vite vs Electron-Egg:桌面端开发到底该选谁?
  • 测试价值的量化评估:从成本中心到价值证明的路径探索
  • 测试领导力:在敏捷洪流中筑造质量堤坝
  • C++常用设计模式
  • Spring Boot 自动配置深度解析:原理、实战与源码追踪
  • 无代码解决方案:破解企业数字化转型效率困局
  • SAM (Segment Anything Model):万物皆可分割-k学长深度学习专栏
  • Mysql 报错 “Public Key Retrieval is not allowed”
  • 熊市中最适用的公式==底部建仓
  • 100G双光口网卡技术解析:Intel E810-CAM2方案的性能与应用突破
  • BioSIM抗人组蛋白H1抗体SIM0385:广泛应用于表观遗传学、染色质结构分析等领域
  • 智慧灯杆数字孪生系统:“多杆合一“技术实现
  • SCI一稿多投会不会被发现?
  • RUI Builder-图形化UI设计-工程范例
  • win10 - 删除非法命名的文件夹的方法
  • 必看!2025年单北斗GNSS形变监测高口碑产品排行榜
  • 【计网】网络分层模型和http协议
  • Kotaemon在华为云上的部署实践:全流程记录
  • 校园便利平台|基于springboot + vue校园便利平台系统(源码+数据库+文档)
  • 38、Linux 脚本编程:bc 计算器、数组与特殊技巧
  • 揭秘高亮车灯升级2025年值得推荐的TOP8车灯产品
  • WSL2 / Ubuntu 下用 SDKMAN 管理多版本 Java(项目级切换,真香)
  • 从“幻觉”到“诚实”:OpenAI 如何重新定义大模型的不靠谱问题
  • 高精度宽频段VG7050CDN压控晶体振荡器(VCXO),适用于通信与GPS设备等