代码之家  ›  专栏  ›  技术社区  ›  Makis

如何在Linux中以编程方式查找ALSA音频设备功能,而无需打开设备

  •  5
  • Makis  · 技术社区  · 15 年前

    snd_pcm_open() 函数来使用测试函数,这对我来说是愚蠢的。如果我必须先告诉打开功能,为什么还要问这是播放还是录制设备?

    例如,我想列出所有播放设备,但我能想到的唯一方法是尝试打开我找到的每个设备(使用 snd_device_name_hint() )试着在播放模式下打开它们,如果我打开了,一切都很好。

    3 回复  |  直到 15 年前
        1
  •  7
  •   Étienne Hampden123    8 年前

    使用snd_ctl_next迭代所有设备,然后使用snd_ctl_open获取设备信息-这与snd_pcm_open不同,如果其他程序打开了设备或设置不正确,可能会失败。

    https://app.assembla.com/spaces/portaudio/git/source/master/src/hostapi/alsa/pa_linux_alsa.c -搜索BuildDeviceList以开始。

        2
  •  0
  •   umläute    11 年前

    这是我对linux/unix项目的第一个要求,我需要了解所有可用的音频设备功能。然后我需要使用这些设备来捕获和播放音频。我所做的很简单。有一个linux/unix命令,用于通过linux中的alsa实用程序查找设备。

    它是:

    aplay -l
    

    为了大家的帮助,我制作了一个(.so)库和一个示例应用程序,演示C++中这个库的使用。

    [root@~]# ./IdeaAudioEngineTest
    HDA Intel plughw:0,0
    HDA Intel plughw:0,2
    

    该库还可以捕获和回放实时音频数据。

    IdeaAudio library with Duplex Alsa Audio

        3
  •  -1
  •   Étienne Hampden123    8 年前

    如果您可以执行shell命令。那么阿普莱就是你的朋友了。

    http://alsa.opensrc.org/Aplay

    列出所有声卡和数字音频 装置