在我的嵌入式系统中,我有这个配置文件/etc/asound.conf
:
pcm_slave.sl2 {
pcm "hw:0,0"
rate 48000
channels 2
format S16_LE
}
pcm.rate_convert {
type plug
slave sl2
}
pcm.!default rate_convert
我注意到,由于该文件已放置在系统中,aplay -L
因此arecord -L
无法再列出 PCM 设备。aplay -l
而是arecord -l
按预期工作。
如果该文件未放在此处,则列表将正确返回。这到底是做什么的?为什么这会阻止aplay
列出arecord
PCM 设备?
答案1
扩展于弗拉基米尔的回答,我在我的/etc/asound.conf
文件中专门设置了这个:
defaults.namehint.showall on
defaults.namehint.extended on
或者,将 a 添加hint
到您的自定义 PCM 控制设备:
pcm.rate_convert {
# snip
hint.description "Describe your device here"
}
我还没有找到这方面的文档,但你可以找到一个例子
alsa.conf
在你的系统上(我有它/usr/share/alsa/alsa.conf
)alsa.conf
在里面alsa GitHub 存储库
答案2
确保文件中的defaults.namehint.showall
和defaults.namehint.extended
设置为打开/usr/share/alsa/alsa.conf
。
答案3
从man aplay
:
-l, --list-devices List all soundcards and digital audio devices -L, --list-pcms List all PCMs defined
来自 ALSA 维基:
PCM 设备类似于抽象的声卡。它可以是硬件设备,也可以是 PCM 插件层设备。有关更多信息,请参阅 alsa-lib 文档。有关此抽象层的使用,请参阅 .asoundrc 和 dmix 页面。
.asoundrc 是用户主文件夹中使用的 ALSA 配置文件,而不是系统文件夹 /etc/asound.conf。这些文件中的任何一个都可以重新配置 PCM
https://alsa.opensrc.org/Asoundrc