2

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

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

谢谢!

4

1 回答 1

5

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

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

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

于 2013-10-31T09:08:41.057 回答