2013-10-31 46 views
2

我正在編寫一個C程序,我想列舉系統中的所有捕獲設備(實際上,我知道我有三個網絡攝像頭和「集成」麥克風),識別它們並開始從他們所有的同時捕獲。枚舉捕獲ALSA設備並從中捕獲

我有一些成功使用snd_device_name_hint()來枚舉所有的PCM設備,然後snd_device_name_get_hint()來確定「IOID」,看他們是否支持捕獲。但是現在,我如何用snd_pcm_open()打開相關設備以便捕獲?我想使用「hw」接口,因爲我不想用很多轉換率超載系統,所以我也想看看是否有方法報告硬件支持的採樣頻率。

謝謝!

回答

3

snd_device_name_hint()可以返回同一硬件設備的多個設備名稱(例如,plughwhw)。 它還可以返回不對應於單個硬件設備的設備(如null或PulseAudio/Jack/Bluetooth設備)。

要枚舉硬件設備,請致電snd_card_next()snd_ctl_pcm_next_device()(有關示例,請參閱aplay源代碼)。

要檢查是否支持採樣率,請致電snd_pcm_hw_params_test_rate()

+0

是的,事實上我也發現這個網頁:http://home.roadrunner.com/~jgglatt/tech/aplay.htm作者詳細介紹瞭如何掃描所有卡片,設備和子設備,以及如何設置屬性。 –