枚举捕获ALSA设备并从中捕获

我正在编写一个C程序,我想列举系统中的所有捕获设备(实际上,我知道我有三个networking摄像头和“集成”麦克风),识别它们并同时开始捕获它们。

我有一些成功使用snd_device_name_hint()枚举所有的PCM设备,然后snd_device_name_get_hint()来确定“IOID”,看看他们是否支持捕获。 但是现在,我如何用snd_pcm_open()打开相关设备,以便捕获? 我想使用“hw”接口,因为我不想用很多转换率使系统过载,所以我也想看看是否有方法报告硬件支持的采样频率。

谢谢!

snd_device_name_hint()可以为同一个硬件设备返回多个设备名(例如, plughwhw )。 它也可以返回不对应于单个硬件设备的设备(如null ,或PulseAudio / Jack / Bluetooth设备)。

要枚举硬件设备,请调用snd_card_next()snd_ctl_pcm_next_device() (有关示例,请参阅aplay源代码)。

要检查是否支持采样率,请调用snd_pcm_hw_params_test_rate()