簡體   English   中英

如何在不打開設備的情況下在 Linux 中以編程方式找出 ALSA 音頻設備功能

[英]How to find out ALSA audio device capabilities programmatically in Linux without opening the device

如何在不先打開設備的情況下了解 ALSA 設備的功能? 問題是,我需要向snd_pcm_open()函數提供參數才能使用對我來說很傻的測試函數。 如果我要先告訴它打開功能,為什么要問這是播放還是錄音設備?

例如,我想列出所有播放設備,但我能想到的唯一方法是嘗試打開我找到的每個設備(使用snd_device_name_hint() )並嘗試在播放模式下打開它們,如果我設法打開,一切很好。

問題是,對於所有可能的變化(采樣率、通道等),我需要執行大量的 open() 來找出參數。

使用snd_ctl_next遍歷所有設備,然后使用snd_ctl_open獲取有關該設備的信息-這與snd_pcm_open不同,如果另一個程序打開了該設備或設置錯誤,則該操作可能會失敗。

它非常密集,但是這里有一些開源代碼可以遍歷您可以查看的所有ALSA設備: https : //app.assembla.com/spaces/portaudio/git/source/master/src/hostapi/alsa/pa_linux_alsa。 c-搜索BuildDeviceList以開始使用。

這是我對linux / unix項目的第一個要求,在這里我需要了解所有可用的音頻設備功能。 然后,我需要使用這些設備來捕獲和播放音頻。 我所做的非常簡單。 有一個linux / unix命令,用於通過linux中的alsa實用程序查找設備。

它是:

aplay -l

現在我所做的就是制作一個程序,像alsa這樣分發。

在大家的幫助下,我制作了一個(.so)庫和一個示例應用程序,演示了該庫在c ++中的使用。

我的圖書館的輸出就像-

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

該庫還可以捕獲和回放實時音頻數據。

與Duplex Alsa Audio一起在IdeaAudio庫中的文檔中提供

不,除了用snd_pcm_open打開卡外,沒有其他方法可以查詢通道數,采樣率等。

提供您可以執行的shell命令。 那么玩是你的朋友。

http://alsa.opensrc.org/Aplay

播放-l

列出所有聲卡和數字音頻設備

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM