为什么此 ALSA 配置文件阻止 aplay 和 arecord 列出 PCM 设备?

为什么此 ALSA 配置文件阻止 aplay 和 arecord 列出 PCM 设备?

在我的嵌入式系统中,我有这个配置文件/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列出arecordPCM 设备?

答案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.showalldefaults.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

相关内容