我正在编写一个C程序,我想列举系统中的所有捕获设备(实际上,我知道我有三个networking摄像头和“集成”麦克风),识别它们并同时开始捕获它们。
我有一些成功使用snd_device_name_hint()枚举所有的PCM设备,然后snd_device_name_get_hint()来确定“IOID”,看看他们是否支持捕获。 但是现在,我如何用snd_pcm_open()打开相关设备,以便捕获? 我想使用“hw”接口,因为我不想用很多转换率使系统过载,所以我也想看看是否有方法报告硬件支持的采样频率。
谢谢!
snd_device_name_hint()
可以为同一个硬件设备返回多个设备名(例如, plughw
和hw
)。 它也可以返回不对应于单个硬件设备的设备(如null
,或PulseAudio / Jack / Bluetooth设备)。
要枚举硬件设备,请调用snd_card_next()
和snd_ctl_pcm_next_device()
(有关示例,请参阅aplay源代码)。
要检查是否支持采样率,请调用snd_pcm_hw_params_test_rate()
。